32 位系统上的 4 GB RAM 限制是否也会影响交换空间?

Sek*_*mty 11 memory linux swap

众所周知,32 位系统最多只能处理 4 GB 的 RAM。

在 Linux 下,这个限制是否也适用于交换分区?如果我的 RAM + 交换超过 4 GB,它会被完全使用吗?

如果答案是“不,它不适用于交换”,为什么?

Dar*_*oid 12

不,想象一下 RAM 就像你的办公桌,而交换空间/虚拟内存就像一个文件柜。您可以将大量信息放入文件柜,但很难访问。任何你想使用的文件,你必须把它们拉出来放在桌子上;问题是桌子一次只能放这么多文件。

32 位机器只能有一个 4GB(2^32,或大约 40 亿字节)大的桌子,但它们仍然可以拥有几乎无限的文件柜。他们只需要在办公桌已满时“换掉”文件,而他们需要查看文件柜中的另一页。


它不适用于交换的原因是访问 RAM 的内容或从中执行代码受限于它可以使用的数字的大小。把它想象成你的桌子上只能有 40 亿个单词,因为这是你可以数的最多的,而且你需要直接使用单词。“单词 3,547 拼写错误。将单词 3,452,780 更改为‘你好’。删除单词 6。”

现在,每页上可能有 4,000 个字。问题是当您引用交换空间时,您不是按单词引用它,而是按页引用它。所以你仍然只能数到 40 亿,但你可以数到 40 亿页。40 亿页实际上包含 16万亿个单词——远远超过你的数。

64 位机器可以算得更高,所以如果它们有足够大的桌子,它们可以一次将所有页面放在桌子上。即使你在32位的机器上放了一张超大的桌子,你也只能数到40亿,所以你没有办法参考桌子上所有多余的单词。


Dav*_*all 11

您混淆了物理内存和虚拟内存。

RAM 是物理内存。交换空间可以包含许多 4GB 的虚拟地址空间。