Appearance
题目
某文件系统的簇和磁盘扇区大小分别为 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。