现代系统提供了一种对主存的抽象概念,叫做虚拟存储器。虚拟存储器提供了三个重要的能力:

  • 它将主存看成一个存储再磁盘上的地址空间的高速缓存,再主存中只保护活动区域,并根据需要再磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存
  • 它为每个进程提供了一致的地址空间,从而简化了存储器管理
  • 它保护了每个进程的地址空间不被其他进程破坏

###地址空间

一个地址空间的大小是由表示最大地址所需要的位数来描述的。例如,一个包含 N = 2^n 个地址的虚拟地址空间就叫做一个 n 位地址空间。现代系统典型地支持 32 位或者 64 位虚拟地址空间。

允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。这就是虚拟存储器的基本思想。

###虚拟存储器作为缓存的工具

在任意时刻,虚拟页面的集合都分为三个不相交的子集:

  • 未分配的
  • 缓存的
  • 未缓存的

###虚拟存储器作为存储器管理的工具

操作系统为每个进程都提供了一个独立的页表,因而也就是一个独立的虚拟地址空间。

多个虚拟页面可以映射到同一个共享物理页面上。

###动态存储器分配

这部分内容实现了一个 malloc 函数,具体的还是得看书温习。


CSAPP 的学习到这也就结束了,有一些章节被我略过了,以后有需要再去进行特定的学习。