1
第六章虚拟存储器
虚拟存储器的概念
请求页式管理
页面置换算法
请求段式管理
操
作
系
统
|
虚
拟
存
储
器
2
CUIT 徐虹
6.1虚拟存储器的基本概念
?虚拟存储器的引入
?程序的分段执行
?局部性原理
?在执行中的程序,某一段时间内,
CPU 总是集中地访问程序中的某一
部分。
?时间局限性
?空间局限性
操
作
系
统
|
虚
拟
存
储
器
3
CUIT 徐虹
?虚拟存储器的定义
?利用请求调入和交换技术,为用户提供
一个存储容量比实际内存容量大得多的存
储器,称之为虚拟存储器。
?虚存的形式
?单段式虚存:一个连续线性地址空间。
?多段式虚存:把地址空间分成若干段,
每一段是一个连续的线性空间。
操
作
系
统
|
虚
拟
存
储
器
4
CUIT 徐虹
?虚存容量
?在多道程序环境下,系统可分为每个用户
建一个虚存。
?其容量可为内存与外存的容量之和,或由
计算机地址结构和寻址方式确定。
?基础条件
?有相当容量的外存。
?要有一定容量的内存。
?地址变换机构。
操
作
系
统
|
虚
拟
存
储
器
5
CUIT 徐虹
?虚拟存储器的实现方式
?请求分页系统
?在分页系统的基础上,增加了请求调页和页面置
换功能所形成的页式虚拟存储系统。
?请求分页的页表机制
?缺页中断机构
?地址变换机构
?请求分段系统
?请求分段的页表机制
?缺段中断机构
?地址变换机构
操
作
系
统
|
虚
拟
存
储
器
6
CUIT 徐虹
?虚拟存储器的特征
?离散性
?多次性
?对换性
?虚拟性
2
操
作
系
统
|
虚
拟
存
储
器
7
CUIT 徐虹
6.2请求分页存储管理
?请求页式管理和预调入页式管理
?请求页式管理
?当需要执行的指令或访问的数据不在内存
时,产生缺页中断,系统将外存中相应的
页面调入内存。
?预调入页式管理
?系统对那些在外存中的页进行调入顺序计
算,估计出这些页中的指令和数据的执行
和被访问的顺序,并按此顺序将它们调入
和调出内存。
操
作
系
统
|
虚
拟
存
储
器
8
CUIT 徐虹
?实现原理
?基本问题
?要访问的虚页在不在内存
?扩充页表功能:增加中断位I 和外存地址
?虚页不在内存时的处理
?由动态地址变换机构产生一缺页中断。OS
进行中断处理后,根据该页的外存地址把它
从外存调入内存,然后继续执行。
操
作
系
统
|
虚
拟
存
储
器
9
CUIT 徐虹
?页面的调入调出
?调入:有无空白页,是否淘汰一页,修改页
表。
?调出(淘汰)
?处理过程
?当传输进程某页时,阻塞,系统调度另一进
程。
?外页面表
?对于进入系统的每个作业,除在外存建立文
件目录外,还需建立外页面表:页号,物理
块号(磁盘上的位置),保护信息。调度一
个作业时,在内存中根据外页面表建立页表。
操
作
系
统
|
虚
拟
存
储
器
10
CUIT 徐虹
?请求分页中的硬件支持
?页表机制
?页表的构成:页号、物理块号、状态位P、访问
字段A、修改位M和外存地址。
?缺页中断机构
?处理过程:保护CPU现场、分析中断原因和转
入中断处理程序。
?特点
?地址变换机构
操
作
系
统
|
虚
拟
存
储
器
11
CUIT 徐虹
?联
想
存
储
器
操
作
系
统
|
虚
拟
存
储
器
12
CUIT 徐虹
3
操
作
系
统
|
虚
拟
存
储
器
13
CUIT 徐虹
?页面分配
?最小物理块数:能保证一个进程
正常运行所需的最小物理块数。
?页面分配和置换策略
?分配策略:固定和可变
?置换策略:全局和局部
?固定分配局部置换
?可变分配全局置换
?可变分配局部置换
操
作
系
统
|
虚
拟
存
储
器
14
CUIT 徐虹
?分配算法
?平均分配算法
?按比例分配算法
?考虑优先权的分配算法
?将内存分为两部分:一部分按比例分配;
另一部分根据优先级增加分配的物理块。
操
作
系
统
|
虚
拟
存
储
器
15
CUIT 徐虹
?对换区的管理
?对换空间充足:全部从对换区换入。
?对换空间不够:分为修改和不修改两
种方法。
?UNIX方式:未运行过的,从文件区调
入;曾修改过的,从交换区调入。
操
作
系
统
|
虚
拟
存
储
器
16
CUIT 徐虹
?性能评价
?优点
?有效地解决了碎片问题
?虚存的实现
?缺点
?要求相应的硬件支持
?增加系统开销
?请求调页的算法选择不当,可能产生抖
动现象。
?没有彻底消除碎片问题。
操
作
系
统
|
虚
拟
存
储
器
17
CUIT 徐虹
6.3置换算法
?一个置换算法的效能是和作业运行过程
中访问地址空间的变化规律(即程序的
动态特征)紧密相关的,而这个变化规
律是难以预测的。即对同一程序,对不
同的程序,其规律都不同。
?随机淘汰算法(Random
Glongram)
?最佳置换算法OPT(Optimal
Replacement Algorithm)
?被淘汰的页面是永远不使用的页面,或
是在最长时间内不再被访问的页面。
操
作
系
统
|
虚
拟
存
储
器
18
CUIT 徐虹
?先进先出算法(FIFO )
?原理
?选择在内存驻留时间最长的一页将其淘
汰。
?实现方法
?按页调入内存顺序建立一队列表Q (0)
---Q(m—1)和一替换指针,指针指向
最早调入内存的一页。
?把这个队列表建立在存储分块表中。
4
操
作
系
统
|
虚
拟
存
储
器
19
CUIT 徐虹
?算法效率
?这种算法只有在按线性顺序访问地址空
间时才理想,否则效率不高。
?Belady现象
?在使用FIFO 算法时,未给进程或作业
分配足够的页面数时,有时会出现分配
的页面数增多,缺页次数反而增加。
?原因在于它根本没考虑程序执行的动态
特征。
操
作
系
统
|
虚
拟
存
储
器
20
CUIT 徐虹
?最近最久未用页面置换算法(Least
recently used)
?原理:当需要置换一页时,选择在最近一段
时间内最久未用的页予以淘汰
?实现
通过周期性地对“引用位”进行检查,
并利用它来记录一个页面自上次被访问
以来所经历的时间T;淘汰时,选择T 为
最大的页。
操
作
系
统
|
虚
拟
存
储
器
21
CUIT 徐虹
?硬件支持
?寄存器法
?为每个页面配置一个移位寄存器,当访
问到某物理块时,将相应寄存器的RN-1
位置成1。每隔一段时间将寄存器右移
一位。淘汰寄存器值最小的页面。
?栈
?利用一个特殊的栈来保存当前使用的各
个页面的页面号,每当进程访问某页面
时,便将该页面的页面号从栈中移出,
将它压入栈顶。则栈底为最近最久为使
用页面的页面号。
操
作
系
统
|
虚
拟
存
储
器
22
CUIT 徐虹
操
作
系
统
|
虚
拟
存
储
器
23
CUIT 徐虹
?Clock置换算法
?最近没使用算法NRU
淘汰最近一段时间T内未被访问的一页。
设置引用位。
例:页面1——>3——>4——>6——>9
引用位1 1 0 0 1
优点:简单,实现容易
缺点:时间周期T 选择不易确定
操
作
系
统
|
虚
拟
存
储
器
24
CUIT 徐虹
5
操
作
系
统
|
虚
拟
存
储
器
25
CUIT 徐虹
操
作
系
统
|
虚
拟
存
储
器
26
CUIT 徐虹
?NRU 改进算法
A :访问位M:修改位
1类(A=0,M=0)最近既未被访问,又未被修
改;
2类(A=0,M=1)最近既未被访问,但已被修
改;
3类(A=1,M=0)最近被访问,未被修改;
4类(A=1,M=1)最近被访问,且被修改。
操
作
系
统
|
虚
拟
存
储
器
27
CUIT 徐虹
?步骤:
?扫描循环队列,找出一类页面,找到则淘
汰该页。
?未找到,开始第二轮扫描,找第二类页面,
找到淘汰该页,并将所有经过的页面的访
问位置0。
?都失败,重复(1),(2),直到找到淘
汰页面。
操
作
系
统
|
虚
拟
存
储
器
28
CUIT 徐虹
操
作
系
统
|
虚
拟
存
储
器
29
CUIT 徐虹
?其它置换算法
?最少使用(Least Frequently Used)置
换算法
?淘汰访问次数最少的一页。在页表种增加
访问计数。
?设置移位寄存器(每一页):高位置1,
定时右移。
?页面缓冲算法(Page Buffering
Algorithm)
?置换算法采用FIFO,淘汰的页面挂在下列
两个链表的尾部:空闲页面链表和已修改
页面链表。当修改页面达到一定数量,再
写回磁盘。
操
作
系
统
|
虚
拟
存
储
器
30
CUIT 徐虹
6.4系统抖动
?抖动现象
?指系统页面置换频繁,大量CPU 时间
花在来回进行页的调度上,小部分时
间用于实际运算。
?一个较优的算法应尽可能避免出现抖
动现象。一旦引起了这种局面,系统
应能立即采取措施加以排除。
6
操
作
系
统
|
虚
拟
存
储
器
31
CUIT 徐虹
?预防抖动问题(减少缺页中断次数)
?程序设计质量:程序的局部化程度
?分配适当的内存
?工作集:在某段时间内,进程实际访问的页面
的集合。
?实验证明:对所有的程序来说,要使其有效的
工作,它在内存中的页面数应不低于总页面数
的一半。
?L = S 准则
?产生缺页的平均时间等于系统处理进程缺页的
平均时间。
操
作
系
统
|
虚
拟
存
储
器
32
CUIT 徐虹
操
作
系
统
|
虚
拟
存
储
器
33
CUIT 徐虹
?解决抖动问题的办法
?改进算法
?在进行淘汰或置换时,一般总是把缺页
进程锁住不让其换出,而调入的页或段总
是占据那些暂时得不到执行的进程所占有
的内存区域,从而扩大缺页进程的工作集
?挂起若干进程
操
作
系
统
|
虚
拟
存
储
器
34
CUIT 徐虹
6.5请求分段存储管理
?硬件支持
?段表:段名、段长、段基址、存
取方式、访问字段A、修改字段M、
存在位P、增补位和外存始址。
?缺段中断机构
?地址变换机构
操
作
系
统
|
虚
拟
存
储
器
35
CUIT 徐虹
?分段共享与保护
?共享段表
?共享段表包括共享进程计数、存取控制
字段和段号。
?共享段的分配与回收
?分段保护