这个问题针对的是任何使用VAS模型的操作系统,但我将指定WindowsNT,因为这是我最了解的系统。
众所周知,在默认情况下,32位windows上的进程都会自己获得2GB的内存。此内存可以位于系统内存、交换文件、usb驱动器等中。
这意味着几个进程可以在地址0x12345678处分配内存,但是这当然不可能映射到同一个物理内存。
我的问题是,如何做到这一点,而不完全粉碎性能?处理器是否有某种机制来映射内存地址?
有一个硬件设备可以进行翻译-它被称为 Memory Management Unit
是的,他们有,这就是虚拟内存的用途。对由硬件映射到物理内存单元的虚拟地址0x12345678的每一次内存访问(或由于该虚拟地址没有物理内存而导致中断)
早期虚拟内存实现的描述
http://www.multicians.org/multics-vm.html