在工作中,我可以选择安装16GB的64位Windows 7。我能想到的最好的好处是Windows 7 64位可以利用超过4GB的内存。我的一位同事说,即使我安装了64位Windows 7,32位应用程序也无法满足所有内存的需求。这让我很困惑,并且不确定这意味着只有64位应用程序可以在4GB到16GB之间的内存空间中运行。如果我使用每个1GB运行10个32位应用程序,我应该能够在没有分页的情况下执行此操作吗?
在工作中,我可以选择安装16GB的64位Windows 7。我能想到的最好的好处是Windows 7 64位可以利用超过4GB的内存。我的一位同事说,即使我安装了64位Windows 7,32位应用程序也无法满足所有内存的需求。这让我很困惑,并且不确定这意味着只有64位应用程序可以在4GB到16GB之间的内存空间中运行。如果我使用每个1GB运行10个32位应用程序,我应该能够在没有分页的情况下执行此操作吗?
Answers:
每个程序都在其自己的虚拟内存空间中运行。当程序从OS请求内存时,它们以1MB的块分配。程序将此内存视为一个大的,连续的内存块(即所谓的“平面内存模型”)。这与旧的16位模型“分段存储器”模型不同,其中两个寄存器将组合成单个20位或32位存储器地址,具体取决于存储器控制器的当前操作模式。
每个32位程序将限制为2GB的总可用内存;从0x20000000开始的内存区域用于32位应用程序中的DLL。确实,a 单个人 32位应用程序将无法访问所有16GB内存,因为它并非全部可寻址。但是,每个程序都在其虚拟内存块底部附近(接近0x00000000)启动,并且虚拟内存管理器将其偏移到RAM中的实际物理位置,因此从这个意义上讲,32位程序可以驻留在任何位置。物理内存。从概念上讲,这意味着你可以用32位程序填充所有16GB的RAM。
32位和64位应用程序可以并排运行,并且位于RAM中的任何位置。请注意,在内存耗尽之前发生分页,因此,如果没有发生分页,您仍然不可能运行16个1GB RAM应用程序。系统尝试保留一些物理内存,并将其用作磁盘读写的缓存。
请注意,即使是32位操作系统 能够 访问超过4GB的内存,虽然每个应用程序仍然限制为4GB。这是因为称为PAE(物理地址扩展)的相对古老的技术。作为授权问题,32位Windows不允许您访问2GB / 4GB以上的内存,但32位版本的Linux可以在16GB系统上运行,并且可以完全访问已安装的内存。某些32位版本的Windows Server也可以访问超过4GB的内存:“Windows Server 2008 Datacenter”可以在32位处理器上使用高达64GB的RAM。