【操作系统-chapter4】文件管理

导读:本篇文章讲解 【操作系统-chapter4】文件管理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

文章目录

1. 文件系统基础

1.1 文件管理概述

在这里插入图片描述
引入文件系统的目的:

  1. 从系统角度:实现对文件的管理。
  2. 从用户角度:实现对文件的按名存取。

1.2 文件的逻辑结构

在这里插入图片描述

注意:记录指类似于数据库中表的一行数据,而记录的关键字就类似于数据库表的关键字(唯一ID)

在这里插入图片描述

1.2.1 顺序文件

顺序文件:
在这里插入图片描述

注意:

  1. 链式存储的顺序文件无法实现随机存取,顺序存储的顺序文件如果是可变长记录也无法实现随机存取。只有为顺序存储且为定长记录时才能实现随机存取。
  2. 重点注意:一般顺序文件默认指的顺序存储的顺序文件,做题的时候特别注意。
  3. 顺序文件的缺点:增删比较 麻烦。

1.2.2 索引文件

索引文件:
由于只有定长记录的顺序文件才能实现随机访问【随机访问能提高对文件的访问速度】,对于非定长的顺序文件不能,所以引出索引文件。它对定长和非定长记录的文件都能实现随机访问。
在这里插入图片描述
当文件很多时,会使得索引表非常的大。此时,我们需要将索引表分割存储。根据分割方式的不同,分为索引顺序文件和多级索引文件两类。

1.2.3 索引顺序文件

索引顺序文件:
在这里插入图片描述

1.2.3 多级索引顺序文件

多级索引顺序文件:
在这里插入图片描述

1.3 文件目录(表)

文件目录:把所有的FCB组织在一起,就构成了文件目录,即FCB的有序集合,它是一张表;
目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保持在外存,这个文件就叫目录文件。
可以这样去理解:文件目录和目录文件是同一事物的两种称谓。从用途角度来看称其为文件目录,从实现角度来看称其为目录文件。

1.3.1 文件控制块(别名:文件的目录)

在这里插入图片描述

注意:

  1. 文件目录本身是一个有结构的文件,由一条条记录组成。每一条记录对应一个文件的FCB。
  2. 文件目录:是一组FCB的有序集合。
  3. FCB实现了文件名和文件之间的映射。使用户可以实现“按名存取”。

在这里插入图片描述

1.3.2 文件目录的结构

1.3.2.1 单级目录结构

在这里插入图片描述

* 单级目录结构:指整个系统中只有一个文件目录。用于早期的单用户操作系统。
	* 优点:能够实现“按名存储”
	* 缺点:不允许文件重名,不适用于多用户操作系统。

1.3.2.2 两级目录结构

在这里插入图片描述

* 两级目录结构:有“主文件目录”和“用户文件目录”两级文件目录。前者记录用户名和用户文件目录地址。后者由该用户的文件FCB组成。
	* 优点:允许不同用户的文件重名;能够适用于多用户系统
	* 缺点:缺乏灵活性,用户不能对自己的文件分类。

1.3.2.3 多级目录结构(数形目录结构)

在这里插入图片描述

* 多级目录结构:有多级文件目录组成。像一颗树一样。
	* 优点:
		1. 比较灵活,用户能够将自己的文件分类。
		2. 能够通过“相对路径”和“绝对路径”(当前工作目录)减少用户对磁盘的I/O操作,从而提高对文件的访问速度。
	* 缺点:无法实现文件的共享。

1.3.2.4 无环图目录结构

在这里插入图片描述

* 无环图目录结构:在多级目录结构下,添加了指向同一个文件的边,从而方便实现文件共享。
	* 优点:能够实现文件的共享
	* 缺点:删除一个文件会变的复杂。
* 注意:只有共享计数器为0时,才能将该文件删除。

1.3.3 索引结点(对文件控制块的优化)

在这里插入图片描述

* 文件索引:将文件目录中,除文件名之外的信息统一存放到一个位置,让文件目录存放更多的目录项。而这个位置就叫“文件索引”
		   【注意:每一个文件都有一个文件索引】
	* 分类
		1. 内存文件索引
		2. 磁盘文件索引
	* 优点:用更少的盘块存放文件目录,从而减少**查找文件**时磁盘的I/O次数,提高访问效率。

1.3.4 小结

在这里插入图片描述

1.4 文件的物理结构(文件分配方式:已用块)

1.4.1 连续分配(顺序分配)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

* 连续分配:磁盘为该文件分配连续的块来存放整个文件。
	* 关键字段:起始块号和长度
	* 地址转换: (物理块号=起始地址+逻辑块号,块内地址)
	* 优点:
		1. 支持顺序访问和直接访问(即随机访问)
		2. 连续分配的文件在顺序读/写时速度最快。
	* 缺点:
		1. 会产生难以利用的磁盘碎片,导致存储利用率低(可以通过“紧凑”技术解决)
		2. 不利于文件扩展。

* 结论:连续分配的文件在顺序读/写时速度最快。

1.4.2 链接分配

在这里插入图片描述

1.4.2.1 隐式链接

在这里插入图片描述

* 隐式链接:除文件的最后一个块之外,每个块中都存放下一个块的指针。
	* 关键字段:起始块号、结束块号
	* 地址转换: (物理块号=遍历链表到i号块的地址,块内地址)
	* 优点:
		1. 不会产生碎片,存储空间利用率高
		2. 方便文件扩展
	* 缺点:
		1. 只支持顺序访问,不支持直接访问(随机访问), 查找效率低
		2. 指向下一个盘块的指针也需要耗费空间。

* 注意:
	1. 访问i号盘块,需要 i+1 次磁盘I/O
	2. 如果没有说明,默认链式分配方式指的是隐式的链式方式。

1.4.2.2 显式链接

在这里插入图片描述
在这里插入图片描述

* 显式链接:链接各物理块的指针显式的放在一张表中,即`文件分配表(FAT)`。一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存。
	* 关键字段:起始块号
	* 地址转换: (物理块号=访问文件分配表,块内地址)
	* 优点:
		1. 不会产生碎片,存储空间利用率高
		2. 方便文件扩展
		3. 支持随机访问
		4. 地址转换不需要访问磁盘,因此文件的访问效率更高
	* 缺点:
		1. 文件分配表需要占一定的存储空间。

* 注意:“随机访问”指的是能否根据记录号直接访问某个盘块,并不是指是否能直接访问我们想要访问的盘块,因为链式分配方式是有前后逻辑关系的。

1.4.3 索引分配

在这里插入图片描述
如果文件过大,会导致索引表过大,一个盘块无法存放整个索引表。解决方法是将索引表拆分为几个小的索引表,而小的索引表直接的联系方式不同,导致索引分配的不同类别:

  1. 链接索引分配
  2. 多层索引分配
  3. 混合索引分配

1.4.3.1 链接索引分配

在这里插入图片描述
优点:能够解决大索引表无法存放的问题。
缺点:访问磁盘I/O次数多,导致查找效率很低。

1.4.3.2 多层索引分配

在这里插入图片描述
优点:查找的效率高
缺点:

  1. 大小文件的访问磁盘次数相同。
  2. 会产生更多的索引表,占更多的存储空间。

1.4.3.3 混合索引分配

在这里插入图片描述
优点:查找效率高,小文件访问磁盘的I/O次数会更少。

1.4.4 小结

在这里插入图片描述
在这里插入图片描述

1.5 文件存储空间管理(空闲块)

1.5.1 存储空间的划分与初始化

在这里插入图片描述

注意:

  1. 一个文件卷(逻辑卷)可以由一个磁盘的某部分组成,也可以由多个磁盘组成。
  2. 每个文件卷分为:目录区与文件区
  3. 目录区存放的是FCB、用于磁盘管理的一些信息。
  4. 文件区用于存放文件数据。

1.5.2 几种管理方法

1.5.2.1 空闲表法

在这里插入图片描述

1.5.2.2 空闲链表法

在这里插入图片描述
在这里插入图片描述

1.5.2.3 位示图法

在这里插入图片描述
在这里插入图片描述

1.5.2.4 成组链接法

在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述

(1) 该磁盘中目前还有多少个空闲盘块?
(2) 在为某个文件分配3个盘块后,系统要删除另一文件,并回收它所占的5个盘块,它们的盘块号依次为700、711、703、788、701,请画出回收后的盘块链接情况。
解答:
(1):301;首先看空闲盘块号栈,此时N=2,表示有两个空闲盘块299、300,而盘块300号上面又写着有100个空闲盘块:301-400,它还有下一个链接的盘块400;在盘块400中,记录有100个空闲盘块401-500;然后又链接到500号盘块,在500号盘块中,虽然N=100,但是第一个是0,它表示空闲盘块链的结尾。因此,总共的空闲盘块有:299、300、301-400、401-500、501-599;即301个空闲盘块。
(2):

  1. 步骤1:分配三个空闲盘块
    首先看空闲盘块号栈,发现N=2,那么到达栈顶即S.free[2-1]=299,即把299号盘块分配出去了,这时磁盘状态如下:
    在这里插入图片描述

    然后分配第二个盘块,这时N=1,如果再分配就会变成空栈了,因为S.free[N-1]=S.free[0]!=0,所以需要将300号盘块的内容拷贝到空闲盘块号栈,并分配300号盘块(如果S.free[0]=0,则表示没有空闲盘块,将会阻塞进程),分配300块后的示意图:
    在这里插入图片描述

    接下来分配301号盘块:/
    在这里插入图片描述

  2. 步骤二:回收700、711、703、788、701号盘块
    回收的过程也是从栈顶开始的,首先看N=99,然后回收700,会将700放在S.free[N]的位置,然后将N加1变成100:
    在这里插入图片描述
    然后回收711号盘块,因为此时空闲栈的N=100,已经满了,如果再回收,需要将空闲盘块栈的内容移动到711号盘块上,然后将空闲盘块栈的S.free[0]设置为711,N设置为1;接着回收703、788、701,最终结果图如下:
    在这里插入图片描述

1.5.3 小结

在这里插入图片描述

注意:文件分配表:其表项与物理盘块一一映射,以及块的先后链接关系。其不仅包含了已分配的块,还包含了空闲块。所以其不仅能管理空闲磁盘块,还能管理已配的块。

1.6 文件的基本操作

1.6.1 创建文件

在这里插入图片描述

1.6.2 删除文件

在这里插入图片描述

1.6.3 打开文件

在这里插入图片描述
在这里插入图片描述

注意:

  1. 用户的“打开文件表”与系统的“打开文件表”不一样,但是其都在内存中【用户在表就在】。
  2. 打开计数器是系统的“打开文件表”所特有的。
  3. 打开文件是将文件的FCB也就是该文件的目录复制到内存指定区域,具体是内存中的“打开文件表“中。注意是FCB,而不是不是整个文件。
  4. 打开一个进程,获得对应的文件描述符是指向用户的”打开文件表“中的某一项,而不是指向系统”打开表“【简单想,如果指向系统表,指针会相同,不同用户应该不同】。
  5. 注意”读写指针“、”访问权限“是在用户的”打开文件表“中,所以如果多用户共享某个文件,用户都打开该共享文件,则其”读写指针“、”访问权限“可能相同,也可能不同。

1.6.4 关闭文件

在这里插入图片描述

1.6.5 读文件

在这里插入图片描述

1.6.6 写文件

在这里插入图片描述

1.6.7 小结

在这里插入图片描述

1.7 文件共享

1.7.1 基于索引结点的共享方式(硬链接)

在这里插入图片描述
在这里插入图片描述

1.7.2 基于符号链的共享方式(软链接)

在这里插入图片描述
如果某个共享文件被删除,点击对应的“link”文件,会提示“xxx以删除”。

1.7.3 小结

在这里插入图片描述

注意:建立符号链时,引用计数器的值直接复制;建立硬链接时,count+1。
在这里插入图片描述

1.8 文件保护

1.8.1 口令保护

在这里插入图片描述

1.8.2 加密保护

在这里插入图片描述
如果没有正确的加密密码,那就是一串没有意义的乱码。

1.8.3 访问控制(又叫:存取控制)

在这里插入图片描述
在这里插入图片描述

1.8.4 小结

在这里插入图片描述

注意:

  1. 加密保护的安全性比访问控制的安全性高,因为访问控制的基本和力度小,但是灵活性高。
  2. 只有访问控制是由系统实现,其他都是由用户实现。
  3. 用户权限表属于访问控制实现方式之一。

2. 文件系统实现

2.1 文件系统层次结构

在这里插入图片描述
在这里插入图片描述

3. 磁盘组织与管理

3.1 磁盘的结构

  1. 磁盘、磁道、扇区的概念
    在这里插入图片描述

  2. 盘面、柱面
    在这里插入图片描述
    在这里插入图片描述

  3. 如何在磁盘中读/写
    在这里插入图片描述

  4. 磁盘的分类
    1. 按磁头分:
    在这里插入图片描述

    1. 按磁盘是否可更换分:
      在这里插入图片描述
  5. 小结
    在这里插入图片描述

3.2 磁盘调度算法

3.2.1 一次磁盘读/写操作需要的时间

在这里插入图片描述

注意:在寻道时间、延迟时间、传输时间中,影响最大的是寻道时间,因为移动磁盘臂很非时间。

延迟时间和传输时间与转速r有关,是无法用算法优化的。只能优化寻找时间,下面介绍对于寻找时间的几种优化算法。

3.2.2 磁盘调度算法(减少寻找时间)

3.2.2.1 先来先服务(FCFS)

在这里插入图片描述

3.2.2.2 最短寻找时间优先(SSTF)

在这里插入图片描述

3.2.2.3 扫描算法(SCAN)(又叫电梯算法)

在这里插入图片描述

3.2.2.4 循环扫描算法(C-SCAN)

在这里插入图片描述

3.2.2.5 LOOK调度算法(SCAN算法的改良)

在这里插入图片描述

3.2.2.6 C-LOOK调度算法(C-SCAN算法的改良)

在这里插入图片描述

3.2.3 小结

在这里插入图片描述
注意:
1. 磁臂黏着: 指系统总是访问磁盘的某个磁道,而不响应对其他磁道的访问请求。
2. 磁臂黏着不是“饥饿”
3. 除了FCFS都会发生磁臂黏着现象。(因为其他算法都要从小到大排序)

3.2.4 减少延迟时间

磁头读取完一个扇区后,需要大约一个扇区的时间来准备,才可以读取下一个扇区的内容。但是,磁盘是连续转动的,这就使得如果读取的两个扇区在物理上是相邻的,就不能一圈读取完,需要读取两圈。比如:
在这里插入图片描述
解决的方法:

  1. 交替编号
  2. 错位命名

3.2.4.1 交替编号

在这里插入图片描述

注意:交替编号是针对同一盘面的。

3.2.4.2 错位命名

在这里插入图片描述

注意:错位命名是针对不同盘面的。

3.2.4.3 小结

在这里插入图片描述
盘面内采用交替编号,盘面间采用错位命名。能够极大的减少对磁盘I/O的延迟时间。

3.2.5 磁盘的管理

在这里插入图片描述

4. 补充

4.1 文件的逻辑结构vs文件的物理结构

1. 文件的逻辑结构是为了方便用户而设计的,而文件的物理结构是为了方便操作系统组织盘块。(角度不同)
2. 文件中逻辑结构中引入的索引和物理结构中的索引目的不同。
	* 前者是为了加快文件的定位,实现随机访问,是从用户角度出发
	* 后者目的是为了管理不连续的物理块,是从系统管理角度出发的。

1. 当前工作目录指的是“相对路径”,目的是加快文件的检索速度。

2. UNIX系统中,输入/输出设备视为特殊文件。

3. 打开文件操作的主要工作是该文件目录项(即FCB)复制到打开文件表中。
	将文件内容从外存加载到内存是读文件操作。

4. 文件的逻辑结构是方便用户而设计的;
	文件的物理结构是操作系统设计者对硬件结构采取的策略,即方便OS管理。

5. 目录文件存放的信息:该目录下中的所有子目录和数据文件的目录,即所有文件的FCB信息。

6. 文件分配表(FAT)与文件目录(FDT)的区别与联系:
	1. 区别:FAT是用于表示磁盘空间的分配信息。FDT是记录文件或子目录的FCB信息的表格。
	2. 联系:FDT和FAT里面都有文件的FCB信息,前者是为了实现对文件的”按名存储“,后者是为了管理文件占用的存储空间,都需要文件的FCB信息。

7. 对于文件的访问,常由用户访问权限和文件属性决定。

8. 判断:一个文件在同一个系统、不同的存储介质上的复制文件,应采用同一种物理结构。
	错。同一系统复制文件,则两个文件的物理结构不一定相同。因为物理结构是从OS角度出发,OS针对存储介质会使用合适的物理结构进行管理。

9. 判断:为防止系统故障造成系统内文件受损,常采用存取控制矩阵方法保护文件。
	 错。为防止系统故障造成系统内文件受损,常采用备份的方式保护文件。而存取控制矩阵的方法只适用于多用户之间的存取权限保护。

10. 判断:read系统调用的参数应包含文件的名称。
	错误。文件的名称和路径应该是作为打开文件操作时的参数。

11. 文件目录项不包括( )
	A. 文件名		B.文件访问权限说明		C.文件控制块的物理位置		D.文件所在的物理位置
	选C。文件目录项就是文件的FCB,FCB不包含FCB的位置信息。

12. 文件描述符:是打开文件操作中的概念。打开一个文件,会在系统打开表和用户打开表中将立相应的文件项,而文件描述符是指向该用户打开文
		件表中的该文件项。

13. 判断:两个文件建立硬连接,其读写指针位置相同
		错误。因为读写指针位于用户打开文件表中,而两个进程对于的文件打开表项肯定不同,所以无法确定读写指针位置是否相同。

14. 加密保护的安全性比访问控制机制安全性高,而访问控制比加密保护的灵活性好。
	访问控制必须由系统实现。

15. 对一个文件访问,常由( )限制。
	①用户访问权限和文件属性
	②口令和文件属性
	选①。现在计算机常用的是①不是②。

16. 文件系统中,用户类别有4类,访问权限有5类。若FCB中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件
	的尾数至少为___位。
	20位。容易写成5位,比如11111,它只能表示某个用户拥有什么权限,并不能表示所有用户。这里有4个用户,4*5=20才能表示所有用户的权限。
	(这个4*5可以理解称一个矩阵,称位:存取控制矩阵或访问控制矩阵)

17. 下列能够提高文件访问速度的是( )
	①提前读		②为文件分配连续的簇		③延迟写		④采用磁盘高速缓存
	①②③④都对。
	提前读:指在读当前块时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲区读取,提高了文件访问速度。
	延迟写:指先将数据写入缓冲区,并置上“延迟写”标志,以备不久之后访问,当缓冲区需要再次被分配出去时,才将缓冲区数据写入磁盘,
		   减少了对磁盘的访问次数,提高了文件的访问速度。
	根据程序的局部性原理,所有如果分配连续的簇,访问速度会增加。

18. 为支持CD-ROM中视频文件的快速随机播放,播放性能最好的文件数据组织方式是( )
	A.连续结构		B.链式结构		C.直接索引结构		D.多级索引结构
	选A。ROM是只读存储器,不会进行文件扩展,又要能随机存储,所以连续分配结构最快。

19. 若某文件系统索引结点(inode)中有直接地址和间接地址项,则下列与单个文件长度无关的因素是( )
	A.索引结点的总数		B.间接地址索引的级数		C.地址项的个数		D.文件块大小
	选A。索引结点总数与文件大小无关,它代表的是文件个数。
	文件大小 = 总的地址项个数 * 文件块大小

20. 关于目录检索,正确的是( )
	A.由于散列法具有较快的检索速度,因此现代操作系统中都用它来代替传统的顺序检索。
	B.在利用顺序检索时,对树形目录应采用文件的路径名,且应从根目录出发开始逐级检索。
	C.在利用顺序检索时,只要路径名的一个分量未找到,就应该停止查找。
	D.利用顺序检索后,得到文件的物理地址。
	选C。散列法(就是索引表)虽然速度很快,但是其无法实现顺序检索和枚举检索,现在更多的是采用多级索引顺序文件。
	树形目录可以使用相对路径。顺序检索后得到的是文件的逻辑地址。

21. 设逻辑文件的固定长度为100B,采用连接分配方式。盘块长度为512B。若该文件的目录项已经读入内存,则对第
	22个逻辑修改后,共启动了磁盘__次
	6次。查找 = 22*100/512上取整 = 5次。修改完后,由于知道其地址,则只需要再对磁盘进行1次I/O,所以共6次。

22. 顺序文件、索引文件、索引顺序文件都是文件的逻辑结构,其表项存放的是记录的逻辑地址。
	  顺序结构、链接结构、索引结构的文件是文件的物理结构,其表项存放的是对应的物理块号。

23. 判断:文件分配表可用于文件系统管理空闲磁盘块。
	正确。文件分配表:其表项与物理盘块一一映射,以及块的先后链接关系。其不仅包含了已分配的块,还包含了空
	闲块。所以其不仅能管理空闲磁盘块,还能管理已配的块。

24. 某文件系统的簇和扇区大小分别是1KB和512B。若一个文件的大小为1026B,则系统分配给该文件的磁盘大小为__
	答:2KB.  因为系统以簇为单位进行资源分配。但是读写单位是盘块。

25. 光盘可以随机访问也可以顺序访问。而磁带只能顺序访问。

26. 下列选项中,磁盘逻辑格式化程序所作的工作是( )
	①对磁盘进行分区
	②建立文件系统的根目录
	③确定磁盘扇区校验码所占位数
	④对保存空闲磁盘块选项的数据结构进行初始化
	选②④。
	* 空白磁盘处理	
		1. 物理格式化:将磁盘分成各个扇区。并为磁盘的每个扇区采用特别的数据结构,包括校验码
		2. OS将自己的数据结构写在磁盘上,分为两步。
			1. 将磁盘分为由一个或多个柱面组成的分区,每个分区可以做为一个独立的磁盘
			2. 逻辑格式化(创建文件系统)OS将自己的数据结构写在磁盘上,并初始化信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84599.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!