操作系统(2)复习 第五章 虚拟存储器

本文详细介绍了虚拟存储器的概念、特征,重点解析了请求分页存储管理的硬件支持、软件实现、分配策略以及常见的页面置换算法如OPT、FIFO、LRU和Clock,探讨了抖动现象及其预防方法。

第五章 虚拟存储器

1.常规存储管理方式的特征

  • 一次性 指作业必须一次性地全部装入内存后方能开始运行
  • 驻留性 指作业被转入内存后,整个作业都一直驻留在内存中

2.局部性原理

  • 程序执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。
  • 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但过程调用的深度在大多数不超过 5。
  • 程序中存在许多循环结构,它们将多次执行。
  • 程序中还包括许多对数据结构的处理,如对数组进行操作,它们往往都局限于很小的范围内。

局部性原理又表现在两个方面

  • 时间局限性。某条指令一旦执行,则不久以后该指令可能再次执行。原因是在程序中存在着大量的循环操作
  • 空间局限性。程序在一段时间内所访问的地址,可能集中在一定的范围之内,其典型情况便是程序的顺序执行

3.虚拟存储器的定义

  • 虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。
  • 逻辑容量由内存容量和外存容量之和所决定。
  • 运行速度接近于内存速度,成本接近于外存。

4.虚拟存储器的特征

  • 多次性:是虚拟存储器最重要的特征,其它任何存储器不具备这个特征。
  • 对换性:可提高内存利用率。
  • 虚拟性:指能够从逻辑上扩充内存容量,是实现虚拟存储器最重要的目标。

虚拟性多次性和对换性为基础,而多次性和对换性必须以离散分配为基础。

5.请求分页存储管理

硬件支持

  • 请求分页的页表机制
  • 缺页中断机构
  • 地址变换机构

软件

  • 请求调页功能软件
  • 页置换功能的软件

分配及置换的策略

  • 固定分配局部置换
  • 可变分配全局置换
  • 可变分配局部置换

不存在固定分配全部置换策略

页面调入策略

何时调入

  • 预调页策略
  • 请求调页策略

何处调入
文件系统、对换区、内存的页面缓冲

页面置换算法

(1)最佳置换算法OPT

  • 其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问(即下一次访问时间最晚)的页面。
  • 采用最佳置换算法,通常可保证获得最低的缺页率。
访问页面70120304230321201701
物理块1777222227
物理块200004000
物理块31133311
缺页否

发生缺页中断的次数为9,缺页率9/20=45%

(2)先进先出置换算法FIFO

  • 总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
  • FIFO 置换算法性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后并不能反映页面的使用情况
访问页面70120304230321201701
物理块1777222444000777
物理块200033322211100
物理块31110003332221
缺页否

发生缺页中断的次数为15,缺页率15/20=75%

(3)最近最久未使用置换算法LRU

  • 硬件支持:1.寄存器,2.栈
  • 当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。
  • 实际上,LRU算法根据各页以前的情况,是“向前看”的,而最佳置换算法则根据各页以后的使用情况,是“向后看”的。
访问页面70120304230321201701
物理块1777224440111
物理块200000033300
物理块31133222227
缺页否

发生缺页中断的次数为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”准则调节缺页率
  • 选择暂停进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值