Skip to content

2025年 408 操作系统 第 31 题

操作系统2025年选择题2分

题目

下列选项中,可被文件系统用于外存空间使用情况的是( )。

错因

A

把"目录"和"磁盘块占用记录"功能混起来。目录的工作是文件名 → 文件位置的映射("哪个文件叫什么名"),它回答"哪些磁盘块空闲、哪些已分配"。要列出根目录下所有文件,目录够用;但要找"还剩多少 GB 可写",目录帮不上。

B

记成"系统打开文件表能反映磁盘整体状态"。系统打开文件表只跟踪当前打开的文件——它的表项是"哪些文件正在被某个进程使用",是个内存中的运行时结构。机器关机时这张表清空,外存空间分布不会因此消失。它只关心"用着的",不关心"空闲的"。

D

把 FCB 的覆盖范围放大了。FCB 是单个文件的元数据集合(文件名、大小、属主、数据块指针等),它能告诉你"这一个文件占了哪些块",但不知道整个磁盘上其他块的状态。把所有 FCB 加起来理论上能反推已分配的块——但效率极低,更关键的是:还没用过、从未分配给任何文件的块根本没有 FCB 与之对应,FCB 集合无法直接列出空闲块。

总解析

问题本质:题目要找的是能告诉 OS "整个外存上哪些块空闲、哪些已分配" 的数据结构。

对比四类结构的覆盖范围

选项是什么跟踪粒度能否反映外存空闲/已用
A 目录"文件名 → 文件位置"的映射表单个目录下的文件列表✗(不记块状态)
B 系统打开文件表OS 内核中的"当前打开文件"集合运行时打开的文件✗(与磁盘块占用无关)
C FAT(文件分配表)每个磁盘块一个表项的全局表整个磁盘所有块
D FCB(文件控制块)单个文件的元数据单个文件✗(不能直接列空闲块)

FAT 为什么能做这件事

FAT 是一张以磁盘块为索引的全局表——每个表项对应磁盘上一个物理块。表项的取值约定如下:

FAT 表项值含义
0(或特殊"FREE"标记)该块空闲,可被分配给新文件
正整数 N已分配,且下一个块是 N(FAT 用链表表示一个文件的块序列)
特殊"EOF"标记已分配,且这是文件最后一块
特殊"BAD"标记坏块,不可用

这就回答了"外存空间使用情况"两件事

  1. 空闲空间管理:扫一遍 FAT,所有"FREE"标记的表项即空闲块清单
  2. 文件分配信息:从某文件的起始块号开始,跟着 FAT 的链表跳到 EOF,就拿到该文件占用的全部块

所以 FAT 同时承担了"哪些块归谁用"(文件分配)和"哪些块没人用"(空闲管理)两项职责——这正是题目问的"可被用于外存空间使用情况"。

编者注(生僻术语):题目原文"可被文件系统用于外存空间使用情况的"读起来有点拗口,正常理解就是"可用于反映/记录/管理外存空间使用情况的数据结构"。FAT 在 FAT12/16/32 文件系统中扮演这个角色,对应到 inode 系(如 ext4)则由位图(block bitmap)承担同等职责——不过题面给的选项里只有 FAT 是直接命中的。

最终答案是 C

最后更新:

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