PAE(物理地址扩展)如何启用大于4GB的地址空间?

时间:2011-12-04 07:28:30

标签: memory memory-management x86

维基百科关于Physical Address Extension的文章的摘录:

  

x86处理器硬件架构增加了用于选择附加内存的附加地址线,因此物理地址大小从32位增加到36位。理论上,这会将最大物理内存大小从4 GB增加到64 GB。

除了解释机制的图像:

enter image description here

但我看不出地址空间如何从4GB扩展到64GB。 4 * 512 * 512 * 4K仍然等于4GB,不是吗?

3 个答案:

答案 0 :(得分:10)

以32位模式运行的x86处理器使用页面转换作为内存地址。这意味着代码使用的地址(内核和用户模式)与实际物理内存之间存在映射层。例如。在Windows中,所有进程都将.exe文件的映像映射到同一地址。

虚拟地址和物理地址之间的映射层通常只能映射4GB的内存。启用PAE后,32位虚拟地址将映射36位物理地址。但是,单个进程一次不能访问超过4GB的进程。这就是您在粘贴的图像中看到的内容,即一个进程的32位地址空间。您还可以看到包含物理地址的PTE(页表条目)是64位宽。

PAE识别应用程序可以将内存的不同部分交换进入可见地址空间以使用超过4GB的RAM,但在任何单个时间点它只能看到4GB。

答案 1 :(得分:6)

这是仍然是4GB的虚拟地址空间。物理地址空间较大,因为页表条目包含较长的页面物理地址。

参见图片中的“64位PD条目”和“64位PT条目”。这些额外的32位条目构成了页面的较长物理地址。

使用这种特殊方案,您的应用程序仍然可以同时处理高达4GB的内存(减去因保护而通常无法访问的内核部分),但如果您考虑多个应用程序,它们可以一起处理超过4GB的内存。

答案 2 :(得分:3)

没有。地址页面永远不会改变。会发生的是,通过API调用,您可以将内存区域与其他内存区域进行交换。因此,您仍然只有4gb的完整地址空间(可用2-3 GB),但您可以拥有另外2000个512mb的块,您可以将其交换到地址空间的一部分。