Appearance
文件系统的全局结构
考情分析
文件系统全局结构在 408 真题中偶有考查,主要以选择题形式出现,考查磁盘各区域的作用。属于 🔥 中频考点。
前面分别讲了 inode、目录、物理结构、空闲管理,这些组件在磁盘上是怎么排列在一起的?本篇把它们拼成一张完整的全局布局图。
文件系统的层次结构
文件系统的实现采用分层设计,从上到下各层的职责为:
| 层次 | 职责 |
|---|---|
| 用户接口 | 提供 open/read/write/close 等系统调用 |
| 文件目录系统 | 管理目录,将文件名转换为 FCB/inode |
| 存取控制模块 | 验证访问权限 |
| 逻辑文件系统 | 将逻辑地址转换为物理地址 |
| 物理文件系统 | 管理磁盘块的分配和回收 |
| 设备驱动程序 | 与磁盘硬件交互 |
磁盘的全局布局
一个磁盘通常划分为多个分区(partition),每个分区可以包含一个独立的文件系统。
磁盘整体结构
┌─────────────┬───────────┬───────────┬──────────┐
│ MBR │ 分区1 │ 分区2 │ 分区3 │
│ (主引导记录) │(文件系统1)│(文件系统2)│(交换区) │
└─────────────┴───────────┴───────────┴──────────┘- MBR(Master Boot Record):位于磁盘最前端,包含引导程序和分区表。MBR 就像一栋大楼的总平面图——告诉你每层(分区)从哪开始、到哪结束
- 分区表:记录各分区的起始位置和大小
单个分区的内部布局
┌────────┬────────┬──────────┬───────────┬──────────────┐
│引导块 │ 超级块 │空闲空间管理│ inode 区域 │ 数据块区域 │
│(Boot │(Super │(位图/链表)│(inode │ (Data │
│ Block) │ Block) │ │ Table) │ Blocks) │
└────────┴────────┴──────────┴───────────┴──────────────┘| 区域 | 内容 | 说明 |
|---|---|---|
| 引导块 | 引导程序 | 每个分区的起始位置,用于启动该分区上的OS |
| 超级块 | 文件系统元信息 | 文件系统类型、块大小、块数量、空闲块数、inode 数等 |
| 空闲空间管理 | 位图或链表 | 记录哪些磁盘块/inode 是空闲的 |
| inode 区域 | inode 表 | 存放所有 inode,按编号排列 |
| 数据块区域 | 文件数据 | 存放目录和文件的实际数据 |
超级块
超级块是文件系统中最关键的数据结构之一,包含了文件系统的全局管理信息:
| 字段 | 说明 |
|---|---|
| 魔数(Magic Number) | 标识文件系统类型(如 ext4 的魔数是 0xEF53) |
| 块大小 | 磁盘块的大小(如 1KB、4KB) |
| 总块数 | 文件系统中磁盘块的总数 |
| 空闲块数 | 当前空闲的磁盘块数量 |
| 总 inode 数 | inode 的总数 |
| 空闲 inode 数 | 当前空闲的 inode 数量 |
| 根目录 inode | 根目录的 inode 编号 |
超级块在文件系统挂载时读入内存,操作过程中在内存中修改,卸载时写回磁盘。超级块就像一本书的"出版信息页"——记录了总页数、章节数、已用页数等全局统计信息。
超级块损坏
超级块如果损坏,整个文件系统将无法使用。因此很多文件系统会在磁盘上保存超级块的多个副本。
内存中的文件系统结构
文件系统挂载后,以下数据结构会被加载到内存中:
| 数据结构 | 说明 |
|---|---|
| 内存超级块 | 超级块的内存副本 |
| 内存 inode 表 | 已打开文件的 inode 缓存 |
| 系统打开文件表 | 所有已打开文件的信息 |
| 进程打开文件表 | 每个进程自己的打开文件列表 |
| 目录缓存 | 最近访问过的目录信息 |
考研高频考点
- 🔥🔥 磁盘分区的内部布局(引导块/超级块/inode区/数据区)
- 🔥🔥 超级块的内容和作用
- 🔥 文件系统的层次结构(从系统调用到设备驱动)
- 🔥 MBR 和分区表的作用
磁盘布局中有一块专门用于"空闲空间管理",下一篇来看操作系统是如何跟踪哪些磁盘块是空闲的。