题目重点:沿 CPU 访存路径解释虚拟页到物理帧的映射,区分 TLB miss、page fault 和访问权限错误。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 按常见分页虚拟内存模型说明,不固定 x86/ARM 页表层数、页大小或 ASID 机制;具体硬件例子需注明。
- 进程拥有虚拟地址空间,页表项提供物理帧或无效/换页状态及访问权限;操作系统管理页表与缺页处理。
解题路线
- CPU 发出虚拟地址,拆成虚拟页号+页内偏移;TLB 命中取翻译和权限,物理地址=物理帧号+偏移。
- TLB miss 触发硬件 page walk 或软件处理,若页表项有效但 TLB 无条目,填 TLB 后继续,并不必然访问磁盘。
- 页表项无效/不在内存会产生 page fault,操作系统可能分配零页、从文件/交换区加载或拒绝非法访问;权限不允许读/写/执行也可能产生 fault,但修复方式不同。
- 多级页表按需分配减少稀疏地址空间页表占用;大页减少翻译开销但增加内部碎片和管理粒度。进程切换要考虑 TLB 标签/失效与页表根切换。
手动走一遍
4KiB 页下虚拟地址 0x1234 的页号为 1、偏移 0x234。TLB 无命中但页表项指向物理帧 7,可填 TLB 并访问 0x7234;若页表项不在内存,进入缺页处理。数值只作分页示例。
规模与取舍
单次 TLB 命中近似固定硬件延迟;TLB miss 的页表遍历与层数/缓存相关,page fault 的磁盘或远程页代价可能高几个量级。页表空间依虚拟页覆盖和多级结构,不能只写 O(1)。
易错点与追问
容易失分的边界
- 把 TLB miss 和 page fault 当同一回事。
- 说虚拟地址直接等于磁盘地址。
- 忽略页表访问权限。
- 说每次访存都需要磁盘 IO。
- 硬编码某个体系结构页表层数为通用规则。
继续深挖
- TLB miss 但页在内存时发生什么?
- Copy-on-write 如何触发和处理 fault?
- 大页何时利大于弊?
- 进程切换如何影响 TLB?
