Skip to content

目录

考情分析

目录在 408 真题中累计考查约 24 分(2009-2026),属于 🔥🔥 中高频考点。常考目录结构的演进、路径解析过程及其磁盘 I/O 次数计算。

磁盘上存了成千上万个文件,怎么通过一个文件名找到它的数据在哪?目录就是文件系统的"索引"——从文件名到物理位置的桥梁。

目录的本质

目录本质上是一种特殊的文件,它的内容是一张目录项的表。每个目录项记录了一个文件(或子目录)的名称和其他信息的映射。目录就像图书馆的分类目录卡——通过书名找到书架号和层号。

在使用 inode 的文件系统中,目录项的格式非常简洁:

目录项 = (文件名, inode 号)

目录结构的演进

单级目录

整个系统只有一个目录,所有文件都在这个目录中。

根目录
├── file_a
├── file_b
├── file_c
└── file_d

优点:实现简单

缺点:不允许文件重名;文件数量多时检索慢;不支持多用户

两级目录

第一级是主文件目录(MFD),每个用户对应一个条目;第二级是用户文件目录(UFD),存放该用户的所有文件。

MFD
├── 用户A → UFD_A
│            ├── file_a
│            └── file_b
└── 用户B → UFD_B
             ├── file_a  ← 不同用户可以同名
             └── file_c

优点:不同用户可以有同名文件;一定程度上实现了访问控制

缺点:不能对文件分类管理;缺乏灵活性

树形目录(多级目录)

将目录组织成一棵,允许用户在目录下创建子目录,形成层次结构。这是现代操作系统的标准做法。

/(根目录)
├── home/
│   ├── alice/
│   │   ├── docs/
│   │   │   └── report.txt
│   │   └── code/
│   │       └── main.c
│   └── bob/
│       └── data.csv
└── etc/
    └── config.ini

路径名

类型说明示例
绝对路径从根目录开始的完整路径/home/alice/docs/report.txt
相对路径从当前目录开始的路径docs/report.txt(当前在 /home/alice

路径解析过程(以 /home/alice/docs/report.txt 为例):

  1. 从根目录 / 的 inode 开始
  2. 读取根目录的数据块,找到 home 对应的 inode
  3. 读取 home 目录的数据块,找到 alice 对应的 inode
  4. 读取 alice 目录的数据块,找到 docs 对应的 inode
  5. 读取 docs 目录的数据块,找到 report.txt 对应的 inode
  6. 读取文件的 inode 获取文件信息

每一级需要两次磁盘 I/O(读 inode + 读数据块),因此解析深度为 n 的路径需要约 2n 次磁盘 I/O。

当前目录的作用

使用相对路径可以减少目录检索次数,这也是「当前工作目录」存在的意义。

磁盘 I/O 次数例题

系统采用 Unix 风格 inode + 数据块。根目录的 inode 已经常驻内存(系统启动时加载),其他 inode 都在磁盘上。要打开 /usr/local/bin/cc,需要多少次磁盘 I/O?

逐级数:

步骤读什么I/O 次数
1根目录 inode 已在内存0
2读根目录的数据块(找 usr1
3usr 的 inode1
4usr 的数据块(找 local1
5local 的 inode1
6local 的数据块(找 bin1
7bin 的 inode1
8bin 的数据块(找 cc1
9cc 的 inode(用于后续 read/write)1
合计8 次

通用公式:根 inode 在内存时,解析深度 n 的路径(含最终文件名)= 2n 次磁盘 I/O;根 inode 也要读时 = 2n+1 次。

选择题陷阱

  • 「打开文件」算到读 inode 为止不包含读数据——访问数据是后续 read() 的事
  • 设置当前工作目录后,相对路径少算前面所有公共前缀,常被设为减半场景
  • 一个目录的数据块若需要多个磁盘块,可能要追加 I/O(小目录通常 1 块即可)

无环图目录

在树形目录基础上,允许多个目录项指向同一个文件或子目录,从而实现文件共享。目录结构从「树」变成了「有向无环图(DAG)」。

上图中 alice/report.txtshared/report.txt 指向同一个文件(通过硬链接或软链接实现)。

引入的问题

  • 删除文件时不能简单地回收空间(可能还有其他链接指向它)
  • 遍历目录时需要避免重复访问
  • 需要防止形成环(否则遍历会死循环)

交互可视化

加载可视化中...

目录操作

操作说明
搜索根据文件名在目录中查找对应的目录项
创建文件在目录中增加一个目录项
删除文件从目录中删除一个目录项
创建目录创建子目录(初始包含 ...
删除目录目录为空时才能删除
遍历目录列出目录中的所有文件和子目录

目录的实现

目录项在磁盘块中的组织方式:

方式说明检索效率
线性表目录项顺序存放,线性查找O(n)
哈希表文件名通过哈希函数映射到目录项O(1) 均摊

考研高频考点

  • 🔥🔥🔥 解析一个绝对路径需要多少次磁盘 I/O
  • 🔥🔥🔥 树形目录结构的特点(层次分明、路径唯一)
  • 🔥🔥 四种目录结构的演进及各自优缺点
  • 🔥🔥 绝对路径与相对路径的区别
  • 🔥 无环图目录中文件共享带来的删除问题

无环图目录中多个路径可以指向同一个文件,这就是"文件共享"。下一篇来看实现共享的两种具体方式——硬链接和软链接。

真题练习

相关真题(7题)

2017Q29选择题2分

逻辑格式化:建立根目录和初始化空闲块管理结构,分区和扇区格式属于物理格式化

2013Q23选择题2分

删除文件:删除目录项、FCB和释放缓冲区,但不会删除所在目录

2012Q46综合题8分

### (1)纯直接索引:算块号位宽 + 最大文件长度

2011Q46综合题7分

### (1)选哪种文件分配方式?

2010Q31选择题2分

文件访问控制:存储在文件控制块(FCB/inode)中

2009Q30选择题2分

多级索引:4×256B+2×64×256B+1×64×64×256B=1057KB

文件基本概念目录管理
2009Q31选择题2分

当前工作目录:使用相对路径加快检索速度