江小南

V1

2023/05/08阅读:19主题:萌绿

【操作系统】文件系统的层次结构、全局结构、虚拟文件系统&文件系统挂载

1. 文件系统的层次结构

假设某用户请求删除文件“D:/工作目录/学生信息.xIsx"的最后100条记录。

  1. 用户需要通过操作系统提供的接口发出上述请求——用户接口
  2. 由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项——文件目录系统
  3. 不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限——存取控制模块(存取控制验证层)
  4. 验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址——逻辑文件系统与文件信息缓冲区
  5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址——物理文件系统。
  6. 要删除这条记录,必定要对磁盘设备发出请求——设备管理程序模块
  7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收——辅助分配模块

2. 文件系统的全局结构(布局)

原始的磁盘 物理格式化后的磁盘 物理格式化,即低级格式化——划分扇区,检测坏扇区,并用备用扇区替换坏扇区。

逻辑格式化后

逻辑格式化后,磁盘分区(分卷Volume),完成各分区的文件系统初始化。

注:逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据

文件系统在内存中的结构

注:近期访问过的目录文件会缓存在内存中,不用每次都从磁盘读入,这样可以加快目录检索速度。

open系统调用打开文件的背后过程

3. 虚拟文件系统

1. 普通文件系统

2. 虚拟文件系统

虚拟文件系统的特点:

  1. 向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异。
  2. VFS要求下层的文件系统必须实现某些规定的函数功能,如: open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求。

思考:不同的文件系统,表示文件数据结构各不相同。打开文件后,其在内存中的表示就不同。如何解决?

  1. 每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统。

注意: vnode只存在于主存中,而inode既会被调入主存,也会在外存中存储。

打开文件后,创建vnode,并将文件信息复制到vnode中,vnode的功能指针指向具体文件系统的函数功能。

3. 文件系统挂载(mounting)

文件系统挂载(mounting),即文件系统安装/装载。

文件系统挂载要做的事:

  1. 在VFS中注册挂载的文件系统。内存中的挂载表(mount table)包含每个文件系统的相关信息,包括文件系统类型、容量大小等。
  2. 新挂载的文件系统,要向VFS提供一个函数地址列表。
  3. 将新文件系统挂载到挂载点(mount point),也就是将新文件系统挂载到某个父目录下。

分类:

后端

标签:

操作系统

作者介绍

江小南
V1