Skip to content

2021年 408 操作系统 第 30 题

操作系统2021年选择题2分

题目

若目录 dir 下有文件 file1,则为删除该文件内核不必完成的工作是( )。

错因

B

可能觉得 FCB(文件控制块)不算"占空间"的部分,删文件时可以留着。但 FCB 是文件的元数据本体——记着文件主、权限、磁盘块位置、大小等等。文件删了 FCB 还留着,磁盘上就多一堆"指向已释放数据块"的孤魂记录,下次要分配 FCB 时又少一个空间。释放是必做的。

C

误以为"文件删除"只动元数据、数据块原封不动地留在那("反正会被覆盖")。但释放磁盘空间——把数据块标回空闲位图——是文件删除的第一目的:腾地方让别的文件用。如果不释放,这些块永远占着不能再分配出去,磁盘很快就满了。

D

漏掉了目录项。可能想成"FCB 删了文件就不存在了"。但目录是个映射表:"文件名 → FCB 位置"——目录项不删掉,下次 ls dir 还是能看到 file1 的名字(虽然点开就报错)。删除文件必须把这个名字也从目录里摘掉,才算彻底。

总解析

题问"不必完成的"——也就是问哪一项不在内核删除流程里

内核 unlink 文件时的标准动作(链接计数归 0 时):

动作必做?为什么
删目录项(D)否则文件名还挂在目录里
释放 FCB / inode(B)元数据本身要回收
释放磁盘数据块(C)让出磁盘空间给别的文件
删快捷方式 / 软链接(A)不归内核管

为什么 A 不必做? 快捷方式(Windows)/ 软链接(Linux 的 ln -s)本身是独立的小文件,里面存的是"我指向 /path/to/file1"这条文本路径。它跟原文件是松耦合关系——内核没有反向索引可以从原文件追到所有指向它的快捷方式。

所以删除 file1 时:

  • 内核只删 file1 本体(目录项 + FCB + 数据块)
  • 别处那些指向 dir/file1 的快捷方式留着不动
  • 之后用户去点快捷方式才会发现"找不到目标文件",由用户自己清理

A 是用户层 / shell 层的事,内核完全不管。

最终答案是 A

最后更新:

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