现代系统提供了一种对主存
的抽象概念,叫做虚拟存储器。虚拟存储器提供了三个重要的能力:
- 它将主存看成一个存储再磁盘上的地址空间的高速缓存,再主存中只保护活动区域,并根据需要再磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存
- 它为每个进程提供了一致的地址空间,从而简化了存储器管理
- 它保护了每个进程的地址空间不被其他进程破坏
###地址空间
一个地址空间的大小是由表示最大地址所需要的位数来描述的。例如,一个包含 N = 2^n 个地址的虚拟地址空间就叫做一个 n 位地址空间。现代系统典型地支持 32 位或者 64 位虚拟地址空间。
允许每个数据对象有多个独立的地址,其中每个地址都选自一个不同的地址空间。这就是虚拟存储器的基本思想。
###虚拟存储器作为缓存的工具
在任意时刻,虚拟页面的集合都分为三个不相交的子集:
- 未分配的
- 缓存的
- 未缓存的
###虚拟存储器作为存储器管理的工具
操作系统为每个进程都提供了一个独立的页表,因而也就是一个独立的虚拟地址空间。
多个虚拟页面可以映射到同一个共享物理页面上。
###动态存储器分配
这部分内容实现了一个 malloc
函数,具体的还是得看书温习。
CSAPP 的学习到这也就结束了,有一些章节被我略过了,以后有需要再去进行特定的学习。