我会给你一个简单的答案,但要了解更多信息,我推荐下面的链接到 AMD 的架构文档,非常容易阅读。PS:我没有在这里介绍 Xeon 或 PAE ..
IA-32 (x86) 架构具有用于 RAM 的 32 位物理地址总线。
32 位总线进一步分为 2 个 16 位段,每个段能够访问 2GB 的 RAM,总共 4GB。
这称为存储库切换。
为了提供保护,Intel 和 MS 决定将一个段用于内核模式,另一个用于用户模式——这就是 Windows 历史上拥有 2GB 用户模式地址空间的原因。这是 x86 硬件限制,而不是 Windows 限制。
段寄存器分隔内核空间和用户空间地址。这就是内存保护的实现方式。
此外,IA-32 通用也有 32 位内部寄存器,所以它不能分页。这是实模式(无地址转换)。
分页需要 36 位我认为(不要引用我的话)这就是 IA32e 的用武之地。IA-32e 上的额外位允许从 HDD 分页,这是它可以在 x64 Windows 上运行的唯一方式,因为 x64 需要 NX,它位于位 63。
请阅读 AMD 架构文档,我个人觉得它们比 Intel 版本提供更多信息。
http://developer.amd.com/wordpress/media/2012/10/24593_APM_v21.pdf
引入了带有 AMD64 平面内存的 PS,取消了分段。
但是 32 位进程仍然需要段寄存器。在 AMD64 上,当 32 位进程到达栈顶时,会抛出一个指向新段寄存器的基地址的指针。这样 32 位应用程序可以有效地消耗尽可能多的 RAM,没有限制。在合理的范围内... :)
希望这可以帮助。