Skip to content

2017年 408 操作系统 第 26 题

操作系统2017年选择题2分

题目

某文件系统的簇和磁盘扇区大小分别为 1KB 和 512B。若一个文件的大小为 1026B,则系统分配给该文件的磁盘空间大小是( )。

错因

A

直接报了文件本身大小——但磁盘空间分配单位是"",不是字节。文件 1026B 不能精确占 1026B 的磁盘空间,必须按整簇向上对齐。把"文件大小"和"分配空间"等同就会落进这里。

B

凑了 1.5 簇 = 1536B——但分配单位是整簇,不能给"半个簇"。1026B 占满了第 1 个簇(1024B 满),第 2 个簇里只用了 2B,但整个第 2 簇都被这文件独占,不能让别的文件来共用——分配粒度的本质就是"以簇为最小单位独占"。

C

按"整扇区"算:1026B 需要 4 个扇区(4 × 512 = 2048B),减去某段算了 1538——但题目明确分配单位是簇 (1KB),不是扇区。扇区是磁盘物理读写最小单位,分配是另一层概念。把扇区当分配单位是把"硬件读写粒度"和"文件系统分配粒度"混了。

总解析

两层粒度要分清:

粒度单位谁定义
扇区(sector)512B硬件——磁盘最小读写单位
(cluster / 块)1KB文件系统——最小分配单位(多个扇区组成一簇,本题 1 簇 = 2 扇区)

文件分配按进行——再小的文件也至少占 1 簇;一个文件只能独占其分配的簇(不能和别的文件共用一簇)。

计算

文件大小 1026B,簇大小 1KB = 1024B。

→ 分配磁盘空间 = 2 × 1024B = 2048B

分布

占用实际数据
第 1 簇1024B 全占文件前 1024B
第 2 簇1024B 全占(独占)文件最后 2B + 1022B 内部碎片

第 2 簇里只有 2B 是文件数据,剩下 1022B 是内部碎片——浪费但无法回收,因为这一整簇已被该文件占据,不能给别的文件用。

速记:分配空间 = ⌈文件大小 / 簇大小⌉ × 簇大小。文件大小 ≤ 一簇时一律占一簇。

最终答案是 D

最后更新:

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