4.1.8【2016统考真题】


好的,这是一道非常经典的操作系统文件系统综合题,它以**FAT (文件分配表)**为核心,将目录结构、文件链接分配、地址查找和性能计算等多个知识点串联在一起,非常考验对FAT文件系统工作原理的理解。
我们来详细地解析这道题。
题目原文
(9)【2016统考真题】某磁盘文件系统使用链接分配方式组织文件,簇大小为 4KB。目录文件的每个目录项包括文件名和文件的第一个簇号,其他簇号存放在文件分配表 FAT 中。
- 假定目录树如上图所示,各文件占用的簇号及顺序如上表所示,其中
dir,dir1是目录,file1,file2是用户文件。请给出所有目录文件的内容。 - 若 FAT 的每个表项仅存放簇号,占 2B,则 FAT 的最大长度为多少字节? 该文件系统支持的文件长度最大是多少?
- 系统通过目录文件和 FAT 实现对文件的按名存取,说明
file1的 106, 108 两个簇号分别存放在 FAT的哪个表项中。 - 假设仅 FAT 和
dir目录文件已读入内存,若需将文件dir/dir1/file1的第 5000 个字节读入内存,则要访问哪几个簇?
一、运用了什么知识点?考了什么?为什么这么考?
-
运用知识点:
- 文件目录结构: 理解树形目录结构,以及目录本身也是一种特殊的文件。
- 链接分配 (FAT变种): 这是本题的核心。它不是简单的“指针存于数据块中”的链接分配,而是将所有文件的链接指针集中存放在一个叫做文件分配表 (FAT) 的大数组里。FAT的表项号(数组下标)对应磁盘的簇号,表项内容是该簇的下一个簇号。
- 按名存取过程: 理解查找一个文件(如
/a/b/c)的完整流程:从根目录开始,找到a的目录项,获取a的起始簇号,读取a的内容,在a中查找b的目录项… 直至找到最终文件c的起始簇号。 - 文件地址计算: 能够根据文件内的字节偏移和簇大小,计算出目标数据位于文件的第几个簇。
-
考了什么?
这道题完整地模拟了FAT文件系统的一次“按名存取”操作。它考查的是:- 数据结构的理解与构建 (Q1): 能否根据零散的文件信息,反向构建出目录文件的内容。
- 系统参数的极限计算 (Q2): 能否根据FAT表项的大小,推算出FAT本身的最大尺寸以及它能支持的最大文件长度。这考察了对系统设计约束的理解。
- FAT核心工作原理 (Q3): 检验考生是否真正理解“FAT表项内容是下一个簇号,表项索引是当前簇号”这一核心机制。
- 文件访问的动态模拟 (Q4): 这是一个综合性极强的“寻址”问题,要求考生扮演操作系统的角色,从一个路径名出发,一步步地进行目录解析、FAT查询,最终定位到磁盘上的物理簇。
-
为什么这么考?
因为FAT虽然是一个相对古老的文件系统,但它的设计思想——将链接信息与数据分离——非常经典,是理解现代文件系统(如ext, NTFS的间接块)的基础。这道题通过一个完整的实例,让考生“走一遍”真实的文件访问流程,能够深刻地检验考生是否将目录、FCB、FAT、数据块这些孤立的概念,融会贯通成一个协同工作的有机整体。
三、解题思路与详细分析 (怎么样?)
问题1分析:构建目录文件
- 思路: 目录文件就是一个列表,每个条目是
<文件名, 起始簇号>。我们需要根据给定的目录树和文件信息表,填充dir和dir1这两个目录文件的内容。 - 构建
dir目录:- 从目录树看,
dir目录下面只有一个子目录dir1。 - 从文件信息表看,
dir1的第一个簇号是48。 dir的内容:文件名 簇号 dir1 48
- 从目录树看,
- 构建
dir1目录:- 从目录树看,
dir1目录下面有两个文件file1和file2。 - 从文件信息表看,
file1的第一个簇号是100,file2的第一个簇号是200。 dir1的内容:文件名 簇号 file1 100 file2 200
- 从目录树看,
问题2分析:FAT的极限
-
FAT的最大长度是多少字节?
- 思路: FAT是一个大数组,数组的下标就是磁盘的簇号。FAT的表项大小决定了它能表示的簇号的范围。
- FAT表项: 占2B = 16位。
- 这意味着簇号最多可以用16位来表示。
- 因此,磁盘上最多可以有
2¹⁶ = 65536个簇。 - FAT表需要为这
2¹⁶个簇中的每一个都准备一个表项。 - FAT最大长度 =
最大簇数 × 每个表项的大小 最大长度 = 2¹⁶ 项 × 2 B/项 = 65536 * 2 B = 131072 B = 128 KB。
-
文件系统支持的文件长度最大是多少?
- 思路: 文件长度 =
文件占用的簇数 × 每个簇的大小。 - 文件的最大长度,就是它把所有可用的簇都占满了。
- 系统最多有
2¹⁶个簇。 - 最大长度 =
最大簇数 × 簇大小 最大长度 = 2¹⁶ 簇 × 4 KB/簇 = 65536 * 4 KB = 262144 KB = 256 MB。
- 思路: 文件长度 =
- 结论: FAT最大长度为 128 KB;文件最大长度为 256 MB。
问题3分析:FAT的链接原理
- 核心原理: 如果文件占用了簇A和簇B,且A在B之前,那么FAT中第A个表项的内容,就是簇B的编号。即
FAT[A] = B。 - 分析
file1:file1占用的簇号顺序是100, 106, 108。- 簇100的下一个簇是106。因此,FAT的第100个表项里存放的内容是 106。
- 簇106的下一个簇是108。因此,FAT的第106个表项里存放的内容是 108。
- 结论:
106存放在FAT的<
