代码之家  ›  专栏  ›  技术社区  ›  monoceres

从性能的角度来看,如何接受虚拟地址空间映射?

  •  2
  • monoceres  · 技术社区  · 14 年前

    这个问题针对的是任何使用VAS模型的操作系统,但我将指定WindowsNT,因为这是我最了解的系统。

    众所周知,在默认情况下,32位windows上的进程都会自己获得2GB的内存。此内存可以位于系统内存、交换文件、usb驱动器等中。

    这意味着几个进程可以在地址0x12345678处分配内存,但是这当然不可能映射到同一个物理内存。

    我的问题是,如何做到这一点,而不完全粉碎性能?处理器是否有某种机制来映射内存地址?

    3 回复  |  直到 14 年前
        1
  •  4
  •   caf    14 年前

    有一个硬件设备可以进行翻译-它被称为 Memory Management Unit

        2
  •  2
  •   blaze    14 年前

    是的,他们有,这就是虚拟内存的用途。对由硬件映射到物理内存单元的虚拟地址0x12345678的每一次内存访问(或由于该虚拟地址没有物理内存而导致中断)

        3
  •  2
  •   dbasnett    14 年前

    早期虚拟内存实现的描述

    http://www.multicians.org/multics-vm.html