0

物理地址扩展可用于通过 32 位架构访问超过 4 GB 的物理内存。这是否意味着一个进程可以使用超过 4 GB 的 RAM?根据这张图,如果我们有 32 位来寻址内存,我们仍然不能使用超过 4 GB 的虚拟内存,对吧?那么如果我们不能将它用作虚拟内存,为什么我们需要寻址更多的物理内存呢?

4

2 回答 2

1

您一次只能寻址4GB(在 32 位 Windows 下,您将有 2GB 或 3GB 用于您自己的进程的需要(取决于 boot.ini 设置),因为其余部分用于内核模式的东西。)

对于 Windows,您将使用Address Windowing Extensions - 将可寻址窗口映射到超过 4GB 的物理内存。我不知道其他系统如何处理它,但是Linux可能通过mmap()来处理它?

于 2013-01-27T19:23:19.517 回答
-2

好吧,如果我们有 32 位数据总线,那么我们可以寻址 2^32=4GB,这是事实。这意味着即使我们只有 1GB 物理内存,我们也可以处理更多。然而,在那种情况下,超过 1GB 的地址,即使是有效的,也会导致页面错误,因为内存不存在!

SO 使他们的魔法简单地捕捉页面错误和交换内存到磁盘/从磁盘交换内存。这就是我们称之为“虚拟”记忆的原因,因为它只是一种幻觉,一种诡计(一个伟大的)。

一个进程不可能拥有超过 4GB 的 32 位数据总线,因为它不可能寻址更多。

于 2013-01-27T19:17:00.010 回答