华科计组mooc

概述

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

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

分类:

  1. 页式虚拟存储器
  2. 段式虚拟存储器
  3. 段页式虚拟存储器

段式虚拟存储器

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

优点 缺点
段的分界与程序的自然分界相对应 在段间留下许多空余的零碎存储空间,造成浪费
段的逻辑独立性使它易于编译和维护,也便于多程序共享

页式虚拟存储器

虚拟存储器 学习笔记

虚地址和实地址

虚拟地址(又称逻辑地址)分为:

  1. 高位字段为虚页号:与页表项数相关
  2. 低位字段为页偏移量:与物理页大小相关

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

实际的主存储器单元的地址称为实地址(又称物理地址)。实地址对应的是主存空间。
页式管理系统的信息传送单位是定长的页,主存的物理空间也被划分为等长的固定区域,称为页面。

虚页 / 逻辑页 虚拟空间分成的页
实页 / 物理页 实际空间分成的页
优点 缺点
比段式管理系统的空间浪费要小得多 页不是逻辑上独立的实体,处理保护和共享不如段式方便

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

某计算机的虚拟存储系统有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

TLB

页面命中
页面缺失
访问主存查页表
访问主存取得数据
页面替换,页面修改
再次访问主存查页表

访问主存次数多了,降低运行速度。
解决方案:把页表中最活动部分存放在一个小容量的高速存储部件中组成TLB(Translation Lookaside Buffer)
虚拟存储器 学习笔记

TLB页面命中
TLB页面缺失
同时查TLB和主存中的页表
停止主存页表查找
将对应的实页号送入实主存地址寄存器
继续查主存页表
将对应的实页号送入实主存地址寄存器
将此虚页号和对应的实页号送入TLB,替换TLB某一行内容

段页式虚拟存储器

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

优点 缺点
兼取段式和页式系统的优点 在地址映射过程中需要多次查表

相关文章: