Loading

虚拟文件系统和文件系统的挂载

虚拟文件系统

虚拟文件系统(VFS)屏蔽了不同文件系统的差异和操作细节,向上为用户提供了文件操作的统一调用接口,如图 4.24 所示。当用户程序访问文件时,通过 VFS 提供的统一调用函数(如open()等)来操作不同文件系统的文件,而无须考虑具体的文件系统和实际的存储介质。

img

虚拟文件系统采用了面向对象的思想,它抽象出一个通用的文件系统模型,定义了通用文件系统都支持的接口。新的文件系统只要支持并实现这些接口,即可安装和使用。为了实现虚拟文件系统,系统抽象了四种对象类型。每个对象都包含数据和函数指针,这些函数指针指向操作这些数据的文件系统的实现函数。这四种对象类型如下

  • 超级块对象

    • 表示一个已安装(或称挂载)的特定文件系统。超级块对象对应于磁盘上特定扇区的文件系统超级块,用于存储已安装文件系统的元信息。其操作方法包含一系列可在超级块对象上调用的操作函数,主要有分配 inode、销毁 inode、读 inode、写 inode 等。
  • 索引节点对象

    • 表示一个特定的文件。索引节点和文件是一对一的关系。只有当文件被访问时,才在内存中创建索引节点对象,每个索引节点对象都会复制磁盘索引节点包含的一些数据。索引节点对象还提供许多操作函数,如创建新索引节点、创建硬链接、创建新目录等。
  • 目录项对象

    • 表示一个特定的目录项。目录项对象是一个路径的组成部分,它包含指向关联索引节点的指针,还包含指向父目录和指向子目录的指针。不同于前面两个对象,目录项对象在磁盘上没有对应的数据结构,而是 VES 在遍历路径的过程中,将它们逐个解析成目录项对象的。
  • 文件对象

    • 表示一个与进程相关的已打开文件。可以通过调用 open()打开一个文件,通过调用 close()关闭一个文件。文件对象和物理文件的关系类似于进程和程序的关系。文件对象仅是进程视角上代表已打开的文件,它反过来指向其索引节点。文件对象包含与该文件相关联的目录项对象,包含该文件的文件系统、文件指针等,还包含在该文件对象上的一系列操作函数。

img

img

文件系统挂载

img

如文件在使用前要打开那样,文件系统在进程使用之前必须先安装,也称挂载(Mounting)。将设备中的文件系统挂载到某个目录后,就可通过这个目录来访问设备上的文件。注意,这里的设备指的是逻辑上的设备,如一个磁盘上的不同分区都可视为不同的设备。Windows 系统维护一个扩展的两级目录结构,用驱动器字母表示设备和卷。卷具有常规树结

img

posted @ 2024-10-20 22:07  AH20  阅读(9)  评论(0编辑  收藏  举报