Appearance
题目
对于页式虚拟存储管理系统,下列关于存储器层次结构的叙述中,错误的是( )。
错因
A
回忆 408 教材里的标准对照:Cache-主存交换的基本单位是"块(Block)",主存-外存交换的基本单位是"页(Page)"——这是事实陈述,A 正确,不选 A。两者只是名字不同,本质都是"成块搬运"以利用空间局部性。
B
Cache-主存的命中/缺失发生在纳秒级,必须由硬件直接处理(替换算法集成在 Cache 控制器内)。主存-外存(虚存)的命中/缺失(缺页)发生在毫秒级——缺页时陷入 OS 内核,由软件(页面置换算法)处理。B 描述的分工是正确的,不选 B。
C
回写法(Write-Back)= 写命中时只写到本层、不立即写到下一层;脏位标记后在替换时统一写回。Cache-主存可以用回写法(也可用写穿透 Write-Through);主存-外存层因为外存写代价巨大,几乎清一色用回写法——脏页在被换出时才写回外存。C 正确,不选 C。
总解析
题目问"错误的"叙述,D 是错的。
逐项核验:
| 选项 | 内容 | 对/错 | 关键事实 |
|---|---|---|---|
| A | Cache-主存换块、主存-外存换页 | ✓ | 标准定义 |
| B | Cache 替换硬件做、虚存替换软件做 | ✓ | 速度差异决定分工 |
| C | Cache 可回写、虚存通常回写 | ✓ | 两层写策略的常见选择 |
| D | Cache 可直接映射、虚存通常采用直接映射 | ✗ | 虚存通常采用全相联映射,不是直接映射 |
D 错在哪里:
| 层次 | 命中开销 | 缺失代价 | 主流映射方式 | 原因 |
|---|---|---|---|---|
| Cache-主存 | 几个 cycle | 几十个 cycle | 直接映射 / 组相联为主 | 硬件电路简单、查找快、命中率优化由组相联补 |
| 主存-外存(虚存) | 1 次内存访问 | 毫秒级(机械硬盘) | 全相联映射 | 缺页代价巨大,必须最大化灵活性以最小化冲突缺失 |
虚存的页表本身就是"任意虚页 → 任意物理页框"的映射表,本质是全相联——任何一个虚拟页可以放在物理内存的任何一个空闲页框里。直接映射在虚存中几乎不用,因为:
- 缺页代价太高(要从外存换入),多冲突会拖垮系统
- 物理页框数量远多于直接映射所需要的限制条件,空间够用
- 软件管理(OS 调度)灵活性强,可按需分配
最终答案是 D。
速记口诀:
Cache 重速度 → 直接映射 / 组相联(电路简单) 虚存重命中率 → 全相联(缺页代价巨大)
两层对比通则:硬件层(Cache)愿意为速度牺牲一点命中率;软件层(虚存)必须为命中率牺牲一点查找时间。