文章目录

  • 前言
  • 一、文件管理概述
  • 二、文件的逻辑结构
    • 1、顺序文件
    • 2、索引文件
    • 3、索引顺序文件
  • 三、文件目录
    • 1、文件控制块
    • 2、目录结构
    • 3、索引结点
  • 四、文件的分配方式
    • 1、连续分配
    • 2、链接分配
      • ⑴隐式链接
      • ⑵显式链接
    • 3、索引分配
      • ⑴链接方案
      • ⑵多层索引
      • ⑶混合索引
  • 五、文件存储空间管理
    • 1、存储空间的划分与初始化
    • 2、存储空间管理方法
      • ⑴空闲表法
      • ⑵空闲链表法
        • ① 空闲盘块链
        • ② 空闲盘区链
      • ⑶位示图法
      • ⑷成组链接法
  • 六、文件的基本操作
  • 七、文件共享与保护
    • 1、文件共享
      • ⑴基于索引结点的共享方式
      • ⑵基于符号链的共享方式
    • 2、文件保护
      • ⑴口令保护
      • ⑵加密保护
      • ⑶访问控制
  • 八、文件系统的层次结构
  • 总结

前言

本文的主要内容是操作系统中文件管理的基础知识,包括文件管理的简单介绍、文件的逻辑结构、文件目录、文件的分配方式、文件存储空间管理、文件的基本操作、文件共享与保护以及文件系统的层次结构。


一、文件管理概述

文件就是一组有意义的信息或者数据的集合。
文件的属性:
文件名:由创建文件的用户决定文件名,主要为了方便用户找到文件,同一目录下不允许有重名的文件。
标识符:一个系统内的各文件的标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型,比如文本文档(.txt)、Word文档(.doc/.docx) 等。
位置:文件存放的路径(用户使用)、在外存中的地址(操作系统使用,对用户不可见)。
大小:指明文件的大小。
保护信息:对文件进行保护的访问控制信息。
此外还有创建时间、上次修改时间以及文件所有者信息等属性。
文件分为无结构文件和有结构文件。无结构文件由一些二进制或字符流组成,称为流式文件,例如文本文件。有结构文件由一组相似的记录组成,又称为记录式文件。记录是一组相关数据项的集合,数据项是文件系统中最基本的数据单位。

用户可以自己逐层创建目录,各层目录中存放相应的文件,系统中的各个文件就通过一层一层的目录合理有序的组织起来了。
操作系统向上提供的功能如下图所示。

我们可以用上图中这几个基本的操作完成更复杂的操作。
操作系统还应当完成文件共享和文件保护的功能。文件共享需要使多个用户可以共享使用一个文件。文件保护需要保证不同的用户对文件有不同的操作权限。
对文件管理概述这部分内容简单的总结一下,如下图所示。


二、文件的逻辑结构

逻辑结构指的是在用户看来,文件内部的数据应该是如何组织起来的;物理结构指的是在操作系统看来,文件的数据是如何存放在外存中的。
前面已经提到文件分为无结构文件和有结构文件。无结构文件由一些二进制或字符流组成,其没有明显的结构特性。有结构文件由一组相似的记录组成,又称为记录式文件,记录是一组相关数据项的集合,数据项是文件系统中最基本的数据单位。一般来说,每条记录有一个数据项可以作为关键字,用来区分每条记录。此外,可以根据各条记录的长度是否相等,可将其分为定长记录和可变长记录。
有结构文件的逻辑结构分为顺序文件、索引文件和索引顺序文件。

1、顺序文件

顺序文件指的是文件中的记录一个接一个地顺序排列,记录可以是定长的,也可以是可变长的,各个记录在物理上可以顺序存储或链式存储。如果是顺序存储,逻辑上相邻的记录在物理上也相邻;如果是链式存储,逻辑上相邻的记录物理上不一定相邻。
顺序文件还可分为串结构和顺序结构。串结构是指记录之间的顺序与关键字无关,其顺序通常按照记录存入的时间决定;顺序结构是指记录之间的顺序按关键字顺序排列。
顺序文件随机存取实现与否的讨论如下图所示。

定长记录的顺序文件,若物理上采用顺序存储,则可以实现随机存取,如果再能保证记录的顺序结构,则可以实现快速检索,也就是根据关键字快速找到对应的记录。

2、索引文件

索引表本身是定长记录的顺序文件,因此可以快速的找到第 i 个记录对应的索引项。
可以将关键字作为索引号内容,若按关键字顺序排列,则还可以支持按照关键字折半查找,每当要增加或者删除一个记录时,需要对索引表进行修改,由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。

此外,也可以用不同的数据项建立多个索引表。
索引文件的缺点:由于每个记录对应一个索引表项,因此索引表可能会很大。如果文件的每个记录占的空间比每个索引表项要低,那么对存储空间的利用率就比较低了。

3、索引顺序文件

索引顺序文件是索引文件和顺序文件思想的结合,索引顺序文件中,同样会给文件建立一张索引表,但与索引文件不同的是,索引顺序文件并不是给每个记录对应一个索引表项,而是一组记录对应一个索引表项。通过这种操作,索引表中的索引表项数量会减少很多。
如果一个顺序文件有10000个记录,则根据关键字检索文件,只能从头开始顺序查找(这里的文件是不定长记录文件),平均需查找5000个记录。若采用索引顺序文件结构,可以把10000个记录分为100组,每组100个记录,需要先顺序查找索引表找到分组,由于总共100个组,因此索引表长度为100,平均需要查找50次,找到分组以后,再到分组中顺序查找,也是平均需要查找50次。采用索引顺序文件结构后,平均查找次数减少为 50 + 50 = 100 次。
同理,如果是1000000个记录,通过上面的方法分为1000组,每组1000个记录,最终平均查找次数为 500 + 500 = 1000 次,仍然是比较多的。
为了进一步提高检索效率,可以为顺序文件建立多级索引表,如下图所示。

对于上面1000000个记录的这个例子,采用多级索引表的方法,顶级索引表100组,低级索引表100组,每组100项,这样平均查找次数为 50 + 50 +50 = 150 次,由此可见,通过多级索引表可以大大降低查找得次数。
对文件的逻辑结构这部分内容简单的总结一下,如下图所示。


三、文件目录

1、文件控制块

目录本身就是一种有结构文件,它由一条条记录组成,每条记录对应一个放在该目录下的文件。
目录文件中的一条记录就是一个文件控制块(FCB,File Control Block),FCB 中包含了文件的基本信息(包括文件名、物理地址、逻辑结构、物理结构等信息)、存取控制信息(是否可读/可写、禁止访问的用户名单等信息)以及使用信息(文件的建立时间、修改时间等信息)。其中最重要和最基本的是文件名和文件存放的物理地址。
FCB 的有序集合就是文件目录,一个 FCB 就是一个文件目录项。FCB 实现了文件名和文件之间的映射,使用户可以实现按名存取。
对目录可以进行的操作有:搜索、创建文件、删除文件、显示目录、修改目录等。

2、目录结构

早期的操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项。下图所示的就是一个单级目录结构。

单级目录结构实现了按名存取,但是不允许文件重名。因此在创建一个文件时,需要先检查目录表中有没有重名文件,确定不重名之后才能允许建立文件,并将新的文件对应的目录项插入到目录表中。显然,单级目录结构不适合用于多用户操作系统。
早期的多用户操作系统采用两级目录结构,分为主文件目录(MFD,Master File Directory)和用户文件目录(UFD,User File Directory)。下图所示的就是一个两级目录结构。

两级目录结构下的主要缺点是用户不能对自己的文件进行分类。
多级目录结构,也称为树形目录结构,这种结构下,不同目录下的文件可以重名。系统会根据绝对路径一层一层地找到下一级目录。下图所示的就是一个多级目录结构。

有时候用户会在一个目录下读取多个文件,如果每次都从根目录开始查找,就会比较低效。为了提升访问文件的效率,可以从当前目录开始访问相对路径,这样磁盘 I/O 的次数就减少了。
树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够有效的进行文件的管理和保护,但是树形结构不便于实现文件的共享。
无环图目录结构就是在树形目录结构的基础上增加了一些指向同一结点的有向边,使整个目录成为一个有向无环图,这样可以实现多个用户之间的文件共享。下图所示的就是一个无环图目录结构。

由上图可知,我们可以用不同的文件名指向同一个文件,甚至可以指向同一个目录,也就是共享同一目录下的所有内容。此外,还需要为每个共享结点设置一个共享计数器,用于记录此时有多少个目录在共享该结点,在用户提出删除结点的请求时,系统不会直接把该共享结点删除,而只是删除该用户的 FCB,并使得共享计数器减1,只有共享计数器减为0时,才删除结点。
需要注意的是,共享文件不同于复制文件,在共享文件中,由于各用户指向的是同一个文件,因此只要其中一个用户修改了文件数据,那么所有的用户都可以看到文件数据的变化。

3、索引结点

在查找各级目录的过程中,只需要用到文件名这个信息,只有文件名匹配时,才需要读出文件的其他信息,因此可以把目录表精简以达到提升效率的目的。精简后的目录表如下图所示。

通过对比可以看到,精简后的目录表除了文件名之外的文件描述信息都放到索引结点。
当找到文件名对应的目录项时,才需要将索引结点调入内存,索引结点中记录了文件的各种信息,包括文件在外存中的存放位置,根据存放位置就可以找到文件。
存放在外存中的索引结点称为磁盘索引结点,当索引结点放入内存后称为内存索引结点,内存索引结点中会增加一些信息,如文件是否被修改、此时正在访问文件的进程数等。
对文件目录这部分内容简单的总结一下,如下图所示。


四、文件的分配方式

操作系统对磁盘的管理包括对非空闲磁盘块的管理(存放了文件数据)和对空闲磁盘块的管理(文件存储空间管理)。
磁盘中的存储单元会被分为一个个块/磁盘块/物理块,在很多操作系统中,磁盘块的大小与内存块、页面的大小相同。因为内存与磁盘之间的数据交换,也就是读写操作、磁盘 I/O 等都是以块为单位进行的,即每次读入一块,或者写入一块。
在内存管理中,进程的逻辑地址空间被分为一个个的页面,同样在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个个的文件块。因此文件的逻辑地址也可以表示为 (逻辑块号,块内地址) 这样的坐标形式。
操作系统为文件分配存储空间都是以块为单位的,用户通过逻辑地址来操作自己的文件,操作系统负责逻辑地址到物理地址的映射。
文件的分配方式包括连续分配、链接分配(又分为显式链接和隐式链接)和索引分配。

1、连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块。
逻辑上连续的块在物理上也要连续,同时还要保证逻辑上块与块之间的先后顺序映射到物理上之后顺序不变。
在文件目录中记录着存放的起始块号和长度,用户给出要访问的逻辑块号,操作系统找到该文件对应的目录项,物理块号 = 起始块号 + 逻辑块号 。在计算之前需要先检查用户提供的逻辑块号是否合法,如果有越界就不合法。
连续分配支持顺序访问和直接访问(随机访问)。顺序访问指的是在访问自己想要访问的块之前先要访问排在该块之前的块,而直接访问就不用这样做。
读取某个磁盘块时,需要移动磁头,访问的两个磁盘块相隔越远,移动磁头所需的时间就越长。由于连续分配方式下块与块之间是相连的,因此连续分配的文件在顺序读写时速度是最快的
下图中,如果要拓展文件 A,需要再增加一个磁盘块,也就是要4个连续的磁盘块,由于采用的是连续结构,所以文件 A 占用的磁盘块必须是连续的,因此只能将文件 A 全部迁移到绿色区域。

通过上面这个例子可知,物理上采用连续分配的文件不方便拓展
如果磁盘上空闲的块之间都不是连续的,那么这些空闲块都是一个一个单独存在的,如果要采用连续分配的方式,这些空闲块很难利用。物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片,虽然可以用紧凑来处理碎片,但是需要耗费很大的时间代价。
连续分配的优点:支持顺序访问和直接访问;连续分配的文件在顺序访问时速度最快。
连续分配的缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片。

2、链接分配

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块,分为隐式链接和显式链接。

⑴隐式链接

目录中记录了文件存放的起始块号和结束块号,也可以增加一个字段表示文件的长度。除了文件的最后一个磁盘块之外,每个磁盘块中都会保存指向下一个盘块的指针,这些指针对用户来说是透明的。隐式链接的示意图如下图所示。

用户想要访问逻辑块号为 i 的块,需要从0号块一直访问到 i 号块,这样总共需要 i+1 次的磁盘 I/O。
隐式链式分配的方式下拓展文件,可以随便找一个空闲磁盘块,挂到文件的磁盘块链尾,并修改文件的 FCB。
隐式链式分配的优点:很方便文件拓展,不会有碎片问题,外存利用率高。
隐式链式分配的缺点:只支持顺序访问,不支持随机访问,查找效率低,而且指向下一个盘块的指针也需要耗费一定的存储空间。

⑵显式链接

把用于链接文件的各物理块的指针显式地存放在一张表中,这张表就叫做文件分配表(FAT,File Allocation Table)。一个磁盘仅设置一张 FAT,开机时会将 FAT 读入内存,并会常驻内存,FAT 的各个表项在物理上连续存储,且每一个表项长度相同,所以物理块号字段可以是隐含的。
下图所示的就是一个名为 aaa 的文件依次存放在磁盘块 2—>5—>0—>1。

显式链接分配方式逻辑块号转换成物理块号的过程不需要读磁盘操作。
显式链式分配的优点:既支持顺序访问,也支持随机访问;方便文件拓展,不会有碎片问题;外存利用率高;相比于隐式链接,地址转换不需要访问磁盘,因此文件访问效率更高。
显式链式分配的缺点:文件分配表需要占用一定的存储空间。

3、索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(建立逻辑块号与物理块号之间的映射关系),索引表存放的磁盘称为索引块,文件存放的磁盘称为数据块。
假设一个文件aaa的数据依次存放在磁盘块 2—>5—>13—>9,其索引块为7号磁盘,其索引表如下图所示。

需要注意的是,在显式链接的链式分配方式中,文件分配表 FAT 是一个磁盘对应一张,而索引分配方式中,索引表是一个文件对应一张。
索引分配的优点:既支持顺序访问,也支持随机访问;文件拓展非常方便。
索引分配的缺点:索引表需要占用一定的存储空间。
如果文件太大,索引表项太多,可以采取链接方案、多层索引和混合索引这三种方式来解决。

⑴链接方案

如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。链接方案的示意图如下。

链接方案的缺点是如果文件很大,索引表很长,就需要将很多个索引块链接起来,如果要找到 i 号索引块,必须先依次读入 0—i-1 号索引块,这就会导致磁盘 I/O 的次数过多,查找效率低下。

⑵多层索引

多层索引方法就是建立多层索引,使第一层索引块指向第二层索引块,可以根据文件大小设置多层索引块。如果采用 K 层索引结构,且顶级索引表未调入内存,则访问一个数据块需要 K+1 次读磁盘操作。多层索引的示意图如下。

多层索引方法的缺点是即使是小文件,访问一个数据块依然需要 K+1 次读磁盘。

⑶混合索引

混合索引是多种索引分配方式的结合,比如一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),也包含一级间接索引(指向单层索引表),还包含两级间接索引(指向两层索引表)。混合索引的示意图如下。

混合索引方法的优点是对于小文件来说,访问一个数据块所需的读磁盘次数较少。
对文件的物理结构这部分内容简单的总结一下,如下表所示。


五、文件存储空间管理

1、存储空间的划分与初始化

我们在安装 Windows 操作系统的时候,必须要做的一个工作就是为磁盘分区,也就是我们电脑中的C盘、D盘、E盘等。每个盘区又会进一步分为目录区和文件区,如下图所示。

存储空间的划分就是将物理磁盘划分为一个个的文件卷,文件卷也称逻辑卷或者逻辑盘。

2、存储空间管理方法

⑴空闲表法

空闲表法适用于连续分配方式,空闲表法的示意图如下图所示。

空闲表法分配磁盘块与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间,可以采用首次适应、最佳适应、最坏适应等算法来决定为文件分配哪个区间。
回收磁盘块时与内存管理中的动态分区分配也比较相似,有四种情况:
①回收区的前后都没有相邻的空闲区,这种情况下就需要在空闲盘块表中新增一条记录,分别写明第一个空闲盘块号和空闲盘块数;
②回收区的前后都是空闲区,这种情况下就需要将前、后面的空闲区与当前的空闲区合并,并更新空闲盘块表;
③回收区的前面是空闲区,这种情况下需要将前面的空闲区与当前的空闲区合并,并更新空闲盘块表;
④回收区的后面是空闲区,这种情况下需要将后面的空闲区与当前的空闲区合并,并更新空闲盘块表。

⑵空闲链表法

空闲链表法又分为空闲盘块链和空闲盘区链。空闲盘块链以盘块为单位组成一条空闲链;空闲盘区链以盘区为单位组成一条空闲链。
空闲盘块链和空闲盘区链的区别通过下图就可以容易的分辨。

可以看到,空闲盘块链中都是单个的盘块通过指针连接的,而在空闲盘区链中,连续的盘块会组成一个空闲的盘区,这些盘区之间是通过指针连接的。

① 空闲盘块链

空闲盘块链中,操作系统保存着链头和链尾指针。在分配盘块时,如果文件申请 K 个盘块,则从链头开始依次摘下 K 个盘块进行分配,并且修改空闲链的链头指针。在回收时,回收的盘块依次挂到链尾,并修改空闲链的链尾指针。
空闲盘块链适用于离散分配的物理结构,为文件分配多个盘块时可能要重复多次操作。

② 空闲盘区链

空闲盘区链中,操作系统仍然保存着链头和链尾指针。在分配盘块时,如果文件申请 K 个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,然后分配给文件,如果没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,但要注意的是,分配后需要修改相应的链指针和盘区大小等数据。在回收时,若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中,如果回收区没有和任何空间区相邻,将回收区作为单独的一个空闲盘区挂到链尾。
空闲盘区链适用于离散分配和连续分配,为一个文件分配多个盘块时效率更高。

⑶位示图法

位示图法就是每个二进制位对应一个盘块,在下图所示的例子中,0代表盘块空闲,1代表盘块已分配,位示图一般用连续的字来表示,下面的例子就是一个字的字长,即16位,字中的每一位对应一个盘块,因此可以用(字号,位号)对应一个盘块号。

位示图法分配时,若文件需要 K 个块,先顺序扫描位示图,找到 K 个相邻或者不相邻的 0,然后根据字号、位号算出对应的盘块号,将相应的盘块分配给文件,再将相应位设置为1。在回收时,根据回收的盘块号计算出对应的字号和位号,然后将相应的二进制位设置为0。

⑷成组链接法

空闲表法和空闲链表法不适合用于大型文件系统,因为空闲表或空闲链表可能会很大,UNIX 系统中采用成组链接法对磁盘空间进行管理。
文件卷的目录区专门有一个磁盘块作为超级块,当系统启动时需要将超级块读入内存,并且要保证内存与外存中的超级块数据一致。
超级块中保存了下一组空闲盘块数和空闲块号,其示意图如下图所示。

成组链接法分配时,需要先检查第一个分组的块数是否足够,如果有剩余,直接分配就可以,如果刚好够,需要将存放下一组信息的块信息复制到超级块中,然后将这一个分组中的块全部分配出去。在回收时,如果一个分组没满,直接链接到尾部即可,如果已满,需要将超级块中的数据复制到新回收的块中,并修改超级块的内容,让新回收的块成为第一个分组。
对文件存储空间管理这部分内容简单的总结一下,如下图所示。


六、文件的基本操作

创建文件:我们在点击新建按钮后,图形化交互进程在背后调用了“ create 系统调用”。
进行 create 系统调用时,需要提供所需的外存空间大小、文件的存放路径以及文件名等主要参数。
操作系统在处理 create 系统调用时,主要做了以下几件事:①在外存中找到文件所需的空间,可利用空闲表法、空闲链表法、位示图法以及成组链接法等策略找到空闲空间;②根据文件存放路径的信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项,目录项中包含了文件名、文件在外存中的存放位置等信息。
删除文件:我们在点击删除按钮后,图形化交互进程通过操作系统提供的“ delete 系统调用”,将文件数据从外存中删除。
进行 delete 系统调用时,需要提供文件的存放路径和文件名等主要参数。
操作系统在处理 delete 系统调用时,主要做了以下几件事:①根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项;②根据该目录项记录的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盘块;③从目录表中删除文件对应的目录项。
需要注意的是,如果待删除的文件已经被某个进程打开,此时删除的话是没办法删除的,系统会提示无法删除该文件,只有关闭了该文件以后才可以删除。
打开文件:在打开文件时,需要使用操作系统提供的“ open 系统调用”。
进行 open 系统调用时,需要提供文件的存放路径、文件名以及要对文件的操作类型等主要参数。
操作系统在处理 open 系统调用时,主要做了以下几件事:①根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项,并检查用户是否有指定的操作权限;②将目录项复制到内存中“打开文件表”中,并将对应表目的编号返回给用户,之后用户使用打开文件表的编号来指明要操作的文件。
关闭文件:在关闭文件时,需要使用操作系统提供的“ close 系统调用”。
操作系统在处理 close 系统调用时,主要做了以下几件事:①将进程的打开文件表相应表项删除;②回收分配给该文件的内存空间等资源;③系统打开文件表的打开计数器 count 进行减1操作,若 count = 0,则删除对应的表项。
读文件:在读文件时,需要使用操作系统提供的“ read 系统调用”,将文件数据从外存读入内存,并显示在屏幕上。
进程使用 read 系统调用完成读操作时,需要指明是哪个文件、要读入多少数据、读入的数据存放在什么位置,还会从读指针指向外存中,将用户指定大小的数据读入用户指定的内存区域中。
写文件:在写文件时,需要使用操作系统提供的“ write 系统调用”,将文件数据从内存写回外存。
进程使用 write 系统调用完成写操作时,需要指明是哪个文件、要写出多少数据、写回外存的数据存放在内存中的什么位置,还会从用户指定的内存区域中,将指定大小的数据写回写指针指向的外存。
对文件的基本操作这部分内容简单的总结一下,如下图所示。


七、文件共享与保护

1、文件共享

操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件。
文件共享有两种方式,即基于索引结点的共享方式和基于符号链的共享方式,前者是硬链接,后者是软链接。
需要注意的是,多个用户共享同一个文件,意味着系统中只有一份文件数据,并且只要某个用户修改了该共享文件的数据,其他用户也可以看到文件数据的变化。与复制不同的是,多个用户复制后会有好几份文件,其中一个用户修改了自己复制的那份文件并不会对其他用户的文件数据有所改变。

⑴基于索引结点的共享方式

索引结点是一种文件目录瘦身策略,由于检索文件时只需要用到文件名,因此可以将除文件名之外的其他信息放到索引结点中,这样目录项就只需要包含文件名和索引结点指针,如下图所示。

索引结点中设置了一个链接计数变量 count,用于表示链接到本索引结点上的用户目录项数,在 count 大于0时,说明还有用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空,在 count 为0时,系统负责删除文件。

⑵基于符号链的共享方式

基于符号链的共享方式中,User3 访问 ccc 文件时,操作系统判断文件 ccc 属于 Link 类型文件,于是会根据其中记录的路径层层查找目录,最终找到 User1 的目录中的 aaa 表项,于是就找到了文件1的索引结点,这类似于 Window s操作系统中的快捷方式。具体的示意图如下。

对文件共享这部分内容简单的总结一下,如下图所示。

2、文件保护

文件保护的目的就是保护文件数据的安全,文件保护有三种方式,即口令保护、加密保护以及访问控制。

⑴口令保护

口令保护是为文件设置一个口令,用户请求访问该文件时必须提供口令,口令一般存放在文件对应的 FCB 或者索引结点中。用户访问文件前需要先输入口令,操作系统会将用户提供的口令与 FCB 中存储的口令进行对比,如果正确就允许该用户访问文件。
口令保护的优点:保存口令的空间开销不多,验证口令的时间开销也很小。
口令保护的缺点:正确的口令存放在系统内部,不够安全。

⑵加密保护

加密保护是使用某个密码对文件进行加密,在访问文件时需要提供正确的密码才能对文件进行正确的解密。
一个简单的加密算法是异或加密,假设用于加密和解密的密码是 01001,加密前和加密后的结果如下图所示。

由上图可知,如果采用错误的解密密码,得到的结果和加密前的结果是不一样的。
加密保护的优点:保密性强,不需要在系统中存储密码。
加密保护的缺点:加密和解密需要耗费一定的时间。

⑶访问控制

访问控制是在每个文件的 FCB 或者索引结点中增加一个访问控制列表(ACL,Access-Control List),该表中记录了各个用户对该文件执行哪些操作。访问的类型和一个访问控制列表的例子如下图所示。

如果用户很多,访问控制列表可能会很大,可以用精简的访问列表解决这个问题。精简的访问列表以组为单位,标记各组用户对文件执行哪些操作,当用户想要访问文件时,系统会检查该用户所属的分组是否有相应的访问权限。一个简单的分组如下图所示。

如果想要让某个用户拥有读取权限,将其归为文件主的伙伴这一组即可。
对文件保护这部分内容简单的总结一下,如下图所示。


八、文件系统的层次结构

文件系统的层次结构及其各模块负责的主要功能如下图所示。

举一个例子来辅助记忆上图中文件系统的层次结构
假设某用户请求删除文件“D:/文件/信息.xlsx”的最后10条记录。
①用户需要通过操作系统提供的接口发出上述请求一一用户接口
②由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项一一文件目录系统
③不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限一一存取控制模块
④验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址一一逻辑文件系统与文件信息缓冲区
⑤知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址一一物理文件系统
⑥要删除这条记录,必定要对磁盘设备发出请求一一设备管理程序模块
⑦删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收一一辅助分配模块


总结

以上就是操作系统——文件管理的所有内容了,操作系统中对于文件的操作是常见且重要的,所以对于本文中文件管理相关的知识应当了解并掌握。
参考视频:
初识文件管理
文件的逻辑结构
文件目录
文件的物理结构1
文件的物理结构2
文件存储空间管理
文件的基本操作
文件共享
文件保护
文件系统的层次结构

操作系统——文件管理相关推荐

  1. 操作系统--文件管理知识整理(学秃liao)

    操作系统--文件管理超详细整理! 文件管理 文件系统基础 概念性:什么是文件和文件系统? 一系列定义 文件的基本操作(文件的使用) 文件的逻辑结构(4种) 目录结构 文件目录功能 文件控制块和索引结点 ...

  2. 操作系统文件管理_计算机民科笔记-操作系统week1

    FBI WARING [到处抄的,抄PPT和书上还有大佬博客的] 操作系统概述 操作系统做了什么? 比如启动一个程序,可以通过命令行,或者鼠标双击程序等方式来执行,操作系统在收到指令后,检查该程序是不 ...

  3. 操作系统文件管理之FCB

    操作系统的外存(主要指磁盘)管理模块根据各磁盘块的当前状态(忙和闲:磁盘管理程序可配置bitmap数据结构,用来统一表示各磁盘块忙闲情况)可分为两类,一是空闲磁盘块的调度管理,二是已占用了磁盘块的文件 ...

  4. 操作系统---文件管理

    目录 文件的逻辑结构 文件分类 文件的逻辑结构 顺序文件 索引文件 索引顺序文件 ​文件目录 文件控制块(FCB) 目录结构 单级目录结构 两级目录结构 多级目录结构(树形目录结构) 无环图目录结构 ...

  5. 操作系统——文件管理实验

    操作系统文件系统的机制 我们日常使用的windows系统的文件管理每天都执行着数次的写入与删除,当我们执行系统上的默认的删除的时候,操作系统只会对文件表进行修改,但其中的文件数据依旧存在,对此我们可以 ...

  6. 计算机操作系统-文件管理

    学习总结目录: 计算机操作系统-学习总结(操作系统引论) 计算机操作系统-学习总结(进程的描述与控制) 计算机操作系统-学习总结(处理机调度与死锁) 计算机操作系统-学习总结(存储器管理) 计算机操作 ...

  7. 操作系统——文件管理学习笔记

    文件是具有文件名的一组相关元素的集合,在文件系统中是一个最大的数据单位,它描述了一个对象集,每个文件都有一个文件名,用户通过文件名来访问文件. 文件的组成结构: 数据项组成记录,记录组成文件. 数据项 ...

  8. 808操作系统 文件管理

    文章目录 文件目录 文件控制块 索引节点 目录结构 单级目录结构 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c0ed4efe84ad4ac8aeb481be1f ...

  9. 操作系统-文件管理(上)

    初识文件管理 文件–就是一组有意义的信息/数据集合 文件的属性 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,**同一目录下不允许有重名文件**标识符:一个系统内的各个文件标识符唯一 ...

最新文章

  1. 仿麦包包首页table轮换图jQuery(转自www.jqueryba.com)
  2. elasticsearch 查看索引_ELK技术栈之ElasticSearch(一)
  3. 调用webservice查询手机号码归属地信息
  4. 数据中心气流管理的基础:密闭系统的比较
  5. RabbitMQ实现工作队列
  6. SQL Server大负载的生产环境下的性能优化:初识元数据优化
  7. MySQL 5.6.21 最新版的安装
  8. 浏览器Html 5兼容性测试
  9. nekohtml转换html时标签变大写的问题
  10. python实现任一均线选股
  11. Unity3D游戏开发之游戏模型制作:机器人
  12. 1447D Catching Cheaters
  13. Navicat使用指南(一)
  14. 无法挣脱的命运——《巴黎圣母院》读后感4000字
  15. OPENCV图像处理基础(五)鼠标事件画个框
  16. Matlab之Simulink子系统及模块封装
  17. jeston TX1/TX2 系统迁移至SD卡的正确步骤
  18. Win7下Netsh虚拟Wi-Fi
  19. R中的假设检验(四)卡方检验
  20. CNN(卷积神经网络)概述

热门文章

  1. iec104协议java_GitHub - wsan70/IEC104_microgrid: iec104协议主站客户端程序,属于微电网管理系统一部分...
  2. oracle完整建表,Oracle数据库建表完整sql
  3. 人工智能中的术语及缩略语
  4. eCognition9.0安装教程
  5. 用c语言编写打猎小游戏,使用c语言编写简单小游戏.docx
  6. Dalvik虚拟机垃圾收集(GC)过程分析
  7. 面向过程、面向对象 的模型和方法
  8. python编程入门第九讲_python 基础 19 习题9 讲解
  9. Map线程安全几种实现方法
  10. 常见的GNU汇编伪指令