Appearance
题目
下列措施中,能加快虚实地址转换的是( )。
I. 增大快表 (TLB) 容量
II. 让页表常驻内存
III. 增大交换区 (swap)
错因
A
只承认 Ⅰ TLB,把 Ⅱ"页表常驻内存"漏了。可能默认"页表本来就在内存里"——但请求分页系统里,页表的部分页本身可以被换出(多级页表的二级页表是按页存储的),如果当前进程的页表项在外存里,那次访问就要先把页表换回来再做地址变换,速度直接掉几个量级。"常驻内存"消除这种额外 I/O。
B
只承认 Ⅱ 页表常驻、漏了 Ⅰ TLB。其实 TLB 是地址变换路径上最关键的加速器——没有 TLB 时每次访存都要先查一次页表(多一次内存访问),有 TLB 命中时直接拿物理地址。漏掉它相当于否定了 OS 性能优化的最大头。
D
把 Ⅲ swap 容量当成加速因素了——swap 是虚拟内存的硬盘备份,扩大 swap 让系统能"装下更多虚拟内存",但和"虚拟地址 → 物理地址转换的速度"完全没关系。地址变换发生在 MMU 硬件 + TLB + 页表层面,根本不经过 swap。把存储容量和访存速度混了。
总解析
虚实地址转换的全流程:
虚拟地址 → MMU 查 TLB
命中 → 直接得到物理地址(最快)
未命中 → 查页表(在内存)
页表项有效 → 得到物理地址,回填 TLB
页表项无效 → 缺页,要从 swap 调入要"加快地址变换",必须作用在这条路径上的某一环节:
| 措施 | 作用环节 | 是否加快地址变换? |
|---|---|---|
| Ⅰ 增大 TLB 容量 | 提升 TLB 命中率 → 更多次访问直接拿到物理地址 | ✓ |
| Ⅱ 页表常驻内存 | TLB miss 后查页表不再触发"页表换入"的额外 I/O | ✓ |
| Ⅲ 增大 swap | 只让系统能容纳更大的虚拟内存,不影响地址变换速度本身 | ✗ |
速记:地址变换的"快"靠 TLB(硬件缓存)+ 页表本身可立即访问;swap 是缺页时的兜底,跟变换速度是两回事。
Ⅰ Ⅱ 都直接作用在地址变换路径上,Ⅲ 完全在路径之外。
最终答案是 C。