【计算机组成原理回顾】理解虚拟内存机制

推荐阅读 计算机底层知识拾遗(一)理解虚拟内存机制

虚拟内存主要提供了3个能力:

  1. 给所有进程提供一致的地址空间,每个进程都认为自己是在独占使用单机系统的存储资源

  2. 保护每个进程的地址空间不被其他进程破坏,隔离了进程的地址访问

  3. 根据缓存原理,上层存储是下层存储的缓存,虚拟内存把主存作为磁盘的高速缓存,在主存和磁盘之间根据需要来回传送数据,高效地使用了主存

虚拟地址和物理地址

对于每个进程来说,它使用到的都是虚拟地址,每个进程都看到一样的虚拟地址空间,对于32位计算机系统来说,它的虚拟地址空间是 0 - 232,也就是0 - 4G。对于64位的计算机系统来说,理论的虚拟地址空间是 0 - 264,远高于目前常见的物理内存空间。虚拟地址空间不需要和物理地址空间一样大小。

CPU在执行进程的指令时要取一个实际的物理地址的值的时候主要有几步:

  1. 把进程指令使用的虚拟地址通过MMU转换成物理地址

  2. 把物理地址映射到高速缓存的缓存行

  3. 如果高速缓存命中就返回

  4. 如果不命中,就产生一个缓存缺失中断,从主存相应的物理地址取值,并加载到高速缓存中。CPU从中断中恢复,继续执行中断前的指令

所以高速缓存是和物理地址相映射的,进程指令中使用到的是虚拟地址。

  1. 对于CPU来说,它的目标存储器是物理内存,使用高速缓存做物理内存的缓存

  2. 同样,对于虚拟内存来说,它的目标存储器是磁盘空间,使用物理内存做磁盘的缓存

内存映射机制

虚拟内存的目标存储器是磁盘,所以虚拟内存区域是和磁盘中的文件对应的。初始化虚拟内存区域的内容时,会把虚拟内存区域和一个磁盘文件对象对应起来,这个过程叫内存映射(memory mapping)。虚拟内存可以映射的磁盘文件对象包括两种:

  1. 一个普通的磁盘文件,文件中的内容被分成页大小的块。因为按需进行页面调度,只有真正需要读取这些虚拟页时,才会交换到主存

  2. 一个匿名文件,匿名文件是内核创建的,内容全是二进制0,它相当于一个占位符,不会产生实际的磁盘流量。映射到匿名文件中的页叫做请求二进制零的页(demand zero page)

你可能感兴趣的:(面试,学习)