Appearance
题目
下列事件中,不是在 MMU 地址转换过程检测的是( )。
错因
A
考生可能误以为"访问越权(违反读/写/执行权限)"是 OS 软件检测的——但权限位(R/W/X、用户/内核态)就保存在页表项里,MMU 在做地址转换时一并检查这些位。一旦发现违反(如对只读页执行写),立即触发"保护异常"陷入 OS。A 是 MMU 检测的事件,本题问"不是 MMU 检测",所以不选 A。
C
考生认为"缺页"是 OS 内存管理的事——但缺页首先由 MMU 检测:MMU 查页表时发现 PTE 的有效位 = 0,立即触发"缺页异常"陷入 OS。OS 服务程序处理换入是之后的事,检测这一步在 MMU 内。C 是 MMU 检测的事件,不选。
D
考生可能把 TLB 当成独立单元——其实 TLB 是 MMU 内部的虚→实地址转换加速器:MMU 拿到虚拟地址 → 先查 TLB → TLB 没命中("TLB 缺失"事件)→ MMU 自己转去查页表(或硬件填 TLB,或陷入 OS 软件填 TLB,取决于体系结构)。TLB 缺失就是 MMU 工作流程中的一个分支——不选 D。
总解析
MMU(内存管理单元)的职责:把 CPU 发出的虚拟地址 → 物理地址,并在转换过程中检查权限。
MMU 工作流程(典型路径):
CPU 发出虚拟地址
↓
┌─────────────┐
│ 查 TLB │ ← TLB 缺失?是 MMU 检测
└─────────────┘
↓ TLB 命中(取到 PTE 缓存)
┌─────────────┐
│ 检查 PTE │ ← 有效位 = 0 → 缺页(MMU 检测)
│ 有效位 │
│ 权限位 │ ← R/W/X 违反 → 访问越权(MMU 检测)
└─────────────┘
↓ 全部通过
产生物理地址 → 送给主存(再后面才有 Cache 控制器介入)逐项判断:
| 选项 | 事件 | 是否 MMU 检测 |
|---|---|---|
| A | 访问越权 | ✓(PTE 权限位) |
| B | Cache 缺失 | ✗(Cache 控制器检测,发生在 MMU 转换完成之后) |
| C | 页面缺失(缺页) | ✓(PTE 有效位 = 0) |
| D | TLB 缺失 | ✓(TLB 是 MMU 一部分) |
B 错在哪里:
Cache 缺失发生在 MMU 转换出物理地址之后——CPU 拿到物理地址后送往 Cache 控制器,Cache 控制器去 Cache 中比对:命中就返回数据,未命中(缺失)则去主存取块。整个过程与 MMU 无关,由 Cache 控制器独立处理。
关键时序:MMU 先做地址转换 → 物理地址给 Cache 控制器 → Cache 控制器查 Cache。MMU 在第一步就退出舞台了,第二步的 Cache 缺失它不知道也不管。
最终答案是 B(Cache 缺失)。
MMU 检测事件速记:
MMU 摸到的全是与页表相关的事件——TLB 是页表的"前置缓存"、PTE 有效位决定缺页、PTE 权限位决定越权。 Cache 是物理地址出来后的另一个独立子系统,MMU 已经退出了。