在运行 Large Address Aware 程序的情况下,Win7 32 位内核还能使用 2 GB 吗?

在运行 Large Address Aware 程序的情况下,Win7 32 位内核还能使用 2 GB 吗?

我目前正在运行带有 6 GB RAM 的 32 位 Windows 7 Professional。

我使用 PAE 补丁来在 32 位 Windows 中使用超过 3.5 GB 的 RAM。这里也进行了类似的讨论: 如何在 Windows 7(32 位)上启用 PAE 以支持超过 3.5 GB 的 RAM?

Win7 SP1补丁链接如下: https://wj32.wordpress.com/2011/02/23/pae-patch-updated-for-windows-7-sp1/

总之,长话短说,我已经安装了补丁,但是如果你们当中有人玩过 Skyrim 的话,可能知道,最新版本的 Skyrim (1.3.10) 默认启用了 Large Address Aware 标志,允许它在 32 位 Windows 中使用最多 3 GB 内存,在 64 位 Windows 中使用最多 4 GB 内存。当然,要利用这一点,您还必须在 BCD 条目 (userva=3072) 中设置一个用户环境变量,以允许应用程序在 32 位 Windows 中使用完整的 3 GB。

问题是:根据我从一位朋友那里了解到的情况,32 位 Windows 内核最多只能为自己寻址 2 GB 的内存。启用 PAE 补丁并使用启用 LAA 的应用程序(如 Skyrim)后,32 位 Windows 内核在正确利用可用的额外内存方面会遇到任何问题吗(例如,由于原来的 4 GB 限制,它是否仍然只能寻址 1 GB)或者 Windows 是否能够为自己正确分配足够的内存,以便内核可以使用所需的 2GB?请记住,我的原始配置中有 6 GB。

据我所知,即使应用程序不是设计为与 PAE 一起工作的,一个应用程序在达到其“限制”之前仍然可以使用最多 2 GB 的内存,因此从理论上讲,我最多可以有 3 个应用程序,每个应用程序使用 2 GB(假设 Windows 没有占用任何内存,但只是理论上的情况)而且我仍然会没事,因为 Windows 正在处理这些应用程序所在的内存空间。

如果我错了,请随时纠正我 - 我不是程序员,但我有点好奇使用这种配置会遇到什么样的天花板或墙壁。

答案1

物理内存限制和虚拟内存限制完全无关。两者毫无关联。PAE 取消了物理内存的 4GB 限制。它与涉及虚拟内存的 3GB/LAA 问题毫无关联。

不过,还有一个棘手的问题。启用 3GB 模式后,内核只有 1GB 的可用地址空间。某些系统条目(包括用于跟踪物理内存使用情况和映射以及整个非分页池的条目)必须位于该地址空间中。因此,您的操作系统可能受到地址空间限制。这可能会给 32 位操作系统带来问题,尤其是当其他东西(例如高端视频卡)占用大量地址空间时。

如果您遇到此问题,第一个症状就是网络莫名其妙地出现故障并出现奇怪的错误。例如,请参阅此微软线程

您从未提到您正在使用 /3GB。如果没有它,LAA 进程仍然被限制在 2GB。

据我所知,即使应用程序不是设计为与 PAE 一起工作的,一个应用程序在达到其“限制”之前仍然可以使用最多 2 GB 的内存,因此从理论上讲,我最多可以有 3 个应用程序,每个应用程序使用 2 GB(假设 Windows 没有占用任何内存,但只是理论上的情况)而且我仍然会没事,因为 Windows 正在处理这些应用程序所在的内存空间。

不!2GB 限制已开启虚拟的内存。您有 6GB身体的内存。您可以拥有 50 个进程,每个进程使用 2GB 内存,并且除了这 50 个进程中的每个进程的限制之外,您不会达到任何限制。

答案2

32 位 Windows 内核自身只能寻址最多 2 GB 的内存。

是的——内核不会从程序的 4 GB 内存中占用超过 2 GB 的内存虚拟的地址空间(或超过 1 GB,如果你有标志/3GB并且程序是大地址感知的)。因此每个应用程序都保证较低的 2 GB虚拟内存(或在后一种情况下为 3 GB)。

使用 PAE,内核可以使用最多 64 GB身体的记忆。但是每个程序仍然有 4 GB 的虚拟地址空间。除了升级到 64 位系统外,您无法通过其他任何方式解决这个问题。

据我所知,即使应用程序不是设计为与 PAE 一起工作的,一个应用程序在达到其“限制”之前仍然可以使用最多 2 GB 的内存,因此从理论上讲,我最多可以有 3 个应用程序,每个应用程序使用 2 GB(假设 Windows 没有占用任何内存,但只是理论上的情况)而且我仍然会没事,因为 Windows 正在处理这些应用程序所在的内存空间。

是的。

如果应用程序需要超过 2 GB身体的内存,它必须使用异戊烯醇,但我严重怀疑游戏是否能做到这一点(编程并不容易)。

相关内容