列表及地址寄存器存储了当前进程的页表目录地址page directory base register PDBG
arm是TTBRx
intel是CR3
cpu访存获取物理地址流程 如果mmu发现tlb里面miss就通过pdbg拿pa物理地址
intel为例子:
- 从cr3拿到当前进程的一级页表目录基地址
- 从虚拟地址va拿到高10b的pdt偏移 加上cr3,读取到当前va对应二级页表基地址
- 从虚拟地址va中间10b的pmt偏移 读取二级页表基地址 相加 然后读取va对应的pte
-从va读取页内偏移offset 加上读取到的pte 然后的地址 读取到pa
有个特例如果pte偏移看到当前页面不在ram 会触发缺页异常 触发缺页中断 该中断从映射页表到ram 写入pte