Appearance
题目
下列选项中,属于多级页表优点的是( )。
错因
A
正好相反——多级页表降低地址变换速度。原本一级页表只查一次,二级页表要查两次(先页目录、再页表),三级页表查三次……每一层都是一次内存访问。多级页表的设计目的不是加速,TLB 才是地址变换的加速器。多级页表是用"慢一点"换"省内存"。
B
缺页中断和页表层级数完全无关。缺页是发生在"虚拟页找不到对应物理页框"时,跟页表怎么组织没关系——一级页表会缺页,多级页表也会缺页,缺页频率取决于工作集大小、置换策略、页框数等,跟层级数没有直接因果。
C
多级页表反而增加了页表项总数(除了原本的页表项,还多出页目录项等上层结构)。每个页表项的字节数也不会因为分级变小(PTE 大小由架构决定)。多级页表是把页表"切成块"分散存放,不是把每个 PTE 变小。
总解析
单级页表的痛点:32 位系统、4KB 页 → 个页表项 = 100 万条;每条 4B → 单级页表要 4MB 连续内存。每个进程都要这么一大块连续空间——而进程的虚拟地址空间通常是稀疏的(只用一小部分),4MB 大部分是空表项,白白浪费。
多级页表的解决思路:
把 4MB 页表本身按页切——4MB / 4KB = 1024 个 4KB 块,每块叫"二级页表";再用一个 1024 项的"页目录"指向这些二级页表。只有真正用到的二级页表才需要存在,没用到的不分配。
| 单级页表 | 多级页表 |
|---|---|
| 必须 4MB 连续内存 | 页目录只 4KB;用到的二级页表各 4KB,散布在内存各处 |
| 整张页表必须一次分配 | 按需分配二级页表(甚至按需调入/换出) |
| 一次内存访问完成地址变换 | 多次访问(变慢,靠 TLB 弥补) |
多级页表的核心优势:
- 不需要连续大块内存——只要凑够一个 4KB 物理页框就能装一个二级页表
- 稀疏地址空间省内存——没用到的二级页表不分配
- 支持页表本身可换出——闲置的二级页表可以暂存外存
D 命中"不需要连续大块内存"这一条;A B C 全错(A 反着、B 无关、C 反着)。
注意区分两个"省":多级页表省的是连续内存的大块需求和稀疏地址空间下未触及部分的存储,不是单条页表项变小,也不是总条数变少。
最终答案是 D。
编者注(解题技巧):多级页表是用"慢一点"换"省内存"——若选项里出现"加快地址变换""减少访存次数"必排除,加快变换是 TLB 的活,别认错主语。