为什么 32 位 Windows 施加 2 GB 的进程地址空间限制,而 64 位 Windows 施加 4GB 的限制?

为什么 32 位 Windows 施加 2 GB 的进程地址空间限制,而 64 位 Windows 施加 4GB 的限制?

我知道2^32 = 4,294,967,2962GB 是给操作系统的,2GB 是给进程的,但为什么 64 位操作系统只提供 4GB 的地址空间?难道不应该是2^64 = 18,446,744,073,709,551,615操作系统和进程之间平均分配的很多超过 4 GB?

答案1

如果你看看Windows 版本的内存限制

x64 用户模式虚拟地址空间的限制不是,4GB但至少8TB

一些解释这证明了8Tb限制的合理性。

默认情况下,32 位 exe2GB也只能在 64 位操作系统上运行,除非对其进行调整IMAGE_FILE_LARGE_ADDRESS_AWARE

答案2

2^32(4GB)是使用 32 位指针一次可以寻址的最大地址空间量。因此,32 位进程必然限制在 4GB 的地址空间内,因为它使用 32 位指针,无论操作系统是什么。

请注意,这纯粹是对虚拟的进程可以一次映射到其地址空间的内存。

答案3

您的计算是正确的。运行 64 位系统时,您无需担心地址空间(它比您的系统支持的要大得多)。如果 RAM 大小不是它应该的大小,则问题出在其他地方。也许您的主板有限制,或者某些 RAM 棒不受支持/损坏。

相关内容