
PAEPhysical Address Extension物理地址扩展。什么是PAE模式简单来说PAE 是 x86 处理器的一项功能它允许 32 位的操作系统在 32 位模式下运行突破 4GB 物理内存的限制访问更多的 RAM。核心技术点突破4GB限制标准32位系统最多只能寻址2^32 4GB内存。PAE模式通过将物理地址从32位扩展到36位或更多最大可达52位但Linux 32位内核受内核结构限制通常上限是44位让系统能支持最多64GB甚至更多的物理内存。页表结构变化为支持更大的物理地址PAE会修改内存页表的结构。标准32位系统使用二级页表而启用PAE后会扩展为三级页表。具体来说Linux的页全局目录PGD会对应到x86硬件的页目录指针表PDPT页中间目录PMD对应页目录页表PTE则保持不变。对程序员的影响作为一个应用程序开发者PAE模式几乎是透明的。也就是说编写的程序仍然只能看到一个标准的32位虚拟地址空间通常用户态可用3GB左右无法因为物理内存变大而拥有更大的虚拟地址空间。想要使用更大的虚拟地址必须使用64位系统。内核视角的PAE在Linux内核开发中PAE是一个编译时选项CONFIG_X86_PAE。启用后内核才能使用所有超过4GB的物理内存。head_64.S中看到的页表相关代码就是为支持这种多级页表结构而设计的。/** Prepare for entering 64 bit mode*//* Enable PAE mode */movl %cr4, %eax # cr4的值存入eaxorl $X86_CR4_PAE, %eax # 或上PAEmovl %eax, %cr4 # 写回cr4使PAE生效