419_文件系统的层次结构
# 4.1_9_文件系统的层次结构
各位同学大家好。在这个小节中我们会学习文件系统的层次结构,那文件系统从上至下可以分为这样的一些层次。
# 层次结构
我们首先来看最上面一层用户接口,它是最接近用户和应用程序的一个层次,因此用户接口这一层,它最主要要实现的功能就是要向上层提供一些简单易用的功能接口,并且要负责处理用户和应用程序提出的这些系统调用请求,就是咱们之前介绍过的 read right open close 等等这一系列的系统调用。所以其实用户接口这一层所要做的事情,就是咱们之前在文件的基本操作小节当中介绍的那些东西。
一般来说用户在访问一个文件的时候,都是先提供一个文件的路径,所以文件目录系统这个层次就需要通过用户提供的路径来一层一层的找到这个文件对应的 fcb,也就是完成一些查询目录等等一系列的工作。所有的和目录还有目录项相关的管理工作都是在文件目录系统这个层次来完成的,比如说管理活跃的文件目录表,还有管理打开文件表等等。因为其实打开一个文件,无非就是把那个文件对应的目录项复制到打开文件表当中,所以管理打开文件表,也应该属于文件的目录系统这个层次应该处理的事情。
找到了文件对应的 fcb 之后接下来是不是就可以直接访问文件了?其实不然为了保证文件数据的安全,还需要再验证一下这个用户是否拥有他所提出的那种访问权限。所以存取控制模块这个层次主要要完成的就是文件保护相关的功能。
在确定了用户对文件的访问权限之后,接下来的层次他会负责把用户提供的记录号转换成记录存放的一个逻辑地址,这个文件信息缓冲区是用来干嘛的呢?还记不记得咱们在之前讲文件的逻辑结构的时候,讲过一种逻辑结构叫做索引文件,如果采用的是索引文件这种逻辑结构的话,那么会为文件当中的各个记录建立一个索引表,那么为了查询到这些记录对应的逻辑地址就需要查询索引表,而在查询文件的索引表之前,就需要先把索引表调入到内存的文件信息缓冲区当中,所以这是文件信息缓冲区的一个功能。
当找到了记录对应的逻辑地址之后,接下来一步就是需要把这个逻辑地址转换成实际的物理地址。
如果说此时是往这个文件里再添加或者删除一些记录的话,那显然就有可能需要为这个文件新分配一些物理块,或者如果是删除一些记录的话,有可能需要回收一些文件本来占用的物理块,这是辅助分配模块所需要做的事情,也就是需要负责文件存储空间的管理,负责分配和回收存储空间。
咱们之前提到的所有的这一些准备,最后都是为了来操作外存,或者说磁盘上的一些数据,所以最后是需要由设备管理模块来负责和设备直接进行交互,因此设备管理模块也是最接近硬件的一个层次。那么所有的和硬件相关的一些管理工作,像分配设备、缓冲区、磁盘调度、启动磁盘、释放设备等等这些操作,都是要由设备管理模块来负责的,所以整个文件系统从上至下就分为了这样的一些层次。
# 小结
- 第一层用户接口这个层次需要做的事情,其实就是咱们在文件的基本操作小节当中介绍的那些内容,
- 而文件目录系统需要做的事情,其实就是咱们在文件目录小节介绍的那一系列内容,
- 而存取控制模块需要做的事情是咱们在文件保护小节所介绍的内容,
- 逻辑文件系统和文件信息缓冲区这个层次需要做的事情,是咱们在文件的逻辑结构小节介绍的内容
- 物理文件系统所需要做的事情是咱们在文件的物理结构小节所介绍的那些事情。
- 而辅助分配模块所需要完成的这些工作,是咱们在文件的存储空间管理小节所介绍的那些内容。
- 而设备管理模块所需要做的事情是咱们在之后磁盘管理相关的那些小节当中会介绍的内容。
同学们需要记住这些层次结构,不过其实并不需要死记硬背,我们只需要用一个例子来辅助记忆就可以了。
- 假设此时某个用户要请求删除学生信息 Excel 表里的最后的 100 个记录,这件事情怎么完成?
- 首先用户肯定是需要通过操作系统提供的接口来发出这个请求,所以这儿就用到了第一层,也就是用户接口。
- 第二,由于用户在操作文件的时候提供的是文件的存放路径信息,所以接下来需要一层一层的查找目录,找到对应的目录项,这就用到了第二层的功能文件目录系统。
- 接下来再找到了这个文件对应的 fcb 或者是索引节点之后,操作系统还需要验证用户对这个文件是否有删除记录这种操作的权限,这个事情就需要由第三个层次存取控制模块或者叫存取控制验证层来负责完成。
- 第四,在确定了用户有这种操作的权限之后,需要把用户提供的记录号把它转变为对应的逻辑地址,这就需要第四个层次的帮助,就是逻辑文件系统与文件信息缓冲区
- 在这个层次得到了这些记录对应的逻辑地址之后,接下来就需要把这些逻辑地址,转换成实际的物理地址,这就需要下面一层物理文件系统的帮助。
- 只要我们知道了这些记录的物理地址,我们就可以做到删除这些记录这件事情,在删除这些记录的时候,最后必定肯定还是要和磁盘设备打交道,所以这就需要设备管理程序模块的帮助。
- 最后如果这些记录删除了之后,出现了一些空闲的磁盘块,那么这些磁盘块就需要进行一个回收的处理,这就需要辅助分配模块的帮助。
所以我们可以用这样的一个例子来辅助记忆整个文件系统的层次结构。咱们的王道书上也给出了另外一种分析方式,那种分析方式其实也是很好的,大家也可以再回归课本再看一下