Appearance
题目
下列优化方法中,可以提高文件访问速度的是( )。
Ⅰ. 提前读 Ⅱ. 为文件分配连续的簇 Ⅲ. 延迟写 Ⅳ. 采用磁盘高速缓存
错因
A
只承认 Ⅰ Ⅱ 这种"读侧"优化(提前读 + 连续簇减少寻道),把 Ⅲ Ⅳ 误以为是"安全性 / 一致性策略"而非速度优化。但延迟写和高速缓存恰恰是减少实际磁盘 I/O 次数的核心手段——不写到盘上的写、被缓存命中的读,都比真去转一次磁头快几个数量级。
B
把"提前读"误以为是无效预测(万一预读错了浪费)而剔除,又把"高速缓存"也排除掉。但顺序访问的文件预读命中率极高(这是文件 I/O 的最常见模式);磁盘高速缓存是 OS 层面所有现代文件系统的标配,漏掉这两个相当于否定了主流加速手段。
C
承认了三种缓存类技术,却把 Ⅱ"为文件分配连续簇"误划出了"加速文件访问"的范畴——可能觉得这只属于"分配策略"。其实连续簇带来的是每次磁头寻道与旋转开销最小化,相邻数据块连续读,旋转一圈能读完整磁道,比离散簇快非常多——这是磁盘性能优化的直接手段。
总解析
文件访问速度由两条路径决定:减少访问磁盘的次数(缓存类)和让单次访问开销变小(布局类)。四个选项各自命中其中一条:
| 方法 | 类型 | 加速机理 |
|---|---|---|
| Ⅰ 提前读(read-ahead / 预读) | 缓存类 | 顺序访问时一次多读几个块入缓存,下次访问直接命中,省一次磁盘 I/O |
| Ⅱ 连续簇分配 | 布局类 | 文件物理上相邻 → 寻道 0 / 旋转最小,顺序读速度接近磁道带宽 |
| Ⅲ 延迟写(write-back) | 缓存类 | 修改先写缓存,凑批后再回盘,多次写合并成一次 + 应用 write 调用立即返回 |
| Ⅳ 磁盘高速缓存 | 缓存类 | 内存里按 LRU 缓存最近访问的磁盘块,热块全在内存里命中 |
四种全是文件系统真实在用的加速手段——Linux 的 page cache 同时是 Ⅰ Ⅲ Ⅳ 的统一实现,FAT/NTFS 也都偏好连续簇分配(即 Ⅱ)。
速度提升和"安全性"是另一个维度的权衡:延迟写有掉电丢数据的风险,但在"加速访问"这个问题上它确实是有效手段。
最终答案是 D。