4.2 文件系统

4.2 文件系统的结构与虚拟文件系统

1. 文件系统的层次结构(了解即可)

  • 用一个例子来辅助记忆文件系统的层次结构:
    • 假设某用户请求删除文件“D:/工作目录/学生信息.xIsx"的最后100条记录
      • 1. 用户需要通过操作系统提供的接口发出上述请求 -- 用户接口
        • 文件的基本操作 章节相关内容
      • 2. 由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项 -- 文件目录系统
        • 文件目录 章节相关内容
      • 3. 不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限-- 存取控制模块(存取控制验证层)
        • 文件保护 章节相关内容
      • 4. 验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址 -- 逻辑文件系统与文件信息缓冲区
        • 文件的逻辑结构 章节相关内容
      • 5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址 -- 物理文件系统
        • 文件的物理结构 章节相关内容
      • 6. 要删除这条记录,必定要对磁盘设备发出请求 -- 设备管理程序模块
        • 设备管理 章节相关内容
      • 7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收 -- 辅助分配模块
        • 文件存储空间管理 章节相关内容

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-文件系统/
作者
Binbo
发布于
2024年11月21日
许可协议