猿问
下载APP

在64位操作系统上,32位进程可以访问多少内存?

在64位操作系统上,32位进程可以访问多少内存?

在Windows上,在正常情况下,32位进程只能访问2GB的RAM(或在boot.ini文件中有一个特殊开关的3GB内存)。在64位操作系统上运行32位进程时,有多少内存可用?是否有任何特殊的开关或设置可以改变这一点?



慕婉清6462132
浏览 165回答 3
3回答

繁华开满天机

默认情况下为2GB。如果应用程序具有大地址空间(与/LARGEADDRESSAWARE链接),则它将获得4GB(而不是3GB,请参见http:/msdn.microsoft.com/en-us/Library/aa366778.aspx)它们仍然被限制在2GB以内,因为许多应用程序依赖于顶部指针的位值为零。

慕仙森

4GB减去与/LARGEADDRESSAWARE链接的系统正在使用的内容。当然,如果设置该标志,则应该更加小心指针算术。

慕慕森

64位操作系统下的单个32位进程仅限于2GB.但是,如果将其编译为设置了Image_file_Large_Address_ACTIVE位的EXE文件,那么它的限制是4GB,而不是2GB-参见https:/msdn.microsoft.com/en-us/Library/aa366778(VS.85).aspx在任何一种情况下,内核的虚拟地址空间都是在所有进程之间共享的。这就是为什么即使您有大量的32位进程,它们也会耗尽内存,尽管您的64位操作系统有大量内存可用,比如16 GB-32位进程总共可以快速耗尽内核的虚拟地址空间(最多为2GB)。您所听到的关于特殊引导标志、3GB、/3GB开关或/userva的内容都是关于32位操作系统的,不适用于64位Windows。看见https:/msdn.microsoft.com/en-us/Library/aa366778(v=vs.85).aspx更多细节。至于32位操作系统,与人们的看法相反,32位操作系统没有4GB的物理限制。例如,32位服务器操作系统(如MicrosoftWindowsServer 2008 32位)可以访问多达64 GB(Windows Server 2008 Enterprise和Datacenter版本)-通过物理地址扩展(PAE)(最初由Intel在奔腾Pro中引入,后来由AMD在Athlon处理器中引入)-它定义了三个层次的页表层次结构,每个表条目为64位,而不是32位,允许这些CPU直接访问大于4G的物理地址空间-因此理论上,32位操作系统理论上可以访问2^64字节,或者17 179,869,184 GB,但段受到限制。4GB..然而,由于市场的原因,微软在非服务器操作系统上的最大可访问内存仅限于4GB,甚至3GB。因此,一个进程可以在32位操作系统上访问超过4GB的内存,MicrosoftSQL Server就是一个例子。
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答