虚拟存储器

华中科技大学-计算机组成原理
电子科技大学-计算机组成原理

概述

虚拟存储器是建立在主存与辅存物理结构基础之上,由附加硬件装置以及操作系统存储管理软件组成的存储体系。

作用:解决主存容量不足的问题,为程序员提供比主存空间大的编程空间。

graph LR A[分类] --> B[页式] A --> C[段式] A --> D[段页式]

虚地址和实地址

虚拟地址(又称逻辑地址)

虚页号 页偏移量
与页表项数相关 与物理页大小相关

MMU Memory Management Unit

管理虚拟存储器和物理存储器的一个硬件,页表基址寄存器在MMU中

页式虚拟存储器

在这里插入图片描述
主存和外存统一分页后进行管理

页表 Page Table

虚地址到实地址的变换是由页表(Page Table)实现的,页表存储在主存中。对应的每一个虚页号有一个表目(Page Table Entry),页表是页表项的集合。

| 虚页号 | 有效位 |实页号|
|--|--|--|--|
| 0000 | 1 |0101|
|0001|1|1011|
|...|...|...|

有效位为1表示虚页对应的数据都已调入主存
有效位为0表示虚页对应的数据未调入主存

作用:记录虚地址页号与实地址页号的对应关系,即虚页面调入主存时被安排在主存中的位置(实页号)

页表基址寄存器

记录页表在主存中的起始地址

PTE的地址 = 页表基址 + 页号 × PTE的字节数

实页和虚页

页式管理系统的信息传送单位是定长的页,主存的物理空间也被划分为等长的固定区域,称为页面。

虚页 (逻辑页) 虚拟空间分成的页
实页 (物理页) 实际空间分成的页

假设主存页大小为4K,虚存大小为4GB
4K= 212,4GB = 232B ,则有:
页内偏移量 = log2212 = 12位
虚拟页号 = log2232 - 12 = 20位,对应的页表有1024*1024项

TLB Translation Lookaside Buffer

flowchat st=>start: 查页表流程 e=>end: 访问主存取得数据 op0=>operation: 页面修改,页面替换 op1=>operation: 访问主存查页表 cond=>condition: 页面是否命中? st->op1->cond cond(yes)->e cond(no)->op0->op1

把页表中最活跃的部分存放在一个小容量的高速存储部件中组成TLB(Translation Lookaside Buffer),以减少访问主存次数,提高运行速度。

在这里插入图片描述

TLB是PT的子集

flowchat st=>start: 同时查TLB和主存中的页表 e=>end: 结束 op0=>operation: 停止查找主存页表 op1=>operation: 继续查找主存页表 op2=>operation: 将对应的实页号送入实地址寄存器 op3=>operation: 将此虚页号对应的实页号送入TLB,替换TLB某一行内容 op4=>operation: 将对应的实页号送入实地址寄存器 cond=>condition: TLB是否命中? st->cond cond(yes)->op0->op2->e cond(no)->op1->op4->op3->e

某计算机的虚拟存储系统有40位虚拟地址,32位实际地址,虚页1M。假定有效位,保护位,修改位和使用位共用去四位,所有虚页都在使用。计算页表大小和页面大小。

解:
因为虚拟存储系统有40位虚地址,32位实地址,虚页为1M,所以页内地址为 = log2220 = 20

31 - 20 19 - 0
物理页号(12位) 页内地址(20位)
39 - 20 19 - 0
虚页面号(20位) 页内地址(20位)

页表的字长 = 物理页号位数 + 有效位、保护位、修改位和使用位共4位 = 16位。
页表的单元数 = 1M (220
页表大小 = 1M × 16
页面大小 = 1M

段式虚拟存储器

在这里插入图片描述

段表

在这里插入图片描述
段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立的部分(代码段,数据段等)。段作为独立的逻辑单位可以被其他程序段调用,形成段间连接,产生规模较大的程序。一般用段表来指明各段在主存中的位置。

为了将虚地址转换为实地址,操作系统将创建一个段表,包括:段号,段基址,段长,装入位

段页式虚拟存储器

在这里插入图片描述
每个程序按逻辑模块分段,段内再分页,页面大小和内存页面相同。操作系统创建两表:段表、页表。

段和页结合的存储管理系统。程序按模块分段,段内再页,主存仍以页为信息传送单位,用段表和页表进行两级管理。

虚地址格式

段号 页号 页内地址

实地址格式
| 页号 |页内地址|
|--|--|--|

先查段表,得到页表实地址;再查页表,得到主存实页号
在地址映射过程中需要查两次表,速度较慢

例题

32位的处理器支持的最大的虚拟空间___4GB____

32位处理器有32根地址线,可寻址的虚拟空间大小为232 bytes = 4GB

posted @ 2020-04-08 23:29  LanceHansen  阅读(337)  评论(0)    收藏  举报