PML4(Page Map Level 4)是x86-64架构中用于管理虚拟内存地址翻译的四级页表结构之一。它是一种树形结构,由多个页目录表(Page Directory Pointer Table,PDPT)组成,每个PDPT有512个指向下一级页表(Page Directory,PD)的指针。每个PD也有512个指向下一级页表(Page Table,PT)的指针,最后的PT包含了物理地址的映射。
PML4的页表结构如下:
其中,PML4 Offset对应PML4表项的索引,PDPT Offset对应PDPT表项的索引,PD Offset对应PD表项的索引,PT Offset对应PT表项的索引。
虚拟地址通过PML4转换到物理地址的过程如下:
将虚拟地址分解为四部分:PML4 Offset、PDPT Offset、PD Offset和PT Offset。
根据PML4 Offset找到PML4表项。
从PML4表项中获取PDPT表的起始物理地址,并加上PDPT Offset乘以8(一个表项大小)得到PDPT表项的物理地址。
从PDPT表项中获取PD表的起始物理地址,并加上PD Offset乘以8得到PD表项的物理地址。
从PD表项中获取PT表的起始物理地址,并加上PT Offset乘以8得到PT表项的物理地址。
从PT表项中获取对应页的物理地址。
总结:虚拟地址通过PML4转换到物理地址的过程是由四级页表结构完成的,根据不同的偏移量找到对应的表项,然后根据表项中存储的页的物理地址得到物理地址。