操作系统第 4 章:文件管理总览
这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。
第 4 章只回答一个问题:磁盘只提供”按块号取数据”,而用户要的是”按名字取数据”,这中间的一整套翻译怎么做。
三节恰好是这套翻译的三层:
4.1 定义”文件”这个抽象,并解决”名字 → 数据块”的最后一跳(物理结构)→ 4.2 解决”路径名 → 文件”的检索(目录)→ 4.3 把这一切放到真实磁盘上(布局、空闲空间、VFS、挂载)
章节导航
4.1 文件系统基础 ✅
| 节 | 页面 | 一句话 |
|---|
| 4.1.1 | 文件的基本概念 | 特殊文件的读写落到设备驱动,根本不碰磁盘 |
| 4.1.2 | 文件控制块和索引节点 | 引入 inode 只为减少检索目录的读盘次数;inode 里没有文件名 |
| 4.1.3 | 文件的操作 | 读写指针在进程表,打开计数在系统表;open 只读属性 |
| 4.1.4 | 文件的逻辑结构 | 有结构的判据是系统知不知道记录边界;顺序文件 ≠ 连续分配 |
| 4.1.5 | 文件的物理结构 | FAT 按物理簇号索引且要追链,索引表按逻辑块号索引可直取 |
| 4.1.6 | 文件保护 | 删除文件看父目录的 w,与文件自身权限无关 |
4.2 目录 ✅
| 节 | 页面 | 一句话 |
|---|
| 4.2.1 | 目录的基本概念 | 目录管理四要求各自催生后面一节;目录映射的终点是 FCB 不是数据块 |
| 4.2.2 | 目录的操作 | 更名只改目录项,与文件大小无关 |
| 4.2.3 | 目录结构 | 树形不便共享的根因是”树只允许一个父节点”;树形目录 ≠ B+ 树 |
| 4.2.4 | 目录实现 | 目录结构与目录实现是两层;工具显示的目录是渲染结果 |
| 4.2.5 | 文件共享 | 硬链接靠 inode 号、符号链接靠路径名——差别全由此推出 |
4.3 文件系统 ✅
| 节 | 页面 | 一句话 |
|---|
| 4.3.1 | 文件系统结构 | 逻辑块号→物理块号 和 空闲空间管理都归文件组织模块 |
| 4.3.2 | 文件系统布局 | 布局顺序由启动依赖链决定;引导块里是代码,超级块里是数据 |
| 4.3.3 | 文件存储空间管理 | 位示图先定三个编号起点;成组链接把下一组清单藏在空闲块里 |
| 4.3.4 | 虚拟文件系统 | VFS 不是一种文件系统;vnode 在主存、有功能指针 |
| 4.3.5 | 文件系统挂载 | 挂载点原有内容被遮蔽但未删除;格式化改磁盘、挂载改内存 |
本章高频边界
| 边界 | 判据 | 在哪 |
|---|
| 普通 / 目录 / 特殊文件 | 读写最终落到数据块还是设备驱动 | 4.1.1 |
| 目录项 vs FCB vs inode | 系统用不用索引节点 | 4.1.2 |
| inode 总数 vs 单文件长度 | 个数管文件数,内部结构管文件大小 | 4.1.2 |
| 读写指针放哪 | 属于”这一次打开”还是”这个文件” | 4.1.3 |
| fd vs inode 号 | 作用域:本进程 vs 整个文件系统 | 4.1.3 |
| 截断 vs 删除 | 删除还要抹掉目录项 | 4.1.3 |
| 逻辑结构 vs 物理结构 | 用户怎么看 vs 磁盘怎么放 | 4.1.4 |
| 顺序文件 vs 连续分配 | 同名异层,互不限定 | 4.1.4 |
| 隐式 vs 显式链接 | 指针在数据块里还是在内存的 FAT 里 | 4.1.5 |
| 显式链接 vs 索引分配 | 按物理簇号索引 vs 按逻辑块号索引 | 4.1.5 |
| 口令保护 vs 加密保护 | 密码存不存在系统里 | 4.1.6 |
| 文件权限 vs 目录权限 | 同样的 rwx,含义毫无关系 | 4.1.6 |
| 文件目录 vs 目录文件 | 内容 vs 载体 | 4.2.1 |
| 目录操作 vs 文件操作 | 同名动作,改目录项 vs 改数据块 | 4.2.2 |
| 树形目录 vs B+ 树 | 命名空间形状 vs 单目录内部索引 | 4.2.3 |
| 无环图 vs 通用图 | 有没有环;环使引用计数失效 | 4.2.3 |
| 目录结构 vs 目录实现 | 命名空间 vs 单个目录内部,可任意组合 | 4.2.4 |
| 硬链接 vs 符号链接 | 靠 inode 号 vs 靠路径名 | 4.2.5 |
| 链接计数 vs 打开计数 | 持久状态 vs 运行期状态;都为 0 才回收 | 4.2.5 |
| 逻辑文件系统 vs 文件组织模块 | 名字与属性 vs 地址与空间 | 4.3.1 |
| 操作系统缓存 vs 设备自带缓存 | 谁管理、在哪一侧 | 4.3.1 |
| MBR vs 引导块 vs 超级块 | 整盘 1 个 / 每分区 1 个 / 代码 vs 数据 | 4.3.2 |
| 文件区 vs 对换区 | 求”省” vs 求”快” | 4.3.3 |
| 谁能管空闲块 | 能回答”整盘哪些块空着”的才算 | 4.3.3 |
| vnode vs inode | 主存有功能指针 vs 外存无 | 4.3.4 |
| 挂载 vs 格式化 | 改内存 vs 改磁盘 | 4.3.5 |
计算模板
| 题型 | 步骤 | 在哪 |
|---|
| 目录检索平均次数 | ① 一块几个目录项 ② 共几块 ③ 除以 2 | 4.1.2 |
| 记录成组定位 | → 块号 → 块内 | 4.1.4 |
| 启动磁盘几次 | ① 用成组定位到第几块 ② 用物理结构算定位开销 ③ 加写回 | 4.1.4 |
| 混合索引落在哪级 | ① ② 比区间 ③ 算层内下标 | 4.1.5 |
| 最大文件大小 | ,其中 | 4.1.5 |
| FAT 三问 | 先统一块/簇/字节/位 → 最大簇数 → 表项位数 → 表大小 | 4.1.5 |
| 位示图定位 | ① 块号→序数 ② 字号 、位号 | 4.3.3 |
| 位图占多少空间 | 容量 ÷ 分配单位 → bit → B → 簇(逐格写,不跳步) | 4.3.3 |
复习顺序
- 4.1.1:立住”文件是抽象”这一点,重点是普通/目录/特殊文件的划分依据。
- 4.1.2:全章最重要的一节之一。理解”为什么要把 FCB 拆成目录项 + inode”,后面的目录检索、硬链接全是它的推论。
- 4.1.3:两级打开文件表。读写指针为什么必须在进程表,这个”为什么”比结构本身更常考。
- 4.1.4:先把逻辑结构与物理结构是两层这条边界钉死,再记四类有结构文件。
- 4.1.5:本章计算题主战场。按”连续 → 隐式链接 → 显式链接 → 索引 → 混合索引”的顺序读,
每一种都是在补上一种的缺陷,不需要背。
- 4.1.6:内容不多但陷阱集中。“删除文件看父目录权限”必须记住。
- 4.2.1 → 4.2.2:篇幅小,但”目录管理四要求”是后面三节的纲,先立住。
- 4.2.3:按演进链读(不能重名 → 能重名不能共享 → 层次清楚仍难共享 → 能共享但删除复杂),
四种结构的优缺点全是推出来的。树形目录 ≠ B+ 树要单独记。
- 4.2.4:与 4.2.3 成对——一个讲命名空间,一个讲单目录内部。
- 4.2.5:本节全部考点都从”硬链接靠 inode 号、符号链接靠路径名”这一句推出,
包括能否跨文件系统、能否指向目录、会不会悬空、开销大小。
- 4.3.1:只需记牢一条分界——逻辑文件系统管名字与属性,文件组织模块管地址与空间。
- 4.3.2:不要当区域清单背。按”开机后系统怎样一步步找到你的文件”读一遍,顺序自然就记住了。
- 4.3.3:本章第二个计算密集区。位示图题动笔前先确认三个编号起点;
成组链接法抓住两个临界动作( 先读入再分配、栈满时新回收块当组长)。
- 4.3.4 → 4.3.5:VFS 与挂载是一件事的两面——前者定义”怎么接”,后者是”接上去”的那一步。
链接
- 📖 名词库:第 4 章名词库
- 📜 原始提问档案:第 4 章 原始提问档案(本地资料)(41 条,按节号归位)
- ⬅️ 上一章:第 3 章:内存管理
- 🏗️ 重构施工文档:OS + 计组 笔记体系重构计划(本地资料)