Appearance
题目
下列文件物理结构中,适合随机访问且易于文件扩展的是( )。
错因
A
连续结构支持随机访问(按起址 + 偏移直接算),但不易扩展——文件要扩展时,相邻空间可能已被别的文件占用,要么扩展失败、要么整个文件搬家。同时满足"随机访问"和"易扩展"的不是它。
C
链式结构(无论定长变长)不支持随机访问——访问第 N 块要从头跟着指针走 N 步。它易于扩展(链尾加一块就行),但缺了"随机访问"这条。
D
链式结构 + 块变长,依然链式 → 不支持随机访问。块变长还增加管理复杂度,反而比定长更麻烦。
总解析
四种文件物理结构对照:
| 结构 | 随机访问 | 易扩展 | 连续空间需求 |
|---|---|---|---|
| 连续 | ✓(起址 + 偏移直接算) | ✗(要扩展但相邻可能被占) | 必须连续 |
| 链式 | ✗(要顺链遍历) | ✓(链尾加块) | 可分散 |
| 索引 | ✓(查索引表第 N 项) | ✓(添加索引项 + 数据块) | 可分散 |
索引结构的工作机制:
inode(包含索引表)
↓ 索引表第 N 项
→ 数据块 N 的盘块号- 随机访问第 N 块:直接查索引表第 N 项(一次查找),拿到盘块号 → 1~2 次 I/O 就能读到数据
- 扩展文件:只需在索引表里增加一项 + 分配一个新数据块,链不动也不要相邻
"鱼和熊掌"两全的只有索引结构——这正是 Unix 系 OS 用 inode 管理文件的根本原因。
| 选项 | 描述 | 随机访问? | 易扩展? | 同时满足? |
|---|---|---|---|---|
| A | 连续 | ✓ | ✗ | ✗ |
| B | 索引 | ✓ | ✓ | ✓ |
| C | 链式定长 | ✗ | ✓ | ✗ |
| D | 链式变长 | ✗ | ✓ | ✗ |
速记:链式给可扩展但牺牲随机访问;连续给随机访问但牺牲可扩展;索引同时满足——以多一次"查索引表"的代价换来两全。
最终答案是 B。