跳转至

第5章 文件系统与 I/O

内存断电即失,而存储设备速度慢、接口异步、故障模式复杂。文件系统把块设备抽象成可命名、可共享、可持久化的文件与目录;I/O 子系统则用缓存、队列、中断和 DMA 隐藏设备细节并提高并行度。

两条相互交织的主线

命名与持久化:路径 -> 目录项 -> inode -> 文件数据块

数据传输:系统调用 -> 页缓存 -> 块层 -> 驱动 -> 控制器 -> 设备

文件系统关注“数据是什么、叫什么、崩溃后还是否一致”;设备子系统关注“请求怎样排队、怎样传输、完成后怎样通知”。一次真实文件 I/O 会同时经过两条主线。

小结目录

学完应能回答

  • 文件描述符为什么只是进程局部整数,而不是磁盘文件本身?
  • 删除一个仍被进程打开的文件时,空间为什么不一定立刻释放?
  • 只保证元数据日志与保证数据日志有何不同?
  • 阻塞 I/O 与同步 I/O是否是同一个维度?
  • DMA 为什么减少 CPU 搬运,却不等于完全不消耗 CPU?

关于性能的提醒

“磁盘慢”只是一个粗略判断。性能瓶颈可能位于路径解析、锁竞争、页缓存缺失、脏页回写、请求合并、设备队列、网络文件系统或应用访问模式。诊断时应沿层次逐步取得证据,而不是一看到 I/O 延迟就立即归因于硬件。