我对 32 位操作系统的理解是,地址以 32 位表示,所以操作系统最多可以使用 2 32 = 4G 内存空间——我假设单位是字节,所以 4GB。
这是否意味着如果任何具有 32 位操作系统(无论是 Windows 还是 Unix)的机器在硬盘上总共有超过 4GB 的 RAM + 页面文件,例如 8GB 的 RAM 和 20GB 的页面文件,它的内存将永远不会被“用完” “?
通过“用起来”我的意思是增加RAM或页面文件将不利于性能; 当然,应用程序总是有可能不断从操作系统请求内存但失败。
同样,如果这台 32 位操作系统机器有 2GB RAM 和 2GB 页面文件,增加页面文件大小对性能没有帮助。这是真的?
Eri*_*ert 145
我对 32 位操作系统的理解是,地址以 32 位表示,因此操作系统最多可以使用 2^32 = 4GB 内存空间
该进程可以处理的最多为 4GB。您可能会将内存与地址空间混淆。 一个进程可以拥有比地址空间更多的内存。这是完全合法的,并且在视频处理和其他内存密集型应用程序中很常见。 一个进程可以被分配几十 GB 的内存,并且可以随意将其交换进出地址空间。一次只有 2 GB 可以进入用户地址空间。
如果你家有一个四车位车库,你仍然可以拥有五十辆车。你不能把它们都放在你的车库里。你必须在其他地方有辅助存储来存储至少 46 个;你把哪些车停在车库里,哪些车停在街对面的停车场里,取决于你。
这是否意味着任何32位操作系统,无论是Windows还是unix,如果机器有RAM+硬盘上的页面文件超过4GB,例如8GB RAM和20GB页面文件,就永远不会“内存用完”?
绝对不是那个意思。单个进程可以使用比这更多的内存!同样,进程使用的内存量几乎与进程使用的虚拟地址空间量完全无关。就像您在车库中保留的汽车数量与您拥有的汽车数量完全无关一样。
而且,两个进程可以共享非私有内存页。如果 20 个进程都加载同一个 DLL,则这些进程都共享该代码的内存页。它们不共享虚拟内存地址空间,而是共享内存。
我的观点是,如果不清楚,您应该停止将内存和地址空间视为同一件事,因为它们根本不是同一件事。
如果这台 32 位操作系统机器有 2GB RAM 和 2GB 页面文件,增加页面文件大小将无助于性能。这是真的?
你有五十辆车和一个四车位的车库,在街上有一个 100 辆车的停车场。您将停车场的大小增加到 200 个停车位。由于您现在拥有 150 个额外停车位而不是 50 个额外停车位,您的汽车是否变得更快?
Dav*_*ebb 69
CPU 确实只能处理最大 4Gb 的 RAM。但是,当前的 CPU 使用 MMU(内存管理单元)将特定于进程的内存地址转换为物理内存地址。
这个 MMU 用于各种不同的技巧,从内存隔离(进程 A 不能操作进程 B 的内存)到内存共享(进程 A 可以访问与进程 B 相同的物理内存区域并可以通过这种方式交换数据)。
尽管 32 位 CPU 仅支持每个进程 4Gb 的内存,但在使用物理地址扩展时它可以寻址高达 64Gb 的 RAM 。这允许进程 A 使用前 4Gb 的内存,而进程 B 使用下一个 4Gb。总共使用了超过 4Gb 的物理内存,但单个进程使用的内存总量仍限制在 4Gb。
自内核版本 2.3.23 起,Linux 和某些 32 位版本的 Windows Server 支持 PAE,但不支持 32 位 Windows XP、Vista 或 7。
如果您的 CPU 不支持 PAE,您将被限制为 4GB 的物理内存(或更少,取决于其他因素)。
请注意,无论 CPU 支持 PAE,您的操作系统仍然可以将部分物理内存驱逐到磁盘(页面文件)。这确保您可以启动使用超过 4Gb 的多个进程。PAE 的唯一影响是您是否可以在运行进程 A 时将进程 B 的 4Gb 保留在物理内存中。
Bre*_*ugh 15
特别是关于 32 位 Windows 变体,自 Windows 2003 变体以来,它们已经支持超过 4GB 的 RAM(您还可以获得Windows 7的内核破解,以允许您在 32 位中使用所有 RAM)。但是,正如您在问题的第一部分中概述的那样,这是有代价的。
在 32 位操作系统中,指针(内存地址)的大小与 CPU 的字长相同,32 位,允许(如您所述)2^32 = 4GB 内存空间。Windows 还为应用程序采用“虚拟内存”方法,因此每个应用程序都有自己的内存空间。
由于每个指针只有 32 位宽,每个应用程序的指针最多只能寻址 4GB 的内存,即使系统可以支持超过 4GB 的 RAM。据我所知,这是在 32 位操作系统中使用超过 4GB RAM 的唯一警告。总的来说,您可以让许多应用程序使用超过 4GB 的 RAM,但任何一个特定进程最多只能分配/访问 4GB。
回到您的问题,假设您有一个使用 2GB RAM 的程序。如果您有这个程序的 10 个实例,那就是 20GB。将用完所有 8GB 的 RAM,以及另外 12GB 的页面文件。所以是的,在 32 位操作系统下,用完这个内存是很有可能的。
如果这台 32 位操作系统机器有 2GB RAM 和 2GB 页面文件,增加页面文件大小将无助于性能。这是真的?
增加页面文件大小通常不会提高性能(除非您的 RAM 和页面文件设置为绝对最小值,或者设置得如此之低,否则您的计算机会不断颠簸)。但是,它会防止您的计算机耗尽(虚拟)内存。每当需要将任何内容清除到页面文件时,您就已经遭受了巨大的性能损失(因为硬盘驱动器比您的 RAM 慢几个数量级)。