首页/操作系统/04-file/文件系统实现和磁盘组织 🔗 在 Obsidian 中打开
操作系统 · 04-file

文件系统实现和磁盘组织

重要度 ⭐⭐ 难度 ⭐⭐⭐⭐考查频率 低 操作系统/文件管理文件系统磁盘组织文件分配目录结构索引节点文件控制块空闲空间管理
速查
文件系统把逻辑文件映射到物理磁盘:磁盘 inode 存元数据(不含文件名),目录项 = 文件名 + inode 号;分配有连续 / 链接(FAT)/ 索引;磁盘调度用 SCAN(电梯)等算法优化寻道时间。文件大小上限取决于分配方式与指针数。

速查

项目
核心概念文件系统将逻辑文件映射到物理磁盘,涉及文件分配、目录管理、空闲空间管理
关键性质磁盘 inode 存元数据(不含文件名);目录项 = 文件名 + inode 号
磁盘调度SCAN(电梯算法)最常用,优化寻道时间

FCB / 索引节点(inode)

FCB(文件控制块):每个文件对应一个 FCB,含文件名、大小、类型、时间、权限、物理位置(磁盘块号)。

inode(Unix/Linux 优化)

  • 磁盘 inode:存文件元数据,不含文件名
  • 内存 inode:打开文件时调入内存。
  • 文件名存于目录项中,目录项 = 文件名 + inode 号
  • 优点:目录项变小(只需文件名 + inode 号),减少磁盘 I/O。

文件分配方式

方式优点缺点
连续分配顺序 / 随机都快,实现简单外部碎片,文件不易扩展
链接分配无外部碎片,可动态增长只能顺序访问,指针占空间
FAT链接指针集中,支持随机访问FAT 表占空间,大磁盘很大
索引分配支持随机访问,无外部碎片索引块开销,大文件需多级索引

索引分配的 inode 含:直接指针(约 12 个)+ 一次间接 + 二次间接 + 三次间接;文件最大大小 = 直接块 + 各级索引块能指向的数据块之和。

目录结构

类型说明
单级目录所有文件在一个目录,不支持重名
两级目录主文件目录 MFD + 用户文件目录 UFD
树形目录多级层次结构,支持路径名
无环图目录支持共享文件(链接)

磁盘调度算法

交互动画见本节末尾下方有一张可逐步播放的磁盘调度演示,建议先看动画再读表。
算法原理特点
FCFS先来先服务公平但移动距离大
SSTF最短寻道时间优先平均寻道短,可能饥饿
SCAN(电梯)单向扫描到头再反向不会饥饿,寻道好
C-SCAN单向扫描,到头回起点等待更均匀
LOOK到最远请求即反向(不扫到端点)SCAN 的优化

易错点

注意
  • inode 不包含文件名,文件名在目录项中。
  • 索引分配中,直接指针和间接指针的计算别搞混。
  • SCAN 与 C-SCAN 区别:SCAN 到头后反向,C-SCAN 回到起点。
  • FAT 是链接分配的变体,不是独立的分配方式。

核心结论

必背
  1. 连续分配适合只读文件,链接分配适合顺序访问,索引分配最灵活。
  2. inode 是文件系统的核心数据结构,不含文件名。
  3. 磁盘调度中 SCAN(电梯算法)最常用。
  4. 文件大小限制取决于分配方式和指针数量(多级索引可扩大上限)。

记忆卡片

三种文件分配方式各有什么特点?
连续→支持随机但有外碎片;链接→无外碎片但只能顺序访问;索引→随机访问且灵活,但需额外索引块。
inode 是什么?作用?
文件系统的核心数据结构,存文件元数据(大小、权限、时间戳、数据块指针),是文件唯一标识。
SCAN 电梯算法原理?
磁头沿一个方向移动,依次处理途经请求,到末端后反向,类似电梯。
链接分配如何实现随机访问?
基本链接无法随机;FAT 将链接信息集中存于内存表,可实现随机访问。
文件大小限制取决于什么?
取决于分配方式和指针数——多级索引可扩大文件大小上限。

交互动画 · 磁盘调度算法对比

0 50 100 150 200 请求序列:98,183,37,122,14,124,65,67 起始磁道 53
请选择调度算法并开始播放
磁头移动距离将随服务顺序变化;SCAN/C-SCAN 明显优于 FCFS。

相关知识点

filesystem-implementation inode-detail disk-scheduling-algorithm

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。