由1024个4字节的页目录项组成。页目录项的大小为4个字节(32bit),所以一个页目录中有1024个页目录项。页目录中的每一项的内容(每项4个字节)高20bit用来放一个 页表(页表放在一个物理页中)的 物理地址,低12bit放着一些标志。 对于x86系统,页目录的物理地址放在CPU的CR3寄存器中。 CPU把虚拟 地址转换成物理地址: 一个虚拟地址,大小4个 字节(32bit),包含着找到 物理地址的信息,分为3个部分: 第22位到第31位这10位(最高10位)是页目录中的索引, 第12位到第21位这10位是 页表中的索引, 第0位到第11位这12位(低12位)是页内偏移。 对于一个要转换成物理地址的虚拟地址,CPU首先根据CR3中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项(PDE,page directory entry),页目录项中有这个虚拟地址所对应 页表的物理地址。有了 页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(PTE,page table entry),页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。 一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个 页表也有1024项,虚拟地址中间部分的10bit,刚好索引1024项。