首先先了解下计算机的存储结构: 虚拟内存是借助二级存储空间来扩大一级存储空间的机制。 DRAM是VM系统(虚拟存储器系统)在主存中的缓存,他在主存中用在缓存虚拟页。 SRAM是CPU和主存之间的高速缓冲,CPU从主存中取指。 CPU先在SRAM中查找,如果不命中,则在DRAM中查找,如果再次查找失败,则通过页面置换,从磁盘中读取数据。由于IO操作开销很大,所以DRAM命中失败的开销更大。当CPU需要从磁盘中查找DRAM未命中的数据时,需要借助MMU(内存管理单元)来获取数据在磁盘中的位置,MMU完成物理地址到虚拟地址的转换,数据在磁盘中的地址就是虚拟地址。 数据一般按页存储,一个页面一般是4~8KB。 虚拟地址(VA),假设其范围是[0,1,2......N-1],N=2^n,N的单位为字节,那么这个虚拟地址就叫做一个n位地址空间。32/64位操作系统具有的虚拟内存空间大小分别是2^32和2^64。 虚拟存储器(VM)就是一个存储在磁盘上的N个连续字节大小的单元。每个字节都是一个唯一的虚拟内存地址。操作系统将VM分割成虚拟页大小的块。 物理存储器被分割成物理页(PP),大小也为字节。 虚拟页(VP)有三种状态: 1)未分配虚拟页:在页表中不存在对该虚拟页的记录; 2)已缓存虚拟页:在页表中有记录,且在物理存储器中已经分配了页面; 3)未缓存虚拟页:在页表中有记录