第四章 文件管理
4.1 文件管理
文件之间应该如何被组织起来(目录结构)
如何将文件存储在外存中(文件的物理结构)
如何管理外存中的空闲块(存储空间管理)
操作系统需要提供的其他文件管理功能
文件共享:使多个用户共享和使用文件
文件保护:如何确保不同的用户对文件有不同的操作权限
4.1.1 管理初识文件
文件的定义
文件:以计算机硬盘为载体存储在计算机上的信息集,由创建者定义一组相关信息集合(记录文件、流式文件)
在系统运行过程中,计算机以进程为基本单位调度和分配资源。
文件是用户输入输出的基本单位。
当用户将文件用于应用程序的输入和输出时,他们还希望访问文件、修改文件和保存文件,以实现文件的维护和管理。此时,系统需要提供的文件管理系统称为文件系统
记录:一组数据项的集合用于描述对象的某些方面属性
数据项:数据项是文件系统最低级数据组织形式
基本数据项:用于描述对象一个属性值,如姓名、日期、身份证号码
组合数据项:由多个基本数据项组成
文件是存储在计算机上的信息集,以计算机硬盘为载体。文件可以是文本文档、图片、程序等
系统运行时,计算机以资源的调度和分配是基调度和分配
在用户输入输出时,以文件为基本单位
操作系统的文件系统:用于实现文件的权限访问,修改,查询和保存等功能
文件的属性
文件名称、标识符、类型、位置、大小…如何组织文件内部(文件的逻辑结构)
名称:文件名称唯一,以易读的形式保存
标识符:文件唯一标签,通常是数字,对人来说是不可读的内部名称
类型:使用不同类型的支持文件系统
位置:指向设备和设备上的文件指针
大小:当前文件的大小包括文件允许的最大值
保护:保护文件的访问控制信息
时间、日期和用户标识:上次访问的文件创建、修改和相关信息,用于保护和跟踪文件的使用
4.1.2 基本操作文件
(create、delete、open、close、read、write系统调用)
创建文件
文件系统为文件找到空间
文件名称、在文件系统中的位置和其他可能的信息被记录在目录中
写文件
执行系统调用,指明文件名称和内容,查找文件位置,维护文件写作位置的指针,更新写作操作时的指针
读文件
执行系统调用,指出文件名称和位置,搜索目录项,系统维护读取指针,更新读取操作
文件重定位(文件寻址)
根据某些条件搜索目录,将当前文件的位置设置为固定值。而且不能读写文件
删除文件
搜索目录,找到文件的目录项,将其变成空项,然后回收目标文件占用的存储空间
截断文件
允许文件的所有属性保持不变,删除文件内容,将其长度设置为0并释放其空间
关闭文件
删除文件表中的相应表项
系统打开文件表的打开计数器减1。如果打开计数器为0,则删除系统表的表项
打开文件
将目录项中的信息复制到内存中的打开文件表中打开文件表的索引号返回给用户
打开文件后,文件的操作不再需要每次查询目录。您可以根据内存中的打开文件表进行操作
每个过程都有自己的打开文件表,系统中也有一个总的打开文件表
打开文件表中的独特属性:读写指针、访问权限(只读读写)
系统打开文件表中的独特属性:打开计数器(打开文件有多少个过程)
open请求
-
文件的第一次使用将被调用open请求从外存复制到内存打开文件表位置)从外存复制到内存打开文件表,并将表号(索引)返回给用户;
-
操作open根据文件名搜索目录,将目录条目复制到打开文件表
调用open允许请求(创建、只读、读写、添加等。),过程可以打开文件,open将返回指向打开文件表中的一个条目的指针
使用此指针I/O操作简化步骤,节约资源
文件相关信息
文件指针:系统跟踪最后一个读写位置作为当前文件位置的指针,这是打开文件的唯一过程,因此必须与磁盘文件属性单独保存
文件打开计数:文件关闭时,必须重用其打开文件表条目,否则表内空间不足,计数器为0关闭文件,删除该条目
文件磁盘位置:存储信息,以避免从磁盘中读取每个操作
访问权限:每个过程打开文件需要一个访问模式(创建、只读、读写、添加等)。信息保存在过程打开的文件表中,以便操作系统允许或拒绝I/O请求
4.1.3 文件的逻辑结构
结构文件:类似的记录组成(记录文件), 无结构文件:字符流组成(流式文件)
无结构文件
以最简单的文件组织形式,字节为单位
将数据按照顺序组织记录、积累、保存、收集有序相关信息
因为没有结构,只能用穷举搜索
管理简单,用户操作方便
基本信息单位操作较少的文件适用于无结构的字符流
有结构文件
顺序文件
文件的记录一个接一个地排列,记录通常是定长顺序存储或链表存储
① 串结构 按存储时间排列
② 顺序结构 文件中的所有记录按关键字顺序排列
在批量处理过程中,顺序文件的效率是所有逻辑文件中最高的,但很难添加、删除和检查
索引文件
长度记录文件 按照公式 A = i × L A= i\times L A=i×L文件地址(I条记录,L是文件长度)
长期记录文件
查找前i-1条记录后,可以找到第一条记录 Ai = ∑ i = 0 i − 1 L i + 1 A_i=\sum \limits_{i=0}^{i-1}L_i+1 Ai=i=0∑i−1Li+1(假定每条记录前用一个字节指明该记录的长度)
通过建立索引表后可以有效提高查找速度
索引顺序文件
顺序和索引两种组织形式的结合。
索引文件将顺序文件中的所有记录分成若干组,为顺序文件建立起一张索引表,在索引表中为每组中的第一条记录建立一个索引项,其中含有该记录得关键字值和指向该记录的指针
索引顺序文件提高了查找效率,但是索引表也占用了存储空间
直接文件或散列文件
给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址
这种映射结构不同于顺序文件或者索引文件,没有顺序的特性
4.1.4 文件目录
包含有关文件的信息,比如属性、位置和所有权等,用树形结构来实现。
文件控制块(FCB)
用来存放控制文件需要的各种信息的数据结构,实现“按名存取”。
FCB的有序集合称为文件目录。
包含信息
基本信息:文件名,文件的物理位置,逻辑结构、物理结构等
存取控制信息:文件存取权限
使用信息:文件建立时间修改时间
索引节点
检索目录文件时,不需要将文件调入内存,只是查找其目录项,文件的描述信息单独形成为索引节点的数据结构
UNIX中采用了文件名和文件描述信息分开的方法,文件描述信息单独形成一个称为索引节点的数据结构。
磁盘索引节点
文件主标识符:拥有该文件的个人或小组的标识符
文件类型:普通文件、目录文件、特别文件
文件存取权限:各类用户对该文件的存取权限
文件物理地址:每个索引节点中含有13个地址项,直接或者间接的方式给出数据文件所在盘块的编号文件长度:字节为单位
文件链接计数:本文件系统中所有指向该文件的文件名的指针计数
文件存取时间:文件最近被进程存取,修改以及索引节点最近被修改的时间
文件打开后内存索引节点增加的内容
索引结点编号:用于标识内存索引节点
状态:指示i节点是否被上锁或者被修改
访问计数:每当有一个进程要访问此i结点时,计数加1,访问结束减1
逻辑设备号:文件所属文件系统的逻辑设备号
链接指针:设置分别指向空闲雠表和散列队列的指针
目录结构分类
在目录中的操作
搜索、创建文件、删除文件、显示目录、修改目录。
单机目录结构
整个文件系统只建立一张目录表,每个文件占一个目录项
优点:实现了按名存取
缺点∶查找速度慢,文件不允许重名,不便于文件共享,不适用于多用户的操作系统
两级目录结构
将文件分为主目录和用户目录,主目录记录用户名及相应用户文件目录所在的存储位置,用户目录项记录该用户文件的FCB信息。
优点:解决了不同用户文件重名问题,在一定程度上保证了文件的安全
缺点:缺乏灵活性,不能对文件分类
多级目录结构
将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构进程对各文件的访问都是相对于当前目录进行的
(绝对路径、当前目录)
优点:有效的对文件进行分类,文件结构层次清晰,能够有效的进行文件管理和保护
缺点∶按照路径名访问中间结点,增加了磁盘访问次数,降低了查询速度,不便于实现文件共享。
无环图目录结构
在树形目录结构基础上增加了一些指向同一结点的有向边,使整个目录称为一个有向无环图。
为每一个共享节点增加一个计数器,每当图中增加对该节点的共享链时,计数器加1;删除该节点的时候,计数器减1;直到共享计数器为0的时候,才真正删除该节点,否则仅删除共享链。
若有两个文件拷贝,则每个程序员看到的是拷贝而不是原件;一个文件被修改,则另一个程序员拷贝的不会改变。
可以用不同的文件名指向同一个文件
优点:有利于实现文件共享
4.1.5+4.1.6 文件的物理结构
目录实现
- 线性列表(存储文件名和数据块指针的线性表)(实现简单、费时)
- 哈希表 (根据文件名得到一个值、并返回一个指向线性列表中元素的指针)(查找迅速)
为了减少I/O操作,把当前使用的文件目录复制到内存,要使用该文件时只需在内存中操作,降低了磁盘操作次数,提高了系统速度。
- 文件的分配方式,对磁盘非空闲块的管理。
- 对存储空间的管理,是对磁盘空闲块的管理。
文件分配方式
文件的物理结构,指如何为文件分配磁盘块。
连续分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mi1FZOg5-1641264681717)(E:\txy\大三上\操作系统\img\image-20210818093128319.png)]
每个文件在磁盘上占有一组连续的块,磁盘地址定义了磁盘上的一个线性排序。访存1次。
一个文件的目录条目包括开始块的地址和该文件所分配区域的长度。
优点:实现简单,存取速度快,使得访问磁盘需要的寻道数和寻道时间最小
缺点:文件长度不宜动态的增加,会产生外部碎片,只适用于长度固定的文件。
链接分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LDPSC1sJ-1641264681719)(E:\txy\大三上\操作系统\img\image-20210818093121658.png)]
采用离散分配方式,提高了磁盘空间利用率,消除了外部碎片,访存n次 磁盘块分布在磁盘的任何地方,除最后一个盘块,其他盘块都有指向下一个盘块的指针
-
隐式链接
优点∶不会有碎片问题,外存利用率高
缺点:不能直接访问,稳定性存在问题
把用于链接文件各物理块的指针,从每个物理块的末尾提取出来,显示的存放在内存的一张连接表中(FAT)。整个磁盘设置一张
-
显示链接
优点:显著的提高检索速度,减少了访问磁盘次数
缺点:文件分配表的需要占用一定的存储空间
索引分配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5Aaz2oG-1641264681719)(E:\txy\大三上\操作系统\img\image-20210818093113140.png)]
索引分配解决了链接分配不能直接访问的问题,支持随机访问,且没有外部碎片。
索引块的第 i i i个条目指向文件的第 i i i个块。
缺点:由于索引块需要占据空间,所以索引块需要尽可能的小,但索引块太小就无法支持大文件。
m级要访存m+1次
-
优化机制
链接方案:一个索引块通常为一个磁盘块,为了处理大文件,可以将多个索引块链接起来
多层索引:第一层索引块指向第二层索引块,第二层索引块,指向文件块
混合索引:系统既采用直接地址有采用单级索引分配方式或者两级索引分配方式
访问文件需要两次访问外存——首先读取索引块的内容,然后访问具体的磁盘块,因而降低了文件的存取速度。
通常将文件的索引块读入内存的缓冲区,加快文件的访问速度。
4.1.7 逻辑结构VS物理结构
逻辑结构
用户(文件创建者)的视角看到的亚子
在用户看来,整个文件占用连续的逻辑地址空间
文件内部的信息组织完全由用户自己决定,操作系统并不关心
物理结构
由操作系统决定文件采用什么物理结构存储
操作系统负责将逻辑地址转变为(逻辑块号,块内偏移量)的形式,并负责实现逻辑块号到物理块号的映射
4.1.8 文件存储空间管理
文件存储在一个文件卷中,文件卷可以是物理盘的一部分,也可以是整个物理盘
在一个文件卷中,文件数据信息的(文件区)和存放文件控制信息FCB的(目录区)空间是分离的
文件存储设备分成许多大小相同的物理块,以块为单位交换信息
文件存储设备管理的实质是对空闲块的组织和管理,包括空闲块的组织、分配与回收等问题
空闲表法
属于连续分配方式,系统为空闲区建立一张空闲盘块表,每个空闲区第一个盘块号,该区的空闲盘块数等信息。
与内存动态分配,内存回收类似。
空闲链表法
将所有的空闲盘区拉成一条空闲链,根据构成链所有的基本元素不同,可以把链表分成两种形式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ODAZhS8R-1641264681719)(E:\txy\大三上\操作系统\img\image-20210818095638474.png)]
空闲盘块链:将磁盘上所有空闲空间以盘块为单位拉成一条链。分配从链首开始摘,删除后加到链尾。
空闲盘区链:将磁盘上所有空闲盘区拉成一条链,每个盘区除了指向下一个盘区的指针以外还有指明本盘区大小的信息。
位示图法
采用二进制的一位来表示一个盘块的使用情况,磁盘上所有的盘块都有一个二进制位与之对应
0表示对应的盘块空闲,1表示对应的盘块已分配。
i行j列
盘块的分配:顺序扫描位示图,找到第一个0位。 计算公式: b = n ( i − 1 ) + j b = n(i-1)+j b=n(i−1)+j,然后修改其为1。
盘块的回收
i = ( b − 1 ) / n + 1 i = (b-1) / n + 1 i=(b−1)/n+1
j = ( b − 1 ) m o d n + 1 j = (b-1) \mod n+ 1 j=(b−1)modn+1
成组链接法
UNIX使用,结合了空闲表和空闲链表法克服了表太大的缺点
把顺序的n个空闲扇区地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址。
系统只需保存一个指向第一个空闲扇区的指针。
4.1.9 文件共享
文件共享使多个用户共享同一个文件,系统中只需保留该文件的一个副本。
基于索引节点的共享方式(硬链接)
诸如文件的物理地址及其他的文件属性等信息,不再放在目录项中,而放在索引节点中。
文件目录中只没置文件名及指向相应索引节点的指针,在索引节点中还有一个链接计数conut,用于表示链接到本索引节点(即文件)上的用户目录项的数目。
硬链接是多个指针指向一个索引结点,保证只要还有一个指针指向索引节点,索引节点就不能制除
优点:硬链接的查找速度要比软链接快
利用符号链实现共享方式(软链接)
快捷方式
B用户共享A用户的文件F时候,系统创建一个LINK类型的新文件,也取名F,然后将文件F写入用户B的目录中,但是新文件中只包含有被链接文件F的路径名
软链接就是把到达共享文件的路径记录下来,当要访问文件时,根据路径寻找文件
在利用符号链方式实现文件共享时,只有文件的拥有者才拥有指向其索引节点的指针。
而共享该文件的其他用户只有该文件的路径名,并不拥有指向其索引节点的指针。
优点∶网络共享只需要提供该文件所在机器的网络地址及该机器中的文件路径
缺点∶由于是根据文件路径名查找文件,因此会增加时间开销并且增加了启动磁盘的频率,同时符号储的索引节点也会耗费一定的硬盘空间
4.1.10 文件保护
为了防止文件共享导致文件被破坏或者未经允许修改、窃取或者存取文件,文件系统必须控制用户对文件的存取,解决对文件的读、写、执行的许可问题
口令保护
口令:用户请求访问时需要提供相应的口令
优点:时间和空间开销不多
缺点:口令直接存储在系统内部不安全
加密保护
密码:用户对文件进行加密,用户访问需要密钥解密
优点:保密性强。节省了存储空间
缺点:加密和解密需要花费一定时间
访问控制
根据用户身份进行控制,为每个文件和目录增加一个访问控制列表,规定每个用户名及其所允许的访问类型
优点:可以使用复杂的访问方法
缺点:长度无法预计且可能导致复杂空间管理
访问类型
读、写、执行、添加、删除、列表清单(列出文件名和属性名)
还可以对文件重命名、复制、编辑等加以控制
精简访问列表
拥有者:创建文件的用户
组:一组需要共享文件且具有类似访问的用户
其他:系统内的所有其他用户
用户访问该文件时,按照拥有着所拥有的权限访问文件,若用户和拥有者在同一个用户组,则按照同组权限访问,否则只能按其他用户权限访问。
口令和密码都是防止文件被他人存取或者窃取,没有控制用户对文件的访问类型
4.1.11 文件系统的层次结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rw7zplOC-1641264681720)(E:\txy\大三上\操作系统\img\image-20210818100928063.png)]
4.1.12 文件系统实例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8OZjf8y-1641264681720)(E:\txy\大三上\操作系统\img\4.1_12_文件系统实例(补充)【公众号◆资料魔法屋】【QQ群:1092120366】.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OODN4RtS-1641264681721)(E:\txy\大三上\操作系统\img\4.1_12_文件系统实例【公众号◆资料魔法屋】【QQ群:1092120366】.png)]
4.2 磁盘管理
4.2.1 磁盘的结构
磁盘、磁道、扇区的概念
磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据
磁盘表面上的数据存储在一组同心圆中,称为磁道
一个磁道又被划分成一个个扇区,每个扇区就是一个“磁盘块”。各个扇区存放的数据量相同(如1KB)
最内侧磁道上的扇区面积最小,因此数据密度最大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kosi1ZST-1641264681721)(E:\txy\大三上\操作系统\img\image-20210819085213488.png)]
如何在磁盘中读/写数据
需要把“磁头”移动到想要读/写的扇区所在的磁道。磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作
盘面、柱面的概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnQAk9wl-1641264681722)(E:\txy\大三上\操作系统\img\image-20210819085404015.png)]
磁盘的物理地址
可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kVpno02n-1641264681722)(E:\txy\大三上\操作系统\img\image-20210819085416806.png)]
磁盘的分类
磁头是否可移动
固定头磁盘∶磁头相对于盘片的径向方向固定
活动头磁盘:每个磁道一个磁头,磁头可以移动
盘片是否可更换
固定盘磁盘∶磁头臂可以来回伸缩定位磁道,磁盘永久固定在磁盘驱动器内
可换盘磁盘∶可以移动和替换
4.2.2 磁盘调度算法
读写时间组成
寻找时间(寻道时间)TS:在读/写数据前,将磁头移动到指定磁道所花的时间。
①启动磁头臂是需要时间的。假设耗时为s;
②移动磁头也是需要时间的。假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道。则:寻道时间TS = s + m*n
延迟时间TR:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。
设磁盘转速为r(单位:转/秒,或转/分),则平均所需的延迟时间TR = (1/2)*(1/r) = 1/2r
传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N。则:传输时间Tt = (1/r) * (b/N) = b/(rN)
先来先服务(FCFS)
按照进程请求访问磁盘的先后顺序进行调度
优点:公平实现简单
缺点:适用于少量进程访问,如果进程过多算法更倾向于随机调度
最短寻找时间优先(SSTF)
选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道
优点:性能强于先来先服务算法
缺点:容易产生饥饿现象
扫描算法(SCAN)
在磁头当前移动方向上选择与当前磁头所在的磁道距离最近的请求作为下一次服务对象,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动,因此也叫电梯算法。
优点:寻道性能好,可以避免饥饿现象
缺点:对最近扫描过的区域不公平,访问局部性方面不如FCFS和SSTF好
循环扫描算法(c-SCAN)
磁头单向移动,回返时直接回到起始端,而不服务任何请求
LOOK与C-LOOK
在SCAN与C-SCAN算法的基础上规定了查看移动方向上是否有请求,如果没有就不会继续向前移动,而是直接改变方向(LOOK)或者直接回到第一个请求处( C-LOOK)
4.2.3 减少磁盘延迟时间的方法
交替编号
具体做法:让编号相邻的扇区在物理上不相邻
原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区
错位命名
具体做法:让相邻盘面的扇区编号“错位”
原理:与“交替编号“的原理相同。“错位命名法“可降低延迟时间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCXWhltE-1641264681723)(E:\txy\大三上\操作系统\img\image-20210819091537932.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GnNS8UHh-1641264681723)(E:\txy\大三上\操作系统\img\image-20210819091602392.png)]
磁盘地址结构的设计
理解为什么要用(柱面号,盘面号,扇区号)的结构
理解为什么不用(盘面号,柱面号,扇区号)的结构
原因:在读取地址连续的磁盘块时,前者更不需要移动磁头,由于柱面号/磁道号相同,只是盘面号不同,因此不需要移动磁头臂。只需要激活相邻盘面的磁头即可
4.2.4 磁盘的管理
磁盘初始化
低级格式化:磁盘分扇区,为每个扇区采用特别的数据结构(头、数据区域、尾部组成),头部含有一些磁盘控制器所使用的信息
进一步格式化处理∶磁盘分区,对物理分区进行逻辑格式化(创建文件管理系统),包括空闲和已分配的空间及一个初始为空的目录
引导块
计算机启动时运行自举程序,初始化CPU寄存器、设备控制器和内存等,然后启动操作系统
自举程序通常保存在ROM中,在ROM中保留很小的自举块,完整的自举程序保存在启动块上拥有启动分区的磁盘称为启动磁盘或系统磁盘
坏块
无法使用的扇区
对于简单的磁盘,可以在逻辑格式化时(建立文件系统时)对整个磁盘进行坏块检查,标明哪些扇区是坏扇区,比如:在FAT表上标明
处理方式
简单磁盘:手动处理,对坏块进行标记,程序不会使用
复杂磁盘:控制器维护一个磁盘坏块链表,同时将一些块作为备用,用于替代坏块(扇区备用)
PPT整理
一、文件和文件系统
文件是指由创建者所定义的、具有文件名的一组相关数据元素的集合。
可分为:有结构(记录式)文件和无结构(流式)文件
文件的属性:文件类型、文件长度、文件的物理位置、文件的建立时间等
数据项:基本数据项、组合数据项
记录:一组相关数据项的集合,用于描述一个对象的某些属性
文件 -》 记录 -》 数据项 (层次结构)
最基本的文件操作 创建、删除、读、写、截断、读写指针定位
文件的打开与关闭 打开:系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户 关闭:从打开文件表中的表目上删除掉
二、文件的逻辑结构
- 有无结构
- 有结构文件(定长记录,变长记录)
- 无结构文件(大量的源程序,可执行文件,库函数;字节为基本访问单位,UNIX系统中所有文件都是流式文件)
- 组织方式
- 顺序文件
适于批量存取、能适用于磁带存储
单个或少量数据查找、存取效率低,系统开销大
增/删记录比较困难
- 索引文件
利用定长记录的顺序文件访问变长记录的文件
索引表本身是一个定长记录的顺序文件
索引号(记录键或关键字)、记录长度、纸向该记录指针
以空间换时间
- 索引顺序文件
顺序文件和索引文件的结合,是最常见的一种逻辑文件形式
主顺序文件的所有记录分组
索引文件中的记录键指向每个分组的第一条记录
当记录数较多时,可以通过多级索引提高性能
- 直接文件
键值转换:由记录键值到记录物理地址的转换
- 哈希文件
A=H(k)
是一种索引链接文件
三、目录管理
用于标识系统中文件及其物理地址的一种数据结构,供检索使用
目录管理的要求:
- 实现“按名存取”
- 提高对目录的检索速度
- 文件共享
- 允许文件重名
文件控制块(FCB)
描述和控制文件的数据结构,包含的信息项
索引节点
索引结点的引入:文件访问的查找过程,FCB
- 单级目录结构
在整个文件系统中建立一张目录表,每个文件占一个目录项
目录项:文件名、扩展名、长度、类型、物理地址及其它文件属性
缺点:查找速度慢;不允许重名
- 两级目录结构
为每个用户建立一个单独的用户文件目录(UFD),系统中再建立一个主文件目录MFD。基本克服了单级目录的缺点
优点:检索较快;不同的用户目录中文件可以同名;不同用户可以用不同的文件名访问同一个文件
- 多级目录结构
三级或三级以上的目录结构——树型目录结构
目录的组成:根目录、树的结点(目录)、树叶
路径名:从根目录到数据文件的唯一通路
当前目录(工作目录):消除使用全文件名访问文件的麻烦。相对路径名、绝对路径名
文件访问过程
查询目录,找到FCB或索引结点,根据物理地址(盘块号)换算出文件在磁盘上的物理位置,启动磁盘把数据读入内存
- 线性检索法:多级索引,逐层检索
- Hash方法:建立Hash索引文件目录
四、文件共享
- 基于索引结点的共享方式(硬链接)
文件目录中只设置文件名及指向相应索引结点的指针
文件的物理地址、文件长度、链接计数及其它的文件属性等信息只存放在索引结点中
- 利用符号链实现文件共享(软链接)
Link 类型的文件
由系统创建一个同名的Link类型新文件,新文件中包含被链接(共享)文件的路径名
OS对Link类型文件的操作进行截获,并解释执行
只有文件主才拥有指向文件索引结点的指针
能够链接任何地方的文件
按路径查找的访问开销大,需要冗余的索引结点
允许多个名字的不同,遍历文件系统时会重复访问此共享文件(两种共享方式都存在这个问题)
五、外存的组织方式
- 连续分配
为每一个文件分配一组相邻接的盘块
物理上形成了顺序文件结构
外存上会出现“碎片”,用“紧凑”的方法解决
始址、总块数、最后一块、字节数
顺序(批量)访问容易、速度快
不能灵活地删除和插入记录
要求有连续的存储空间(有时需要作紧凑处理),必须事先知道文件的长度,很难实现文件的动态增长
- 链接分配
离散分配方式,消除了“碎片”,有利于文件的增/删,能适应文件的动态增长
在文件的每个目录项中,都含有指向链接文件第一盘块和最后一个盘块的指针
只适合于顺序访问
把用于链接文件各物理块的指针,显式地存放在内存的一张“链接表”中,查找在内存中进行
FCB —》 FAT(文件位置分配表)
文件管理 P46!!
-
索引分配
-
- 单级索引分配
每个文件一个索引块(表)
-
- 多级索引分配
当文件较大,需要很多个索引块时,可以为各索引块建立一个索引表(块)
-
- 混合索引分配方式
直接地址:iaddr(0)~iaddr(9) 间接地址: iaddr(10) 一次间接地址 iaddr(11) 二次间接地址 iaddr(12) 三次间接地址
!!文件管理 P52,53
六、文件存储空间的管理
- 空闲表法——连续分配方式
空闲表:表项序号、空闲区起始盘块号、盘块数等。按地址排序
分配:首次适应算法、循环首次适应算法
回收:考虑邻接的前后空闲区拼接合并
- 空闲链表法——离散分配方式
空闲盘块链:分配/回收一个盘块,简单
空闲盘区链:与内存的动态分区管理类似
- 位示图
用二进制一位来表示磁盘中一个盘块的使用情况。M*N数组
盘块的分配(分三步进行)
顺序扫描位示图,找到一个或一组值为“0”的位将找到的位转换成与之相对应的盘块号:b=n(i-1)+j 修改位示图
盘块的回收(分两步进行) 将回收的盘块号转换成位示图中的行号和列号:i=(b-1) DIV n +1 j=(b-1) MOD n +1
修改位示图
优点
从位示图中很容易找到一个或一组相邻接的空闲盘块
位示图占用空间小,可常驻内存
- 成组链接法
UNIX系统
树形
普通文件\目录文件\设备文件
引导块\超级块\数据块
空闲磁盘的分配与回收(成组链接法)
WINDOW系统
FAT,NTFS
七、文件保护
八、数据一致性控制
磁盘:
盘片和盘面(Surface),磁道(Track) (500-2000),扇区
( section)(10-100)
格式化
每个扇区包括两个字段:标识符字段、数据字段
固定头磁盘
移动头磁盘
寻道时间 T s T_s Ts
把磁臂(磁头)移动到指定磁道上所经历的时间,包含启动磁臂
和磁头移动n条磁道所花费的时间。
寻道时间$T_s :T_s=m×n+s $
旋转延迟时间 T r T_r Tr
– 指定扇区移动到磁头下面所经历的时间。与盘面的旋转速度有
关。 平均旋转延迟时间: T r = 1 2 r T_r=\frac{1}{2r} Tr=2r1
传输时间 T t T_t Tt
– 把数据从磁盘读出或向磁盘写入数据所经历的时间。与旋转速
度和一次读写的数据量有关。传输时间:
磁盘访问时间 T t = b r N T_t=\frac{b}{rN} Tt=rNb
T a = T s + 1 2 r + b r N T_a=T_s+\frac{1}{2r}+\frac{b}{rN} Ta=Ts+2r1+rN 标签: 插接式连接器mfd001插接式连接器mfd014