Skip to content

408

操作系统

OS-04-01 文件的概念与文件控制块(FCB/inode)


一、定位信息

  • 所属圈层:核心层
  • 前置知识回顾:了解计算机存储层次(内存、磁盘),知道数据需要持久化存储。理解操作系统负责管理硬件资源。
  • 知识网络位置:本单元是文件管理的起点,为后续文件操作(OS-04-02)、文件物理结构(OS-04-05)、目录结构(OS-04-06)等提供基础概念。文件控制块(FCB/inode)是文件系统的核心数据结构。
  • 考点热度等级H级(高频重点)——FCB和inode的概念、结构是文件管理的基础,几乎每年都有相关考题。

二、知识点讲解

2.1 文件的定义

文件是具有符号名的一组相关数据元素的集合。文件是操作系统对存储设备(如磁盘)上数据的逻辑抽象,为用户提供了方便的数据管理接口。

文件的组成:

  • 数据部分:文件的实际内容
  • 元数据(属性):描述文件特征的信息,如文件名、大小、创建时间、访问权限等

2.2 文件控制块(FCB)

文件控制块(File Control Block, FCB) 是操作系统为每个文件维护的数据结构,存储文件的所有元数据。FCB是文件存在的标志——创建文件时创建FCB,删除文件时删除FCB。

FCB通常包含以下信息:

  • 基本信息:文件名、文件类型、文件大小
  • 地址信息:文件数据在磁盘上的存放位置(物理地址)
  • 访问控制信息:文件所有者、访问权限(读/写/执行)
  • 使用信息:创建时间、最后修改时间、最后访问时间、当前使用状态

2.3 inode(索引节点)

Unix/Linux系统使用inode(Index Node) 代替FCB。inode与FCB的核心区别:inode中不包含文件名

inode包含的信息:

  • 文件类型(普通文件、目录、设备等)
  • 文件大小
  • 所有者ID、组ID
  • 访问权限
  • 时间戳(创建、修改、访问)
  • 数据块指针(直接指针、间接指针、双重间接指针、三重间接指针)
  • 链接计数

文件名存储在目录项中,目录项包含(文件名, inode号)的映射关系。这种分离设计使得同一文件可以有多个文件名(硬链接),详见OS-04-07。

2.4 目录项

目录项(Directory Entry) 是目录文件中的数据项,记录文件名与FCB/inode的对应关系。

  • 传统FCB方式:目录项 = (文件名, FCB)
  • inode方式:目录项 = (文件名, inode号)

三、记忆与理解辅助

1. 类比记忆:FCB就像文件的"身份证"——记录了文件的所有信息(名字、大小、位置、权限等)。inode也是身份证,但不包含"名字"(文件名在目录中,就像人的名字在通讯录中)。

2. 口诀:"FCB是文件的档案,记录属性和位置;inode不存文件名,名字放在目录中;目录项是通讯录,文件名对应inode。"

3. FCB vs inode 对比表(★高频考点)

对比项FCBinode
使用系统早期系统、WindowsUnix/Linux
是否包含文件名(文件名在目录项中)
文件名与元数据合在一起分离存储
硬链接支持困难容易(多个目录项指向同一inode)
目录项内容(文件名, 完整FCB)(文件名, inode号)
目录项大小较大较小

4. 文件属性分类

属性类别包含内容
基本信息文件名、文件类型、文件大小
位置信息文件在磁盘上的物理地址
访问控制所有者、权限(rwx)
使用信息创建/修改/访问时间、使用状态

四、例题与精解

例题1(基础巩固)

题目:某Unix系统中,目录项格式为 (文件名, inode号)。已知目录 /home/user 的内容如下:

文件名inode号
file1.txt1001
file2.txt1002
dir11003

(1)要读取 file1.txt 的内容,至少需要几次磁盘访问? (2)如果采用FCB方式(目录项包含完整FCB),需要几次磁盘访问?

命题意图:考查inode方式和FCB方式在文件访问效率上的区别。

精解

1. 审题分析:需要比较两种方式下读取文件的磁盘访问次数。

2. 解题思路:分析每种方式需要访问哪些磁盘块。

3. 完整步骤

(1)inode方式:

  • 第1次:读取目录文件,获得 file1.txt 的 inode 号 = 1001
  • 第2次:读取 inode 1001,获得文件数据的物理地址
  • 第3次:读取文件数据
  • 至少需要 3次 磁盘访问

(2)FCB方式:

  • 第1次:读取目录文件,获得 file1.txt 的完整FCB(包含物理地址)
  • 第2次:读取文件数据
  • 至少需要 2次 磁盘访问

4. 方法反思:inode方式比FCB方式多一次磁盘访问(读inode),但inode方式支持硬链接、目录项更小(可在一个磁盘块中存放更多目录项),整体效率反而更高。这也是Unix选择inode方式的原因。

例题2(中等提升)

题目:某文件系统的inode结构如下:

  • 12个直接指针
  • 1个一级间接指针
  • 1个二级间接指针

磁盘块大小为 4KB4\text{KB},每个指针占 44 字节。问该文件系统支持的最大文件大小是多少?

命题意图:考查inode的多级索引结构和最大文件大小计算。

精解

1. 审题分析:需要计算每级指针能指向的数据块数,然后计算总数据量。

2. 解题思路:每个磁盘块可存放 4KB/4B=10244\text{KB} / 4\text{B} = 1024 个指针。分别计算每级索引的数据块数。

3. 完整步骤

  • 每个磁盘块可存放指针数:4096/4=10244096 / 4 = 1024

  • 直接指针:12个 → 指向12个数据块 → 12×4KB=48KB12 \times 4\text{KB} = 48\text{KB}

  • 一级间接指针:1个 → 指向1个索引块 → 索引块含1024个指针 → 1024×4KB=4MB1024 \times 4\text{KB} = 4\text{MB}

  • 二级间接指针:1个 → 指向1个索引块 → 每个指针又指向1个索引块 → 1024×1024×4KB=4GB1024 \times 1024 \times 4\text{KB} = 4\text{GB}

  • 最大文件大小 = 48KB+4MB+4GB4GB48\text{KB} + 4\text{MB} + 4\text{GB} ≈ 4\text{GB}(实际为 4GB+4MB+48KB4\text{GB} + 4\text{MB} + 48\text{KB}

4. 方法反思:多级索引是Unix/Linux文件系统的核心设计。直接指针适合小文件(大多数文件都很小),间接指针支持大文件。Linux还使用了"extents"等更高效的方式,但多级索引是考试重点。


五、考情分析

  • 考查频次:FCB和inode在近5年真题中出现频率高,约3-4次。
  • 常见题型:选择题(inode结构判断、最大文件大小计算)、综合题(文件系统整体设计)。
  • 分值占比:选择题2分,综合题5-8分。
  • 命题趋势:inode的多级索引结构计算是经典考点,近年来可能与文件物理结构结合考查。基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:认为inode中包含文件名。 错误原因:将inode等同于FCB。 正确理解/做法:inode中不包含文件名。文件名存储在目录项中,目录项是(文件名, inode号)的映射。这是inode与FCB的核心区别。

  2. 错误表现:计算最大文件大小时,忘记直接指针和间接指针要分别计算再求和。 错误原因:对多级索引结构理解不清。 正确理解/做法:直接指针、一级间接、二级间接、三重间接各自独立计算,最后求和。每级间接指针的计算方法是:指针数 = 磁盘块大小 / 指针大小。

  3. 错误表现:认为目录项就是FCB。 错误原因:混淆了目录项和FCB的概念。 正确理解/做法:目录项是目录文件中的数据项,记录(文件名 → FCB/inode)的映射。FCB/inode是文件的元数据结构。两者是不同的概念。


七、来源标注

  • 依据2026考研统考408大纲
  • 依据《操作系统概念》(Operating System Concepts, Silberschatz)第11章
  • 依据汤小丹《计算机操作系统》第4版第4章

考研全科复习资料 - 基于2026考研统考大纲