4.2 文件系统
4.2 文件系统的结构与虚拟文件系统
1. 文件系统的层次结构(了解即可)
- 用一个例子来辅助记忆文件系统的层次结构:
- 假设某用户请求删除文件“D:/工作目录/学生信息.xIsx"的最后100条记录
- 1. 用户需要通过操作系统提供的接口发出上述请求 --
用户接口
- 文件的基本操作 章节相关内容
- 2.
由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项
-- 文件目录系统
- 文件目录 章节相关内容
- 3.
不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限--
存取控制模块(存取控制验证层)
- 文件保护 章节相关内容
- 4.
验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址
-- 逻辑文件系统与文件信息缓冲区
- 文件的逻辑结构 章节相关内容
- 5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址 --
物理文件系统
- 文件的物理结构 章节相关内容
- 6. 要删除这条记录,必定要对磁盘设备发出请求 --
设备管理程序模块
- 设备管理 章节相关内容
- 7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收 --
辅助分配模块
- 文件存储空间管理 章节相关内容
- 1. 用户需要通过操作系统提供的接口发出上述请求 --
用户接口
- 假设某用户请求删除文件“D:/工作目录/学生信息.xIsx"的最后100条记录
2. 文件系统的全局结构(布局)
2.1 磁盘出厂到文件系统建立的过程:
1. 原始磁盘
2. 低级格式化(物理格式化)
- 划分扇区,检测坏扇区,并用备用扇区替换坏扇区
3. 磁盘分区(分卷,Volume)
- 将磁盘分区, 每个分区由若干柱面组成(即分为我们熟悉的 C盘、D盘、E盘)
4. 逻辑格式化
完成各分区的文件系统初始化
i结点区 :索引结点存放区域
注:逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据
2.2 文件系统在内存中的结构
2.3 open 系统调用打开文件背后的过程
3. 虚拟文件系统&文件系统挂载(安装)
3.1 普通的文件系统
- 不同的存储设备中的文件系统有可能是不同的,提供的系统调用接口也不同
3.2 虚拟文件系统(VFS)
虚拟文件系统的特点:
- 向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
- VFS要求下层的文件系统必须实现某些规定的函数功能,一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
- 如:open/read/write
- 每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统
存在的问题:不同的文件系统,表示文件数据结构各不相同。打开文件后,其在内存中的表示就不同
- 注意:vnode只存在于主存中,而inode既会被调入主存,也会在外存中存储
打开文件后,创建vnode,并将文件信息复制到vnode中,vnode的功能指针指向具体文件系统的函数功能
3.3 文件系统挂载(mounting)
- 即文件系统安装/装载 -- 如何将一个文件系统挂载到操作系统中?
- 文件系统挂载要做的事:
- 在VFS中注册新挂载的文件系统,内存中的挂载表(mounting table)包含每个文件系统的相关信息,包含文件系统类型、容量大小等
- 新挂载的文件系统,要向VFS提供一个函数地址列表
- 将新文件系统加到挂载点(mount point),也就是将新文件系统挂载在某个父目录下
- 文件系统挂载要做的事:
4.2 文件系统
http://binbo-zappy.github.io/2024/11/21/操作系统/4-3-文件系统/