64 位内核上的 32 位应用程序可以使用所有内存吗?

64 位内核上的 32 位应用程序可以使用所有内存吗?

我知道 32 位内核可以使用 PAE 为具有 PAE 的应用程序分配更多 RAM(最多 64GB),因此我想如果我在 32 位内核上运行 32 位应用程序,我可以在一个内核上使用我的所有 24GB应用程序(-我的操作系统正在使用ofc)。

但是如果我使用 64 位内核怎么办? 32 位(多库)应用程序也可以使用我的所有内存吗?还是又被限制为4GB?

答案1

32位进程只能访问大约3GB。 (它可以更少,具体取决于内核编译选项。)内核是 32 位还是 64 位并不重要 — 只会影响运行 64 位应用程序的能力。 PAE 是一种允许更多物理内存但不会改变每个进程看到的虚拟内存大小的方法。这几乎就是“32 位”的意思:指针使用 32 位,因此只有 2 32 个可能的虚拟地址,因此每个进程最多可以访问 2 32 B = 4GB。 Linux 保留 1GB 供内核在系统调用期间使用,还剩下 3GB。

如果应用程序运行多个进程,则它可以使用更多内存。

相关内容