2

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

众所周知,默认情况下,32 位 Windows 上的进程自行获得 2 GB 内存。该内存可以位于系统内存、交换文件、USB 驱动器等中。

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

我的问题是,如何在不完全破坏性能的情况下做到这一点?处理器是否有某种机制来映射内存地址?

每次我们不想访问内存时都要求操作系统进行地图查找,看起来很慢..

4

3 回答 3

4

有一个硬件设备进行翻译 - 它称为内存管理单元(MMU)。大多数现代 CPU,即使是用于智能手机等设备的 CPU,都包含 MMU。

于 2010-08-16T12:17:53.537 回答
2

早期虚拟内存实现的描述

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

于 2010-08-18T14:42:43.753 回答
2

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

于 2010-08-16T10:00:44.303 回答