PAE 对 32 位 Windows 系统中线程程序的好处

PAE 对 32 位 Windows 系统中线程程序的好处

如果我的系统具有超过 4GB 的 RAM,并且启用了 PAE(在 64 位 CPU 上),那么线程化的 32 位应用程序是否能够总共使用 4GB,或者每个线程使用 4GB?

我之所以问这个问题,是因为我正在运行的 DAW(数字音频工作站)软件仅与 Windows XP 32 位兼容(由于驱动程序不好,无法使用 7 或 XP x64),并且我的 DAW 软件(Sonar X1 Producer)是一个线程应用程序。我计划很快从 4GB 升级到 12GB,并且我希望能够使用全部内存(我可以在我的 Win7 x64 安装上使用全部内存)。由于我只运行一个应用程序,因此如果每个线程可以使用 4GB,而不是应用程序使用 4GB,那么它主要只对 XP 安装有用。

答案1

进程将能够使用物理 RAM 的每个字节。进程可以使用的物理 RAM 数量没有限制,只要操作系统可以访问该物理 RAM 即可。

但是,进程中所有线程的共享地址空间基本上会被限制在 4GB 以下(实际上为 2GB 或 3GB),因为这是 32 位进程支持的最大地址空间。32 位进程使用 32 位指针,2^32=4GB。所有线程共享所有地址空间,否则您无法将指针从一个线程传递到另一个线程。

无论 PAE 如何,也不管您有多少物理内存,此限制都适用。对于 32 位进程,地址空间通常为 2GB。您可以使用开关将其调整为 3GB /3GB

再次,这没有什么与物理内存的使用有关——每个进程始终可以使用物理内存的每个字节。这严格来说是地址空间的限制。PAE 允许操作系统使用更多的物理内存。地址空间限制会影响进程使用虚拟内存的方式。

答案2

MSDN 讨论物理地址扩展以及其他大内存寻址扩展。基本上,任何 32 位应用程序只能映射约 2GB 的内存(具体取决于每台机器)。虽然操作系统能够访问更多内存,但每个单独的应用程序仍然仅限于 2GB 的地址空间。 注意:2GB 限制是每32位进程不是每个线程。

Windows XP Professional 支持 4GT(4 GB 调整)模式,允许应用程序寻址高达 3GB 的地址空间。可以使用 boot.ini 文件中的 /3GB 开关启用该模式。

答案3

默认情况下,32 位应用程序可以访问 2Gb 的地址空间,无论物理 RAM 的数量或设置了哪些“标志”(例如 /3G /PAE)...

在 .exe 标头中设置了 LARGEADDRESSAWARE 标志的应用程序可以在 32 位系统上访问总共 (所有线程的总和) 3Gb 的地址空间,在 64 位系统上访问 4Gb 的地址空间。

相关内容