虚拟存储管理(6.1)

虚拟存储管理

前面介绍的存储管理方案要求作业全部装入内存才可运行。但这会出现两种情况:

  • 有的作业因太大,内存装不下而无法运行。
  • 系统中作业数太多,因系统容量有限只能让少数作业先运行。

1 局部性原理

定义:

  • 程序执行时,大多数情况下是顺序执行的。
  • 过程调用会使程序的执行轨迹从一部分内存区域转至另一部分区域,但过程调用的深度不会超过5。
  • 程序中有许多循环语句,这些语句会重复多次执行。
  • 程序中对数据结构的操作,往往局限在很小的范围内。

局限性的表现:
时间局限性: 程序中的的某条指令一旦执行,不久后会再次执行。
空间局限性: 程序一旦访问某存储单元,不久后会访问其附近的存储单元。

2 虚拟存储器的定义

所谓虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储器系统。
虚拟存储器的特征:
离散性:作业不装入连续的存储空间,内存分配采用离散分配方
多次性:一个作业被分割,被多次调入内存。
对换性:作业在运行过程中换进、换出内存。
虚拟性:从逻辑上扩充了内存的容量。虚拟存储器的特征

3 请求页式存储管理

在这里插入图片描述
状态位P:记录该页是否在内存。P=1该页在内存;P=0该页不在内存。
访问字段A:记录该页在一段时间内被访问的次数。
修改位M:记录该页在内存期间是否被修改过。M=1该页调入内存后被修改过;M=0该页调入内存后未被修改过。
外存地址:该页在外存的地址

缺页中断: 在指令执行期间产生和处理中断信号(指令执行1次即缺页1次)。一条指令执行期间,可能产生多次缺页中断。
在这里插入图片描述

驻留集:

  • 保证进程正常运行所需的最少物理块数是多少?
  • 为每个进程分配物理块时,其数目是固定的、还是可变的?
  • 如何为进程置换物理块,是局部置换?还是全局置换?

进程正常运行最少需要物理块数:

  • 物理块越多越好!——虚拟?
  • 随着为进程分配的物理块数目的减少,将使进程执行中的缺页率提高,从而降低进程的执行速度。
  • 能保证进程正常运行所需的最小物理块数是多少?这与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式。

驻留集管理:
固定分配、局部置换

  • 为每个进程分配固定页数的内存空间、且运行过程中不变。
  • 当进程缺页时,只能从该进程在内存的几个页面中选出一页换出,然后再调入一页,保证进程的页数不变。

可变分配、全局置换

  • 系统开始先为每个进程分配一定数目的物理块。整个系统有一空闲物理块链,当某进程缺页时,系统从空闲链中选出一块分配给进程。
  • 空闲链为空时,OS从所有进程的页面中权衡选择一页换出。

可变分配、局部置换

  • 分配同上,但进程缺页时,只能从该进程在内存的页面中选出一页换出。

调入策略:
何时调入页面:预调,请调。
从何处调入:进程的所有页面都放在对换区。只将修改过的页面放在对换区,未改的放在文件区。
UNIX系统方式,首次从文件区调入,换出时放在对换区,以后从对换区调入

4 请求页式存储管理的页面置换算法

4.1 最佳置换算法OPT

在这里插入图片描述
结论: 先置换最早不再使用或最长时间不使用的页面。理想性的置换算法,目前无法实现。

4.2 先进先出置换算法FIFO

在这里插入图片描述
结论: 先置换最早进入的页面。

4.3 最近最久未使用置换算法LRU

在这里插入图片描述
结论: 先置换最久未使用的页面。

4.4 CLOCK置换算法

LRU性能较好,但实现困难!因此可用CLOCK算法。为每页设一访问位,再将内存中的所有页面链接成一循环队列。

  • 当某页被访问时,其访问位置1。
  • 置换算法在选择一页淘汰时,只需检查其访问位。(如果是0,就选择该页换出;–如果是1,则重新将其置为0,暂不换出。)

CLOCK页面置换算法:
除了考虑页面的使用情况外,还要考虑该页是否被修改过。
由访问位A和修改位M组合成下面四种情况的组合:
<1>A=0,M=0该页既未被访问过、又未被修改过,是最佳淘汰页。
<2>A=0,M=1该页最近未被访问、但已被修改,可以被淘汰。
<3>A=1,M=0最近已被访问,但未被修改,该页有可能再被访问。
<4>A=1,M=1最近已被访问且被修改,该页可能再被访问。

CLOCK算法执行过程:
1>从当前位置扫描循环队列,寻找〈1〉类页面。
2>若1>失败,开始第二轮扫描,寻找<2>类页面,并将所经过的页面的访问位置0。
3>若2>也失败,返回到开始位置,将所有的访问位复0,goto 1>。

4.5 驻留集

即在某段时间间隔内,进程实际要访问的页面的集合。
正确选择驻留集窗口大小:

  • 窗口大小Δ选择得过小,频繁产生缺页中断。
  • 窗口大小Δ选择得很大,失去了虚拟存储器的意义。
4.6 缺页率与物理块数的关系

为进程分配的物理块数达到一定值图中拐点处,缺页率保持在上下限之间。
在这里插入图片描述

4.7 CPU的利用率与多道程序数的关系

抖动的产生:

  • 在多道程序环境下,并不是“多道程序的度越高,系统吞吐量越大。”
  • 当CPU的利用率达到某一峰值后,若继续增加多道程度,将产生抖动

抖动预防方法:

  • 加载控制
  • L=S准则(产生缺页的平均时间L等于系统处理缺页的平均时间S)
  • 采用局部置换
  • 挂起若干进程

5 请求段式存储管理

在这里插入图片描述
除段号、段长和段始址这些段式系统已有的基本表项之外,增加了以下表项:

  • 存取方式:用于标识本段的存取属性是只执行、只读,还是允许读/写。
  • 状态位:指示该段是否已进驻内存。
  • 访问字段:用于记录本段有多长时间没有被访问。置换算法在选择换出段时参考。
  • 修改位:表示该段调入内存后是否被修改过。
  • 增补位:这是请求段式存储管理系统中特有的字段,用于表示本段在运行过程中是否进行过动态增长。
  • 外存地址:用于指出该段在外存的地址,供调入该段时使用。

动态链接
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值