赞
踩
我们在程序中使用的地址全部是虚拟地址。
IA-32e下虚拟地址占据64个比特位。高16位作为符号扩展。低48位用于虚拟地址寻址。这种格式的地址也称为Canonical地址。IA-32e模式下,只有Canonical型地址区间是可用地址空间。
虚拟地址需要转换为物理地址后才能实际发挥作用。
虚拟地址通过页表转换为物理地址。对IA-32e的页表机制而言。PML4顶级页表的物理基地址从CR3寄存器得到。
1.物理页为4KB物理页时
对虚拟地址低48个比特位拆分为 9+9+9+9+12。
第一个9比特构成PML4页表的索引,据此得到PML4页表索引项。从中可以得到PDPT页表物理基地址。
第二个9比特构成PDPT页表的索引,据此得到PDPT页表索引项。从中可以得到PDT页表物理基地址。
第三个9比特构成PDT页表的索引,据此得到PDT页表索引项。从中可以得到PT页表物理基地址。
第四个9比特构成PT页表的索引,据此得到PT页表索引项。从中得到4KB物理页基地址。
最后的12比特构成4KB物理页的页内偏移。据此得到具体的物理地址。
2.物理页为2MB物理页时
对虚拟地址低48个比特位拆分为 9+9+9+21。
第一个9比特构成PML4页表的索引,据此得到PML4页表索引项。从中可以得到PDPT页表物理基地址。
第二个9比特构成PDPT页表的索引,据此得到PDPT页表索引项。从中可以得到PDT页表物理基地址。
第三个9比特构成PDT页表的索引,据此得到PDT页表索引项。从中可以得到2MB物理页基地址。
最后的21比特构成2MB物理页的页内偏移。据此得到具体的物理地址。
3.物理页为1GB物理页时
对虚拟地址低48个比特位拆分为 9+9+30。
第一个9比特构成PML4页表的索引,据此得到PML4页表索引项。从中可以得到PDPT页表物理基地址。
第二个9比特构成PDPT页表的索引,据此得到PDPT页表索引项。从中可以得到1GB物理页基地址。
最后的30比特构成1GB物理页的页内偏移。据此得到具体的物理地址。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。