32位操作系统上2 GB的限制


8

在32位操作系统上2GB的限制是否意味着每个进程只能访问2GB的内存,或者所有进程总共只能使用2GB的物理内存

那么,为内核保留的2GB是否限制了所有进程一起可以使用的总量?


请注意,Fabian仅指物理内存,而不是页面文件。
阿尔达·西

他也仅指Windows,而不是一般的操作系统。
阿尔达·西

他可能会问这个问题,但没有这种关系。每个进程可以访问2 GB虚拟。其中的一部分将在RAM(“驻留”)中。在Windows 32位客户端版本上,所有进程的驻留内存加上操作系统的驻留内存的总和不能超过4 GB。物理内存分配中没有2 GB的拆分。
Jamie Hanrahan 2015年

在这篇文章中接受的答案给出了完全成熟的信息- stackoverflow.com/questions/490520/...
RBT

Answers:


4

关于32位Windows操作系统中的内存限制,存在许多误解。

首先,当我说RAM时,这包括各种RAM。因此,不仅是常规的,而且还有视频RAM。

对于32位OS,每个进程的最大可用RAM量为2 GB。如果您拥有64位操作系统,则32位进程最多可以分配4 GB。

此外,对于每个组合的进程,整个OS只能寻址4 GB,而64位OS可以分配8 TB。

同样有趣的是,此限制加到了分页池中。这意味着32位OS总共不能使用超过2 GB,这意味着包括虚拟内存在内的所有应用程序都需要6 GB。当然,这与RAM无关,因为其他2 GB会存储在页面文件中,这取决于硬盘的速度。

有关更多信息,请参见Windows版本的内存限制

注意:这仅适用于应用程序。一个32位Windows操作系统最多可以分配4 GB,但是其中2 GB仅分配给系统使用,仅剩下2 GB供应用程序使用。在某些情况下(尤其是较新的OS),对于应用程序,这分为3 GB,对于内核,则分为1 GB。

我只讨论了Windows,因为这是问题所在的上下文。我不熟悉其他操作系统的限制。


2
这个答案是不完整的-除了说包括视频内存外,它不包括“地址空间”的概念,而且32位操作系统上的地址空间实际上仅限于4GB(不带扩展名),而不是2GB(您可以甚至可以告诉XP的32位副本使用3GB的RAM启动)
lunixbochs 2011年

1
问题不是关于什么地址空间。通过讨论内存的寻址方式和32位整数的限制,我可能会感到无聊,但这不是这个问题的实质,因此看起来不必要地复杂。是的,您可以使用/ 3GB开关。这个问题不包括那个。
阿尔达·西

1
4GB内存限制仅适用于标准32位x86体系结构上的物理内存。虚拟内存是不同的,如果32位操作系统正在使用页面文件或交换分区,则可以使用远远超过4GB的内存(不是每个进程总计)。硬盘驱动器的速度不会影响可用页面文件的大小或交换空间(如果硬盘驱动器有空间),则它无法进行页面或交换。它仅影响分页/交换性能。

1
哦,我忘了提一下,视频ram不是一个因素,除非它是共享视频ram共享主ram,但是即使这样,它也只是从可用的物理ram中减去。它不会影响可用的虚拟内存。专用视频卡具有自己的处理器和内存,而系统可用内存中没有任何因素。

@Spooky并非完全正确。如果您查看我的链接,则会看到页面缓冲池受内核模式虚拟地址空间2 GB的限制。这意味着总共约6 GB。
阿尔达·西

0

如果OP指的是Windows操作系统,则除2003服务器数据中心或具有称为PAE(物理地址扩展)概念的企业外,所有32位OS总共限于4GB。这在现代linux内核中也可用。当然,在移动空间之外,32位处理器变得越来越稀有。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.