计算机组成与体系结构 虚拟存储器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解:
主存地址空间 1000 3000 6000
程序地址空间 0段 1段
2段
(a) 地址映象关系
用基户号号
段基址表 0 ...
3
N-1 段表长度 段表基址
段号
段内地址
虚地址
段表
wenku.baidu.com实地址
0
1 6000
1
1K
3000
1
2K
2 1000
1
1K
段基址 装入位 段长 访问方式
(b) 地址映象方法
段页式存储管理
1)地址映像
逻辑空间
1K 段1 2K 段2 3K 段3
1K 段4 2K 段5
段表
段段 装 起
号
长
入 位
点
1 1K 1 0
2
0
3 3K 1 5K
4
0
5 2K 1 1K
物理空间
段0 1 段 1K 5 3K
段 5K 3 8K-1
段表中,装入位为1表示该段已调入主存,为0则表 示该段不在主存中。因段的长度可大可小,所以段 表需要有长度指示。
虚拟存储器工作的全过程
虚拟存储器两大特点
1)允许用户用比主存空间大的多的空间来访问 主存。
2)每次访存都要进行虚实地址的转换。
虚拟存储器的管理由硬件(MMU)和软件 (操作系统)共同实现。
由于虚存地址空间比主存地址空间大得多, 就必须根据某种规则把按逻辑地址编写的程 序装入到主存储器中去,并将逻辑地址转换 成对应的主存物理地址,程序才能运行,这 一过程称为地址转换。
虚拟存储器中,主存页面的替换,一般用软 件实现
(1) 随机算法(RAND)
算法简单,容易实现; 没有利用历史信息,没有反映程序的局部性, 命中率低。
(2) 先进先出算法 (FIFO) 比较容易实现,利用了历史信息,没有反映 程序的局部性。 最先调入主存的页面,很可能也是经常要使 用的页面。
(3) 近期最少使用算法 (LFU) 既充分利用了历史信息,又反映了程序的局 部性,但需要很长的计数器和时钟,实现起 来困难。
虚页号 0 1 2 3 4 5
实页号 3 1 2 -
解: 4098÷1024 = 4......2, 所以虚页号为4,页内地址 为2。从表中查得实页号为 2,实际地址为
2×1024 + 2 = 2050
6
0
7
-
对应于虚拟地址4098的主存地址是什么?
3)页式管理的评价 优点:①主存利用率高 ②页表相对比较简单 ③地址变换速度快 ④辅存管理容易 缺点:①程序的模块化性能不好 ②页表长,需要占用很大的存 储空间
(4) 最优替换算法 (OPT) 是一种理想化的算法。用来作为评价其它页 面替换算法好坏的标准。
例1: 一个程序共有5个页面组成,程序执行过程中 的页地址流如下:
P1, P2, P1, P5, P4, P1, P3, P4, P2, P4 假设分配给这个程序的主存储器共有3个页面。 给出FIFO、LRU、OPT 三种页面替换算法对 这3页主存的使用情况,包括调入、替换和命 中等。
段地址
6000 4000 8000 9200
段表
+ 主存
8100
虚地址 物理地址
3 )段式管理的评价 优点:①段的逻辑独立性强,便于共享。 ②便于程序和数据共享 ③程序的动态连接和调度比较容易 ④便于实现信息保护 缺点:① 地址变换时间长 ②主存利用率低 ③ 辅存管理难度大
例如:在一个段映象的虚拟存储器中,假设 程序地址空间有三个段,段的长度分别为1K、 2K和1K,其中第0段映象到内存中以6000为起 始地址的位置,第1段映象到内存中以3000为 起始地址的位置,第2段映象到内存中以1000 为起始地址的位置。画出地址映象关系以及 地址映象方法。
(OPT 算法)
5* 4 4 4 4 4 4
调入 调入 命中 调入 替换 命中 替换 命中 命中 命中 5 次
三种页面替换算法对同一个页地址流的调度过程
设正在处理器上执行的一个进程的页表如下(十进
制,起始页/块号为0):
虚页号 状态位 访问位 修改位 物理块号
0
1
1
0
4
1
1
1
1
7
2
0
0
0
-
3
1
0
0
页表
物理空间
虚页 实页 装入
0
号号 位
0
1
02 1
1
2
11 1
2
3
2
0
3
4
34 1
4
4
0
2)地址变换 多用户地址
用户号 虚页号
页基址表
Pa
页内偏移
实 实页号 页内偏移 地
址
n Pa +
n是表长,Pa是 页表起始地址
装实修 入位 页号 改位
存放于内存 的页表
例1:在一个采用页式管理的虚拟存储器中, 假设程序的地址空间由4个页面组成,第0个页 面映象到内存的第2个页框架,第1个页面映象 到内存的第6个页框架,第2个页面映象到内存 的第7个页框架,第3个页面映象到外存。画出 地址映象关系以及地址映象方法。
20]对应的主存地址。
在采用分页存储管理系统中,虚拟地址长度 为18位,其中11至17位表示页号,0到10位
表示页内位移。若有一作业的各页依次放入 内存中2,3,7号页中,请问: (1)虚拟存储器分为多少页?每页多大?容 量为多少K? (2)逻辑地址1500在实页号是多少?对应 的物理地址为多少?
1 1 1 1 1 1 1 1* 2 2
最久没有使用算法
2 2 2* 4 4 4* 4 4 4
(LRU 算法)
5 5* 5* 3 3 3* 3*
调入 调入 命中 调入 替换 命中 替换 命中 替换 命中 4 次
最优替换算法
1 1 1 1 1 1* 3* 3* 3 3 2 2 2 2* 2 2 2 2 2
虚拟存储器
虚拟存储器的基本概念
1) 虚拟存储器
虚拟存储器是一个容量非常大的存储器的 逻辑模型,不是任何实际的物理存储器。
它借助于磁盘等辅助存储器来扩大主存容 量,使之为更大或更多的程序所使用。
它指的是主存-外存层次。以透明的方式 给用户提供了一个比实际主存空间大得多的程 序地址空间。
2)地址空间及地址 虚拟地址空间
时间 t 页地址流
1 2 3 4 5 6 7 8 9 10 实际 P1 P2 P1 P5 P4 P1 P3 P4 P2 P4 命中次数
先进先出算法
1 1 1 1* 4 4 4* 4* 2 2 2 2 2 2* 1 1 1 1* 4
(FIFO 算法)
5 5 5* 3 3 3 3*
调入 调入 命中 调入 替换 替换 替换 命中 替换 替换 2 次
转换后援缓冲器(TLB)/快表
页面替换算法及其实现方法
页面替换发生时间: 当发生页面失效时,要从磁盘中调入一
页到主存。如果主存所有页面都已经被占用, 必须从主存储器中淘汰掉一个不常使用的页 面,以便腾出主存空间来存放新调入的页面。 评价页面替换算法好坏的标准:
一是命中率要高 二是算法要容易实现
用来编写程序的地址空间,与此相对应的地 址称为虚拟地址或逻辑地址。
主存地址空间 存储、运行程序的空间,其相应的地址称为 主存物理地址或实地址。
辅存地址空间 磁盘存储器的地址空间,是用来存放程序的 空间,相应的地址称为辅存地址或磁盘地址
主存地址 (物理地址)由CPU地址引脚送出, 用于访问主存的地址。
用户按照程序段来编写程序,每个程序 段分成几个固定大小的页。 基本思想----将虚拟存储空间按段式管理 ,而主存空间按页式管理,存在虚空间 的程序按逻辑关系分段,每一段又可分 成固定大小的页。主存则只分成若干相 同大小的页。
如下图所示,一个用户程序由三个独立的程序段组成。0号 程序段的长度为12KB,由于页的长度是4KB,因此,正好分 成3页。1号程序段的长度为10KB,也分成3页,其中最后一 页有2KB是浪费的。2号程序段的长度为5KB,分成2页,其 中后面一页浪费3KB。
虚地址到实地址之间的变换由页表来实现 。 虚地址是编写程序时的逻辑地址, 实地址是
主存可访问的地址 。
页表中存在着逻辑页号和物理页号的对应关 系,并且有标志是否装入主存的有效位!
页表是一张存放在主存中的虚页号和实页号 的对照表,记录着程序的虚页调入主存时被 安排在主存中的位置。
1)地址映像 逻辑空间
每页 4KB
0段0页
0 段(12K)
0段1页
页表长度 页表地址 3
0段2页 0 段页表
3
1段0页
1 段(10K)
2
1段1页
段表
1段2页
1 段页表
2 段(5K)
2段0页 2段1页
用户程序
2 段页表
段页式虚拟存储器的地址映象
主存储器
地址变换方法:
多用户系统中,需要三层表,记录相关信息, 包括段表基址表、段表、页表。 (1) 先查段表,得到该程序段的页表起始地 址和页表长度, (2) 再查页表找到要访问的主存实页号, (3) 最后把实页号p与页内偏移d拼接得到主 存的实地址
虚拟地址由编译程序生成,是程序的逻辑地 址,其地址空间的大小受到辅助存储器容量 的限制。
3)虚拟存储系统与Cache存储系统的关系 相同点:都基于局部性原理
①把程序中最近常用的部分驻留在高速的存 储器中 ②一旦这部分变得不常用了,把它们送回到 低速的存储器中 ③这种换入换出是由硬件或操作系统完成的, 对用户是透明的 ④力图使存储系统的性能接近高速存储器, 价格接近低速存储器
虚拟存储器由硬件和软件(操作系统)自动 实现对存储信息的调度和管理。
5)虚拟存储器的基本信息传送单位
块是主存与辅存之间数据传送的基本单位。 根据对虚拟存储器不同的管理方式,块可以 具体化为页、段和段页三种形式。
分页存储管理
以页为基本单位的虚拟存储器叫页式虚拟存 储器。
程序虚地址分为两个字段:高位字段为虚页 号,低位字段为页内地址。
主存页号 主存地址空间 虚存页号 程序地址空间
0 1
0
1
2
2
7
用基户号号 虚页号
页内地址
虚地址
0 页基址表 ...
4
N-1 页表长度 页表基址
实页号 页内地址 实地址
页表 21 61 71 -0 主存页号 装入位 访问方式
例2:一个虚拟存储器有8个页面,页面大小为
1024字,内存有4个页面框架。页表的内容为
两种存储系统的主要区别:
Cache与虚拟存储器的主要区别
存储系统
Cache体系
虚拟存储器
要达到的目标 提高(主存)速度 扩大(主存)容量
实现方法
全部硬件
软件为主,硬件为 辅
透明性 对系统和应用程序员 仅对应用程序员
4)虚拟存储器工作原理
在执行程序时,允许将程序的一部分调入主 存,其他部分保留在辅存。即由操作系统的 存储管理软件先将当前要执行的程序段(如 主程序)从辅存调入主存,暂时不执行的程 序段(如子程序)仍保留在辅存,当需要执 行存放在辅存的某个程序段时,由CPU执行 某种程序调度算法将它们调入主存。
2)地址变换 编程使用的虚地址包含两部分:高位是 段号,低位是段内地址。
多用户地址 用户号 段号 段内偏移
段表长 基址
As
+
0
实地址
1
As
+
2
段表基址寄存器
n-1
段号 起点 装 段长 入位
存放 于内 存的 段表
段式虚实地址转换示例
段表起始地址 段表长度
<
越界
段号2 位移量100
段号 段长
0 1000 1 600 2 500 3 200
分段存储管理
由于通常程序都具有一定的模块性。一个复 杂的大程序都可以划分成多个逻辑上相对独 立的模块,模块间的界面和调用关系是可以 清楚定义的。这些模块可以是主程序、过程, 也可以是某类元素的集合。因此,分段管理 是按用户的要求提出来的。
每段的虚拟地址都从0开始,每段都有自己的 段号。每段在主存的起始位置由段表或段寄 存器来表明。
基号D 段号S 虚页号P 页内偏移d
实页号p 页内偏移
As A
As 1 0/1 Ap
1 p 0/1
装入
修改
页表 地址
装入 实页号 修改 标志
转换后援缓冲器(TLB)/快表
由于页表通常在主存中,因而即使逻辑页已 经在主存中,也至少要访问两次物理存储器 才能实现一次访存,这将使虚拟存储器的存 取时间加倍。为了避免对主存访问次数的增 多,可以对页表本身实行二级缓存,把页表 中的最活跃的部分存放在高速存储器中,组 成快表。这个专用于页表缓存的高速存储部 件通常称为转换后援缓冲器(TLB)。 保存在 主存中的完整页表则称为慢表。
2
4
0
0
0
-
5
1
0
1
0
使用字节地址,且页面大小为1024。问虚地址5499
、3221的物理地址?
在某段式存储管理系统中,有一作业的段表如下
:
段号 段长 主存始址 状态
0 200 600 0
1 50 850 0
2 100 1000 0
3 150 -
1
求逻辑地址[0, 65],[1, 55],[2, 90]及[3,
对虚拟存储器来说,程序员按虚存储空间编 制程序,在直接寻址方式下由机器指令的地 址码给出地址。这个地址码就是虚地址,可 由虚页号及页内地址组成,如下所示: