[MMU]四级页表查找(table walk)的流程
四级页表查找(table walk)的流程
摘要:四级页表(4-level page table)查找(table walk)的流程,并解答你关于如何从 PDE base 计算出物理地址的问题。
一、x86_64 四级页表结构回顾
在典型的 x86_64 架构(如 AMD64, Intel 64),虚拟地址通过四级页表转换为物理地址。
四级页表层级:
- PML4(Page Map Level 4)
- PDPT(Page Directory Pointer Table)
- PD(Page Directory)
- PT(Page Table)
每一级页表有 512 个表项(因为 9 位索引),每个表项通常为 8 字节(64bit)。
虚拟地址格式(48位虚拟地址模式):
|63 47|46 39|38 30|29 21|20 12|11 0|
|Unused |PML4 |PDPT |PD |PT |Offset within page|
- 每一级用 9 位索引,最后 12 位为页内偏移。
二、Table Walk Flow(查表流程详解)
1. 虚拟地址分解
假设虚拟地址为 VA
,分解为:
- VA[47:39] → PML4 索引
- VA[3