x86-64体系结构中的寻呼



在32位操作系统实现中,页表具有固定的结构(两个级别-页目录和页表)。但在x86_64系统中,通常会实现多个级别的页表(在Linux中为4)。系统如何知道使用了多少级别?这需要什么命令?我们如何让CPU知道全局页面目录和其他结构?

简短回答

  • 在编写时,x86-64页表总是4个级别。在未来,可以实现5和6级以覆盖整个64位地址空间
  • 操作系统通过执行带有各种参数的CPUID指令来查询硬件功能
  • OS通过写入控制寄存器CR3来设置全局页目录指针

权威文本:请参阅英特尔®;64和IA-32体系结构软件开发人员手册,第3A卷"系统编程指南,第1部分",第4.5节"IA-32e分页"。

维基百科文本(略经编辑):

64位寻址模式("长模式")是物理地址扩展(PAE)的超集。与PAE模式下系统使用的三级页表系统不同,长模式下运行的系统使用四级页表:PAE的页面目录指针表从4个条目扩展到512个,并添加了一个额外的页面映射4级(PML4)表,在48位实现中包含512个条目。在提供更大的虚拟地址的实现中,后一个表将增长以容纳足够的条目来描述整个地址范围,对于64位实现,理论上最大可达33554432个条目,或者被新的映射级别(例如PML5)高估。

相关内容

最新更新