3.5 虚拟存储器
虚拟存储器的基本概念,页式虚拟存储器的页表与地址转换,快表 TLB,TLB—页表—Cache 的协同访问,以及段式与段页式虚拟存储器。
基本概念
虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间,在这个空间内,用户可以自由编程,而不必在乎实际的主存容量和程序在主存中实际的存放位置。
- 用户编程允许涉及的地址称为虚地址或逻辑地址,虚地址对应的存储空间称为虚拟空间;
- 实际的主存单元地址称为实地址或物理地址,实地址对应的是主存地址空间,也称实地址空间。
CPU 使用虚地址时,由辅助硬件找出虚地址和实地址之间的对应关系,并判断这个虚地址对应的存储单元内容是否已装入主存。若已在主存中,则通过地址变换,CPU 可直接访问主存指示的实际单元;若不在主存中,则把包含这个字的一页或一段调入主存后再由 CPU 访问。若主存已满,则采用替换算法置换主存中的一页或一段。
页式虚拟存储器
以页为基本单位的虚拟存储器称为页式虚拟存储器。虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页或页框,虚存的页称为虚页。
页表
页表是一张存放在主存中的虚页号和实页号的对照表,它记录程序的虚页调入主存时被安排在主存中的位置。页表一般长久地保存在内存中。页表项通常包括:
| 字段 | 含义 |
|---|---|
| 有效位(装入位) | 表示对应页面是否在主存中。若为 1,则表示该虚页已从外存调入主存;若为 0,则表示没有调入主存,访问会产生缺页异常 |
| 脏位(修改位) | 表示页面是否被修改过,虚存机制中采用回写策略,利用脏位可判断替换时是否需要写回外存 |
| 引用位(使用位) | 用于配合替换策略进行设置,例如实现 LRU 或 Clock 替换算法 |
| 物理页号 | 实页号 |
| 访问权限 | 读 / 写 / 执行权限 |
页表基址寄存器存放当前进程页表的起始地址,地址转换时:页表项地址 = 页表基址 + 虚页号 × 页表项大小。
快表(TLB)
由地址转换过程可知,在不采用快表时,访问一个数据需要两次访存:第一次访问页表得到物理地址,第二次访问主存得到数据。为提高速度,依据程序执行的局部性原理,在一段时间内总是经常访问某些页时,若把这些页对应的页表项存放在高速缓冲器中,就可以节省访问页表的时间。这个专用的高速缓冲器称为快表,也称转换后援缓冲器(TLB),通常采用全相联或组相联方式,由相联存储器实现。
TLB、页表、Cache 的协同
具有 TLB 和 Cache 的多级存储系统中,CPU 给出虚拟地址后,先查 TLB(或页表)得到物理地址,再用物理地址查 Cache,Cache 缺失时再访问主存。三者的命中情况有以下组合:
| 序号 | TLB | Page | Cache | 说明 |
|---|---|---|---|---|
| 1 | hit | hit | hit | 可能,TLB 命中则 Page 一定命中,信息在主存,就可能在 Cache 中 |
| 2 | hit | hit | miss | 可能,TLB 命中则 Page 一定命中,信息在主存,但可能不在 Cache 中 |
| 3 | miss | hit | hit | 可能,TLB 缺失但 Page 可能命中,信息在主存,就可能在 Cache 中 |
| 4 | miss | hit | miss | 可能,TLB 缺失但 Page 可能命中,信息在主存,但可能不在 Cache 中 |
| 5 | miss | miss | miss | 可能,TLB 缺失则 Page 也可能缺失,信息不在主存,一定也不在 Cache 中 |
| 6 | hit | miss | — | 不可能,页缺失说明信息不在主存,TLB 中一定没有该页表项 |
| 7 | — | miss | hit | 不可能,页缺失说明信息不在主存,Cache 中一定也没有该信息 |
段式与段页式虚拟存储器
- 段式虚拟存储器:段是按照程序的自然分界划分的长度可以动态改变的区域。虚拟地址分为段号和段内地址两部分,通过段表实现地址转换。优点是段的分界与程序的自然分界相对应,因而具有逻辑独立性,易于编译、管理、修改和保护,也便于多道程序的共享;缺点是因为段长度可变,分配空间不便,容易在段间留下碎片,不好利用,造成浪费。
- 段页式虚拟存储器:把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。每个程序对应一个段表,每段对应一个页表,段的长度必须是页长的整数倍,段的起点必须是某一页的起点。虚地址分为段号、段内页号、页内地址三部分。优点是兼具页式和段式虚拟存储器的优点,可以按段实现共享和保护;缺点是在地址变换过程中需要两次查表,系统开销较大。
即时练习
- 1下列命中组合情况中,一次访存过程中不可能发生的是( )。
- 2某计算机采用页式虚拟存储管理方式,按字节编址,虚拟地址为 32 位,物理地址为 24 位,页大小为 8 KB;TLB 采用全相联映射。则 TLB 中标记字段 Tag 的位数为( )。
- 3下列关于虚拟存储器的叙述中,正确的是( )。
- 4虚拟存储器中,缺页时由( )负责把缺失的页面从外存调入主存。
标记完成后,侧栏会显示进度。进度仅保存在本浏览器中。