想要更好的理解虚拟内存技术,必须要知道计算机中著名的局部性原理。
局部性原理是虚拟内存技术的基础,正是因为程序运行具有局部性原理,才可以只装入部分程序到内存就开始运行。局部性原理主要表现在以下两个方面:
1. 时间局部性:如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能被再次访问。产生时间局部性的典型原因,是由于在程序中存在着大量的循环操作。
2. 空间局部性:一旦程序访问了某个存储单元,在不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,这是因为指令通常是顺序存放、顺序执行的,数据也一般是以向量、数组等形式聚集存储的。
时间局部性是通过将近来使用的指令和数据保存到高速缓冲存储器中,并使用高速缓存的层次结构实现;空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上就是建立了“内存—外存”的两级存储器的结构,利用局部性原理实现高速缓存。