2024年3月24日二稿(王道3.6 P151)
3.6 虚拟存储器
3.6.1 虚拟存储器的基本概念
主存和辅存共同构成了虚拟存储器,二者在硬件和系统软件的共同管理下工作。
对于应用程序员而言,虚拟存储器是透明的。虚拟存储器具有主存的速度和辅存的容量。
虚拟存储器 将主存或辅存的地址空间统一编址,形成一个庞大的地址空间。
在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。
用户编程允许涉及的地址称为虚地址或逻辑地址,虚地址对应的存储空间称为虚拟空间或程序空间。
实际的主存单元地址称为实地址或物理地址,实地址对应的是主存地址空间,也称实地址空间。
虚地址比实地址要大很多。虚拟存储器的地址空间如图3.24所示。
虚拟存储器只能采用回写法的原因
虚拟存储器也采用和Cache类似的技术,将辅存中经常访问的数据副本存放到主存中。但是缺页(或段)而访问辅存的代价很大,提高命中率是关键,因此虚拟存储机制采用全相联映射,每个虚页面可以存放到对应主存区域的任何一个空闲页位置。
此外,当进行写操作时,不能每次写操作都同时写回磁盘,因而,在处理一致性问题时,采用回写法。
页式虚拟存储器
1. 页表
2. 地址转换
在虚拟存储系统中,指令给出的地址是虚拟地址,因此当CPU执行指令时,要先将虚拟地址转换为主存物理地址,才能到主存中存取指令和数据。
虚拟地址分为两个字段:高位为虚页号,低位为页内偏移地址。
物理地址也分为两个字段:高位为物理页号,低位为页内偏移地址。
由于两者的页面大小相同,因此页内偏移地址是相等的。
虚拟地址到物理地址的转换是由页表实现的,页表是一张存放在主存中的虚页号和实页号的对照表。