引言

虚拟内存提供了三个重要的抽象能力:

将主存看成存储在磁盘上地址空间上的高速缓存。根据需要在磁盘和主存之间传送数据,高效利用主存。

为每个进程提供一致的地址空间,简化内存管理。

保护每个进程的地址空间不被其他进程破坏。

虚拟内存书中有意思的应用举例:

通过读写内存位置,修改一个磁盘文件的内容。

加载一个文件的内容到内存,不需要任何显式的复制。

虚拟内存遍及计算机系统的所有层面,诸如异常、汇编器、链接器、加载器、进程线程、文件等。

这一章分两个部分,前半部分描述虚拟内存的机制本身,后半部分描述应用程序如何管理和使用虚拟内存。

9.1

物理地址:计算机系统主存被组织成一个连续字节大小单元组成的数组。数组的下标可以理解成是物理地址。

CPU使用物理寻址时,生成地址之后直接使用该地址,通过内存总线传递给主存。

早期的PC、数字信号处理器、嵌入式控制器等系统仍然采用这种寻址方式。

虚拟寻址:CPU生成一个虚拟地址,虚拟地址通过MMU(内存管理单元)翻译成物理地址的过程。

地址翻译在硬件层和OS层的紧密合作:MMU利用存放在主存中的查询表翻译虚拟地址。该表的内容由操作系统负责管理。

9.2

虚拟内存允许每个数据对象有多个独立的地址值,每个地址选自一个不同的虚拟地址空间。

主存的每个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地址。(注:对一个特定的主存,物理地址值是唯一的)