操作系统 第四章:文件管理

目录

一:文件

初识文件管理

文件的逻辑结构

文件目录

文件的物理结构(文件分配方式)

文件存储空间管理

文件共享

文件保护

文件系统的层次结构

二:磁盘

磁盘的结构

磁盘调度

减少磁盘延迟时间的方法

磁盘的管理


一:文件

  • 初识文件管理

文件:一组有意义的信息、数据集合。

文件的属性:文件名、标识符、类型、位置、大小、创建时间、修改时间、保护信息、文件持有者信息。

文件内部的数据应该怎样组织起来?

无结构文件:由一些二进制或字符流组成,又称“流式文件”。

有结构文件:由一组相似的记录组成,又称“记录式文件”。

记录是一组相关数据项的集合;

操作系统向上提供的功能

创建文件create、删除文件delete、读文件read、写文件write、打开文件open、关闭文件close。

操作系统以“”为单位为文件分配存储空间。

  • 文件的逻辑结构

有结构文件一般可以选择一个数据项作为关键字。根据各条记录的长度又可分为定长记录和可变长记录。

顺序文件:记录顺序排列,记录可以是定长或可变长的。各个记录在物理上可以顺序和链式存储。按是否与关键字有关分为:串结构(记录之间顺序与关键字无关)、顺序结构(按关键字顺序排列)。链式存储:无论是定长/可变长记录,都无法实现随机存取,每次只能从第一个记录开始依次往后查找。顺序存储:可变长记录:无法实现随机存取,每次只能从第一个记录开始依次往后寻找。定长记录:可实现随机存取,记录长度为L,则第i个记录存放的相对位置是i*L;若采用串结构,无法快速找到关键字对应的记录;若采用顺序结构,可以快速找到某关键字对应的记录。

考试题目中所说的“顺序文件”指的是物理上顺序存储的顺序文件。

索引文件:建立一张索引表以加快文件检索速度。每条记录对应一个索引项。这些顺序项要连续存储。文件中的这些记录在物理上可以离散地存放。

索引表本身是定长记录的顺序文件。

索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表。并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。

例子:文件有10000个记录。顺序文件:从头开始查找:平均5000次。

若采用索引顺序文件:分为100组,找到分组平均需要50次,在分组中找到该记录平均需要50次。平均查找次数减少为50+50=100次。

为了进一步提高搜索效率,为顺序文件建立多级索引表。为多级索引顺序文件。

  • 文件目录

文件控制块:目录本身就是一种有结构文件,由一条记录组成。每条记录对应一个在该目录下的文件。目录文件中的一条记录就是一个“文件控制块(FCB)”。FCB实现了文件名和文件之间的映射。

需要对目录进行那些操作?

搜索:用户要使用一个文件时,要根据文件名搜索目录,找到该文件对应的目录项。

创建文件:创建一个新文件,需要在其所属的目录中增加一个目录项。

删除文件:删除一个文件时,还要删除文件对应的目录项。

显示目录:用户可以请求显示目录的内容,如显示该目录中的所有文件及相应属性。

修改目录:文件的某些属性是保存在目录中的,这些属性变化时需要修改相应的目录项。

目录结构

单级目录结构:整个系统建立一张目录表,每个文件占一个目录项。不适用于多用户操作系统。

两级目录结构:分为主文件目录(记录文件名及相应用户文件目录的存放位置)和用户文件目录(由该用户的文件FCB组成)。用户无法对自己的文件进行分类。

多级目录结构(树形):目前使用的结构。描述查找一个文件的完整路径叫做绝对路径。

当前目录:设置当前目录后,不需从根目录开始查找,可以直接从当前目录查找。这样的路径称为相对路径。引入当前目录和相对路径后,磁盘/IO次数减少,提升了访问文件的效率。

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。提出了“无环图目录结构”。

无环图目录结构:在树形目录结构的基础上,增加了一些指向同一节点的有向边。使整个目录称为一个有向无环图,实现文件共享。但这样需要为共享节点设置一个共享计数器,用于记录此时有多少个地方在共享该节点。只有共享计数器减为0时,才删除节点。

索引结点(FCB的改进):将除文件名以外的属性都放到索引结点

存放在外存中的索引结点称为“磁盘索引结点”,放入内存后称为“内存索引结点”。相比之下内存索引结点中需要增加一些信息,如:文件是否被修改,此时有几个进程正在访问该文件等。

  • 文件的物理结构(文件分配方式)

连续分配方式:文件在磁盘上占有一组连续的内存块。优点:支持顺序访问和直接访问;连续分配的文件在顺序访问时速度最快。缺点:不方便文件拓展,存储空间利用率低,会产生磁盘碎片。

文件目录中记录存放的起始块号和长度。

链接分配:采用离散分配方式,可以将文件分配离散的磁盘块。分为隐式链接和显式链接。隐式链接:目录中记录文件存放起始块号和结束块号。也可以增加一个字段来表示文件的长度。除了文件的最后一个磁盘块之外,每个磁盘块都会保存指向下一个盘块的指针,这些指针对用户是透明的。隐式链接只支持顺序访问,不支持随机访问,查找效率低。但很方便文件拓展,所有的空闲磁盘块都可以被利用,不会有碎片问题,外存利用率高。显式链接:把用于链接文件各物理块的指针显示地存放在一张表中,即文件分配表(FAT)。目录中只需记录文件的起始块号,文件分配表中有磁盘的所有物理块,每个物理块记录文件的下一个块号。-1代表是文件的结尾。注:一个磁盘仅设置一张FAT。开机时,将FAT读入内存,并常驻内存。FAT各表项在物理上连续存储,且每一个表项长度相同,因此“物理块号”字段可以是隐含的。优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。缺点:文件分配表的需要占用一定的存储空间。

索引分配:允许文件离散的分配在各个磁盘块中,系统会为每个文件建立一张索引表,记录了文件各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表---建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。索引分配方式可以支持随机访问、文件拓展也很容易实现。

如果一个文件的大小的索引表一个磁盘块是装不下的:

链接方案;多层索引;混合索引。

链接方案:可以将多个索引块链接起来。如果文件非常大也是很低效的。

多层索引:原理类似多级页表。若采用k层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要k+1次读磁盘操作。

混合索引:多种索引分配方式的结合。一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引。

  • 文件存储空间管理

存储空间的划分:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘)。

存储空间的初始化:将每个磁盘分为文件区和目录区,目录区主要存放文件目录信息(FCB)、存储磁盘存储空间管理的信息(文件目录、空闲表、位示图、超级块等用于文件管理的数据)。文件区用于存放文件数据。有的系统支持超大型文件,可支持由多个物理磁盘组成一个文件卷。

存储空间管理:

空闲表法:存储每个连续块的第一个空闲盘块号和连续的空闲盘块数。可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。

回收磁盘快需要注意表项的合并问题:回收区的前后都没有相邻空闲区、回收区前后都是空闲区、回收区前面是空闲区、回收区后面是空闲区。

空闲链表法:空闲盘块链:以盘块为单位组成一条空闲链。空闲盘区链:以盘区为单位组成一条空闲链(连续的磁盘块可以组成盘区、盘区的第一个盘块内记录了盘区的长度、下一个盘区的指针)。适用于离散分配的物理结构。

位示图法:0表示空闲,一表示占有。

成组链接法:重点是理解超级块的构造和链接。

超级块:下一组空闲盘块数+空闲块号(第一个空闲块号指向的块中存储下一组空闲盘块数+空闲盘号)

文件卷的目录区中专门用一个磁盘块作为“超级块”,当系统启动时需要将超级块读入内存。并且要保证内存与外存中的“超级块”数据一致。超级块中记录下一组空闲盘块数和空闲块号。

  • 文件共享

注意:多个用户共享一个文件是指系统中只有“一份”数据。只要某个用户修改了文件的数据,其他用户都可以看到文件的变化。

分类:基于索引结点(硬链接)/符号链(软链接)的共享方式。

索引结点:两个文件目录中的索引结点指针指向同一个索引结点。

符号链:索引结点指针指向新的索引结点,这个索引结点指向一个链接文件(相当于一个快捷方式)。软链接方式访问共享时需要查找多级目录,进行多次/IO操作,因此此种方法比硬链接慢。

  • 文件保护

口令一般存放在文件对应的FCB或索引结点中,用户访问文件前先输入口令,对比正确后允许用户访问。优点:保存口令的空间开销不多,验证时间开销也很小。缺点:口令存放在系统内部,不够安全。

加密保护:使用某个“密码”对文件进行加密,在访问文件时提供密码进行解密。密码错误无法得到正确的文件内容。优点:保密性好,不需要在系统中存储“密码”。缺点:编码/译码,或者说加密/解密要花费一定时间。

访问控制:在每个文件的FCB增加一个访问控制列表(ACL),记录了各用户对文件执行那些操作。实现灵活、可以实现复杂的文件保护功能。

访问类型:读、写、执行(将文件装入内存并执行)、添加(将新信息添加到文件结尾部分)、删除、列表清单(列出文件名和文件属性)。

  • 文件系统的层次结构

用户接口:文件系统需要向上层用户提供一些简单易用的功能接口。主要用于处理用户发出的系统调用请求。

文件目录系统:用户是通过文件路径来访问文件的,因此这一层需要根据用户给出的文件路径找到相应的FCB或索引结点。所有和目录、目录项相关的管理工作都在本层完成。

存取控制模块:验证用户是否有访问权限,主要完成文件保护相关功能。

逻辑文件系统与文件信息缓冲区:用户指明想要访问文件记录号,这一层需要将记录号转换为对应的逻辑地址。

物理文件系统:将文件的逻辑地址转换为物理地址。

辅助分配模块:负责分配和回收存储空间。

设备管理模块:直接与硬件交互,负责和硬件直接相关的一些管理工作。

二:磁盘

  • 磁盘的结构

磁盘:表面由一些磁性物质组成,可以用这些磁性物质记录二进制数据。

磁盘的盘面划分为一个个磁道

一个磁道又被划分成一个个扇区。每个扇区就是一个磁盘快。每个扇区存放的数据量相同。最内侧扇区数据密度最大。

读写数据:将磁头移动到想要读写的扇区所在的磁道。目标扇区从磁头下面划过才能完成对扇区的读写操作。

磁盘的物理地址柱面号,盘面号,扇区号来定位任意一个磁盘块。

柱面号用来定位磁道,盘面号用来选择盘面,扇区号来选择扇区。

读取步骤

1.    根据柱面号移动磁臂,让磁头指向指定柱面;

2.    激活指定盘面对应的磁头;

3.    磁盘旋转过程中,指定的扇区会从磁头下面划过。

活头磁盘:磁头可以移动。

固定头磁盘:磁头不能移动。每个磁道都有一个磁头。

固定盘磁盘:磁盘不可更换。

可换盘磁盘:磁盘可更换。

  • 磁盘调度

一次磁盘读/写操作需要的时间=寻找时间+延迟时间+传输时间

寻找时间(寻道时间):Ts在读写数据前,将磁头移动到指定磁盘所花的时间。

1.启动磁头臂s

2.移动磁头每跨越一个磁道耗时m

寻找时间=s+m*n

延迟时间Tr:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r(单位:转/秒或转/分),平均所需延迟时间Tr=(0.5)*(1/r)=1/2r

传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上字节数为N。则:Tt=(1/r)*(b/N)=b/(rN)[读写一个磁道所需的时间刚好又是转一圈所需的时间1/r]

延迟时间和传输时间都与磁盘转速相关,而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间。

磁盘调度算法:

先来先服务(FCFS:根据进程请求访问磁盘的顺序进行调度。优点:公平,如果请求访问的磁道比较集中的话,算法性能还算过得去。缺点:如果有大量进程竞争使用磁盘,在性能上很差,寻道时间长。

最短寻找时间优先(SSTF:优先处理离当前磁头最近的磁道。保证每次的寻道时间最短,但不能保证总的寻道时间最短。优点:性能较好,平均寻道时间短。缺点:可能产生饥饿现象。

扫描算法(SCAN:只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是“扫描算法”的思想。由于磁头移动的方式很像电梯因此也叫电梯算法。优点:性能较好,平均寻道时间较短,不会产生饥饿现象。缺点:1.只有到达最边上的磁道时才能改变磁头移动方向。2.对各个位置的响应频率不均。

LOOK调度算法:扫描算法中如果在移动方向没有请求,可以立即改变磁头移动方向。边移动边观察。优点:比起SCAN算法,不需要每次都移动到最外侧。

C-SCAN算法:只有磁头朝某个特定方向移动时才处理磁头访问请求,返回时直接快速移动至起始端而不处理任何请求。优点:比起SCAN,对每个位置磁道的响应频率很平均。

C-LOOK算法:C-SCAN的基础上,若移动方向没有磁道访问请求,可以立即返回磁头,并且只需返回到有磁道访问请求的位置即可。

  • 减少磁盘延迟时间的方法

(柱面号,盘面号,扇区号)读取相邻物理地址的数据时,不改变柱面号,不需要移动磁头臂,只需要激活相邻盘面的磁头即可。

交替编号:让编号相邻的扇区在物理上不相邻。

错位命名:盘面的扇区序号不垂直对应。

  • 磁盘的管理

磁盘初始化:

1.进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区。一个扇区通常可分为头、数据区域、尾三个部分。管理扇区所需要的各种数据结构一般存放在头尾部分,包括扇区验证码(奇偶、CRC验证码)

2.将磁盘分区,每个分区由若干柱面组成。

3.进行逻辑格式化,创建文件系统。包括创建文件系统的根目录、初始化存储空间管理所用的数据结构(位示图、空闲分区表)

引导块:ROM中只存放很小的自举装入程序,完整的自举程序放在磁盘的启动块(引导块、启动分区)上,启动块位于磁盘的固定位置。

坏块的管理:对于简单的磁盘,可以在逻辑格式化时(建立文件系统),对整个磁盘进行坏块检查,标明哪些扇区是坏扇区。(FAT文件分配表)。对于复杂的磁盘,磁盘控制器(磁盘设备内部的一个硬件部件)会维护一个坏块链表。在磁盘出厂前进行低级格式化(物理格式化)就将坏块链进行初始化。为保留一些“备用扇区”,用于替换坏块。这种方案称为扇区备用。且这种处理方式中,坏块对操作系统透明。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值