有关内存的计算机基础知识

有关内存的计算机基础知识

当主存容量为2GB时,在32位地址总线的支持下,处理器可以访问的最大程序是多少?

答案1

如果您有 32 位地址空间,那么您可以寻址 2^32 (4Gi) 字节的内存。就虚拟地址空间中运行的程序而言,我认为没有理由它无法寻址和访问 4GiB 内存。

这需要做一些假设,比如操作系统使用虚拟内存,可能还有一些硬件(MMU)来辅助等等。但对于任何现代 32 位 CPU 和任何现代操作系统来说,这都不是问题。所有现代系统都支持分页,因此它只需要将当前正在访问的 4GiB 部分放在物理内存中即可。


关于通用答案就说这么多,现在讨论针对 Windows 和 x86 的答案。

Windows(自 win2000 时代以来?)确实使用虚拟内存和分页。它还默认将 4Gi 地址范围一分为二。上半部分用于内核,下半部分用于用户程序。这为用户程序强加了 2GiB 地址的人为限制,或者当您以特殊模式启动内核并使用 LARGEADDRESSAWARE 程序时,限制为 3GiB。

这会将您的用户程序限制于此。

然后是 PAE,人为地将内存总线扩展至 36 位。PAE 是一个丑陋的临时解决方案,自 64 位 CPU(过去二十年来一直很常见)以来就不再需要。

这正在变成一篇“假设”然后“回答 X”的帖子。这意味着最好有一个更具体的问题。

答案2

理论上是 2GB,但其中一部分将被操作系统本身保留和/或使用。

请注意,即使您在 64 位操作系统上运行 32 位进程,除非有意重新设计,否则它们也限制为 2GB。如果重新设计时考虑了 IMAGE_FILE_LARGE_ADDRESS_AWARE,则限制变为,根据 MSDN,3GB。

相关内容