众所周知,32 位系统最多只能处理 4 GB 的 RAM。
在 Linux 下,此限制是否也适用于交换分区?如果我的 RAM + 交换分区超过 4 GB,是否会被充分利用?
如果答案是“不,它不适用于交换”,为什么?
答案1
不,想象一下 RAM 就像您的办公桌,而交换空间/虚拟内存就像文件柜。您可以将大量信息放入文件柜中,但很难访问。任何您想使用的文件,您都必须将其取出并放在桌子上;问题是桌子一次只能容纳这么多文件。
32 位计算机只能拥有 4GB(2^32,或约 40 亿字节)大小的办公桌,但它们仍然可以拥有几乎无限的文件柜。当办公桌已满并且它们需要查看文件柜中的另一页时,它们只需“交换”纸张即可。
它不适用于交换的原因在于,访问 RAM 的内容或从中执行代码受限于它可以处理的数字的大小。想象一下,你的桌子上只能有 40 亿个单词,因为这是你所能数的最大数量,而你需要直接处理单词。“单词 3,547 拼写错误。将单词 3,452,780 更改为‘Hello’。删除单词 6。”
现在,每页可能有 4,000 个单词。问题是,当你引用交换空间时,你不是按单词引用,而是按页引用。所以你仍然只能数到 40 亿,但你可以数到 40 亿页。40 亿页实际上包含 16兆单词——比你能数出来的要多得多。
64 位计算机只能计数得更高,因此,如果桌子足够大,它们可以一次将所有页面放在桌子上。即使你在 32 位机器上放了一张超大的桌子,你仍然只能计数到 40 亿,所以你无法引用桌子上所有额外的单词。
答案2
您混淆了物理内存和虚拟内存。
RAM 是物理内存。交换空间可以包含许多 4GB 虚拟地址空间。