Skip to content

2019年 408 操作系统 第 26 题

操作系统2019年选择题2分

题目

下列选项中,可用于文件系统管理空闲磁盘块的数据结构是( )。

Ⅰ. 位图 Ⅱ. 索引结点 Ⅲ. 空闲磁盘块链 Ⅳ. 文件分配表 (FAT)

错因

A

把 Ⅱ 索引结点(inode)也算成空闲块管理,可能因为 inode 的名字里有"索引"二字。但 inode 是已分配文件的元数据容器——里面记的是文件大小、权限、时间戳、指向数据块的指针等等,它管的是"哪些块属于这个文件",不是"哪些块还空着"。空闲块和 inode 是不同的两套结构。

C

只承认 Ⅰ Ⅲ 这种"专门记空闲块的结构",把 FAT 排除了。其实 FAT 的表项除了存"下一个簇号"外,还预留了特殊值标识空闲簇(FAT16 里用 0x0000 表示空闲、0xFFFF 表示文件结束)——FAT 同时承担了"文件链表 + 空闲块表"两个角色。漏掉这一点是 FAT 内部细节没看清。

D

把 inode 也选进来,同时漏掉了位图,错配最严重。位图是经典的空闲块管理结构(每位 0/1 对应一个块的空 / 占),高效到几乎所有现代 FS(ext2/3/4、NTFS)都在用。漏掉位图基本相当于把空闲块管理的标志性结构忘了。

总解析

文件系统里"管哪些块还空着"和"管已用块属于哪个文件"是两套不同的数据结构。先把候选拆开归类:

结构用途是否管空闲块
Ⅰ 位图每位对应一个块,1=已用 / 0=空闲(或反之)
Ⅱ 索引结点 inode存单个文件的元数据 + 数据块指针✗(管已分配的,不管空闲的)
Ⅲ 空闲磁盘块链空闲块用链表/成组链法串起来,分配从头取、回收挂回去
Ⅳ FAT文件分配表既是文件链表又登记空闲簇(特殊值 0x0000)

关键区分:inode 记的是"这个文件的块在哪里",跟"哪些块还没人用"是相反方向的两件事。

Ⅰ Ⅲ Ⅳ 都能管空闲块,Ⅱ 不能。

最终答案是 B

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题