第五章 虚拟存储器
1.常规存储管理方式的特征
- 一次性: 指作业必须一次性地全部装入内存后方能开始运行
- 驻留性: 指作业被转入内存后,整个作业都一直驻留在内存中
2.局部性原理
- 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。
- 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但过程调用的深度在大多数不超过 5。
- 程序中存在许多循环结构,它们将多次执行。
- 程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。
局部性原理又表现在两个方面:
- 时间局限性。某条指令一旦执行,则不久以后该指令可能再次执行。原因是在程序中存在着大量的循环操作
- 空间局限性。程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行
3.虚拟存储器的定义
- 虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
- 逻辑容量由内存容量和外存容量之和所决定。
- 运行速度接近于内存速度,成本接近于外存。
4.虚拟存储器的特征
- 多次性:是虚拟存储器最重要的特征,其它任何存储器不具备这个特征。
- 对换性:可提高内存利用率。
- 虚拟性:指能够从逻辑上扩充内存容量,是实现虚拟存储器最重要的目标。
虚拟性以多次性和对换性为基础,而多次性和对换性必须以离散分配为基础。
5.请求分页存储管理
硬件支持
- 请求分页的页表机制
- 缺页中断机构
- 地址变换机构
软件
- 请求调页功能软件
- 页置换功能的软件
分配及置换的策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
不存在固定分配全部置换策略
页面调入策略
何时调入
- 预调页策略
- 请求调页策略
何处调入
文件系统、对换区、内存的页面缓冲
页面置换算法
(1)最佳置换算法OPT
- 其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问(即下一次访问时间最晚)的页面。
- 采用最佳置换算法,通常可保证获得最低的缺页率。
| 访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 物理块1 | 7 | 7 | 7 | 2 | 2 | 2 | 2 | 2 | 7 | |||||||||||
| 物理块2 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | ||||||||||||
| 物理块3 | 1 | 1 | 3 | 3 | 3 | 1 | 1 | |||||||||||||
| 缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ |
发生缺页中断的次数为9,缺页率9/20=45%
(2)先进先出置换算法FIFO
- 总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
- FIFO 置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况
| 访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 物理块1 | 7 | 7 | 7 | 2 | 2 | 2 | 4 | 4 | 4 | 0 | 0 | 0 | 7 | 7 | 7 | |||||
| 物理块2 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | 1 | 1 | 0 | 0 | ||||||
| 物理块3 | 1 | 1 | 1 | 0 | 0 | 0 | 3 | 3 | 3 | 2 | 2 | 2 | 1 | |||||||
| 缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
发生缺页中断的次数为15,缺页率15/20=75%
(3)最近最久未使用置换算法LRU
- 硬件支持:1.寄存器,2.栈
- 当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
- 实际上,LRU算法根据各页以前的情况,是“向前看”的,而最佳置换算法则根据各页以后的使用情况,是“向后看”的。
| 访问页面 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 物理块1 | 7 | 7 | 7 | 2 | 2 | 4 | 4 | 4 | 0 | 1 | 1 | 1 | ||||||||
| 物理块2 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 3 | 3 | 0 | 0 | |||||||||
| 物理块3 | 1 | 1 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 7 | ||||||||||
| 缺页否 | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
发生缺页中断的次数为12,缺页率12/20=60%
(4)时钟(CLOCK)置换算法
1.简单的 Clock 置换算法:
只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。当某页被访问时,其访问位被置 1。置换算法在选择一页淘汰时,只需检查页的访问位。如果是 0,就选择该页换出;若为 1,则重新将它置 0,暂不换出,而给该页第二次驻留内存的机会,再按照 FIFO 算法检查下一个页面。该算法是循环地检查各页面的使用情况的。又把该算法称为最近未用算法 NRU。
2.改进型 Clock 置换算法:
由访问位 A 和修改位 M 可以组合成下面四种类型的页面:
- 1 类(A=0,M=0):表示该页最近既未被访问,又未被修改,是最佳淘汰页。
- 2 类(A=0,M=1):表示该页最近未被访问,但已被修改,并不是很好的淘汰页。
- 3 类(A=1,M=0):表示该页最近已被访问,但未被修改,该页有可能再被访问。
- 4 类(A=1,M=1):表示该页最近已被访问且被修改,该页可能再被访问。
执行过程可分成以下三步:
1)从指针所指示的当前位置开始,扫描循环队列,寻找 A=0 且 M=0 的第一类页面,将所遇到的第一个页面作为所选中的淘汰页。在第一次扫描期间不改变访问位 A。
2)如果第一步失败,即查找一周后未遇到第一类页面,则开始第二轮扫描,寻找 A=0 且 M=1 的第二类页面,将所遇到的第一个这类页面作为淘汰页。在第二轮扫描期间,将所有扫描过的页面的访问位都置 0。
3)如果第二步也失败,亦即未找到第二类页面,则将指针返回到开始的位置,并已将所有的访问位复 0。然后重复第一步,如果仍失败,必要时再重复第二步,此时就一定能找到被淘汰的页。
该算法与简单 Clock 算法比较,可减少磁盘的 I/O 操作次数。但为了找到一个可置换的页,可能须经过几轮扫描。换言之,实现该算法本身的开销将有所增加。
6.抖动集与工作集
多道程序度与处理机的利用率
随着多道程序度的增大,处理机的利用率先上升后下降。当多道程序度过高时,会发生“抖动”。
产生“抖动”的原因
根本原因是,同时在系统中运行的进程太多,由此分配配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。
工作集
(1)工作集概念:
进程发生缺页率的时间间隔与进程所获得的物理块数有关(即成反比)。
基于程序运行时的局部性原理得知,程序在运行期间,对页面的访问时不均匀的,在一段时间内仅局限于较少的页面。这些页面被称为活跃页面。
(1)工作集定义:
所谓工作集,是指在某段时间间隔Δ里,进程实际所要访问页面的集合。
“抖动”的预防方法
- 采取局部置换策略。
- 把工作集算法融入到处理机调度中
- 利用“L=S”准则调节缺页率
- 选择暂停进程
本文详细介绍了虚拟存储器的概念、特征,重点解析了请求分页存储管理的硬件支持、软件实现、分配策略以及常见的页面置换算法如OPT、FIFO、LRU和Clock,探讨了抖动现象及其预防方法。
5454

被折叠的 条评论
为什么被折叠?



