一篇文章带你彻底理解分页机制 - 图1

一篇文章带你彻底理解分页机制 - 图2

一级页表线性地址转换物理地址过程

一篇文章带你彻底理解分页机制 - 图3

一篇文章带你彻底理解分页机制 - 图4

二级页表虚拟地址转换物理地址过程

一篇文章带你彻底理解分页机制 - 图5

一篇文章带你彻底理解分页机制 - 图6

页目录项与页表项结构

一篇文章带你彻底理解分页机制 - 图7

页目录基址寄存器CR3

一篇文章带你彻底理解分页机制 - 图8

由于页目录表所在的地址要求在一个自然页内,即页目录的起始地址是4KB的整数倍,低12位地址全是0。所以,只要在cr3寄存器的第31~12位中写入物理地址的高20位就行了。另外,cr3寄存器的低12位中,除第3位的PWT位和第4位的PCD位外,其余位都没用。PWT位和PCD位在介绍页表项时说过了,它们用于设置高速缓存相关的特性,在此将其置为0即可。这样一来低12位全部为0,故只需要把页目录表物理地址的高20位写入cr3寄存器即可。

页目录与页表的关系

一篇文章带你彻底理解分页机制 - 图9

分页机制得有页目录表,页目录表中的是页目录项,其中记录的是页表的物理地址及相关属性,所以还得有页表。我们实际的页目录表及页表也将按照此空间位置部署,地址的最下面是页目录表,往上依次是页表。