Memory management 物理地址扩展

Memory management 物理地址扩展,memory-management,architecture,Memory Management,Architecture,可通过32位体系结构访问超过4 GB的物理内存。这是否意味着一个进程可以使用超过4GB的RAM?如果我们有32位来寻址一个内存,我们仍然不能使用超过4GB的虚拟内存,对吗?那么,如果我们不能将物理内存用作虚拟内存,为什么我们需要寻址更多的物理内存呢?好吧,如果我们有32位的数据总线,那么我们就可以寻址2^32=4GB,这是事实。这意味着即使我们只有1GB的物理内存,我们也可以解决更多的问题。然而,在这种情况下,超过1GB的地址,即使是有效的,也会导致页面错误,因为内存不在那里 SO的神奇之处在于

可通过32位体系结构访问超过4 GB的物理内存。这是否意味着一个进程可以使用超过4GB的RAM?如果我们有32位来寻址一个内存,我们仍然不能使用超过4GB的虚拟内存,对吗?那么,如果我们不能将物理内存用作虚拟内存,为什么我们需要寻址更多的物理内存呢?

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

SO的神奇之处在于简单地捕捉页面错误并在磁盘之间交换内存。这就是我们称之为“虚拟”记忆的原因,因为它只是一个幻觉,一个骗局(一个伟大的骗局)


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

您一次只能寻址4GB(在32位Windows下,您可以拥有2GB或3GB的地址来满足您自己进程的需要(取决于boot.ini设置),因为剩余的地址用于内核模式。)


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

您可以在4GB地址空间中交换内存;地址空间和可用内存不是一回事。有人知道为什么-1?如果我们有1GB的物理内存,虚拟内存(可寻址)仍然是4GB;也可能有一些数据,例如由交换或文件支持(考虑将一些文件映射到内存中)。嗯,但你还是没说PAE有错。我们只能从32位进程直接寻址4GB,因为只有4GB虚拟空间,可以通过32位指针寻址。AWE是使用超过4GB内存的另一种方式,它允许使用,但不允许同时处理大于4GB的所有内容。在Linux中,可以使用tmpfs模拟AWE。(tmpfs类似于RAMdisk,它的大小不受限制——由内核管理。您可以将tmpfs的某些部分映射到窗口)您的评论与我的回答有何矛盾?我并没有说您可以寻址所有内存,但特别指出您可以将一个窗口映射到大于4GB的内存。嗯。。这并不矛盾。所以,请在我之前的评论中读“对”而不是“错”。