第五章 虚拟存储器

常规存储器管理方式的特征
一次性:作业在运行前一次性地全部装入内存
驻留性:作业装入内存后,便一直驻留在内存中,直至作业运行结束。
一次性及驻留性在程序运行时是否是必须的?不是。程序运行有局部性。

程序执行的特点:
多数情况下仍是顺序执行。
少部分的转移和过程调用指令会使程序执行由一部分区域转至另一部分区域(但研究表明调用深度多数情况下不超过5)
许多由少数指令构成的循环结构会多次执行。
对许多数据结构的处理(如数组)往往局限于很小的范围内。
上述情况均表现出程序执行的局部性。
时间局部性 空间局部性

基于局部性原理
程序运行前,不需全部装入内存(打破一次性)
仅装入当前要运行的部分页面或段即可运行,其余部分暂留在外存上。
缺页/段的情况:要访问的页(段) 尚未调入内存。程序应利用OS所提供的请求调页(段)功能,将它们调入内存,使程序继续执行。
调入需要的页/段时,如果内存已满,无法再装入新页(段),通过置换功能将内存中暂时不用的页(段)调至外存,腾出足够的内存空间。(不总驻留)

总之:为了用小的内存是现在大的虚空间中程序的运行目的。
基于局部性原理
虚拟存储管理——由操作系统提供一个比实际内存大的,假想的特大存储器。

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

虚拟存储管理
允许将一个作业分多次调入内存。
若采用连续分配方式,需申请足够空间,再分多次装入,造成内存资源浪费,并不能从逻辑上扩大内存容量。
虚拟的实现建立在离散分配存储管理基础上
方式:请求分页/请求分段系统
细节:分页/段机构、中断机构、地址变换机构、软件支持

虚拟存储器的特征:
多次性,对换性,虚拟性

请求分页存储管理方式:
基本分页 + “请求调页”和“页面置换”功能。
换入和换出基本单位都是长度固定的页面

缺页中断机构
每当要访问的页面不在内存时,便产生一缺页中断通知OS,OS则将所缺之页调入内存。作为中断,需经历几个步骤:
“保护CPU环境”
“分析中断原因”
“转入缺页中断处理程序”
“恢复CPU环境”
作为一种特殊中断,与一般中断有明显区别:
(1) 在指令执行期间产生和处理中断信号。
(2) 一条指令在执行期间,可能产生多次缺页中断。

内存分配
作业不一次装入,部分装入的情况下如何为进程分配内存,涉及三个问题:
①最小物理块数的确定:少于此数量进程将不能运行,与计算机的硬件结构有关,取决于指令的格式、功能和寻址方式
②物理块的分配策略

  • 固定分配、局部置换:

为每个进程分配一定数量的物理快,在整个运行期间不再改变。
运行中缺页时,只能从该进程内存中n个页面中选出一页换出,然后再调入一页
困难:难以把握为每个进程分配适量物理块数。

  • 可变分配、全局置换:

一个空闲物理快队列,发生缺页时,系统从队列中取出一块分配给该进程,将欲调入的页装入。空闲时间不足时,可与其他任何进程页面置换。这是最容易实现的。
先为每个进程分配一定数目的的物理块,OS管理

  • 可变分配、局部置换:
    为每个进程分配一定数目的物理块,缺页时,只允许换出该进程在内存中的页面,不影响其他进程运行。

③物理块的分配算法
平均分配算法
按比例分配算法
考虑优先权的分配算法

调页策略
① 何时调入页面
1.预调页策略
以预测为基础,将预计不久后便会被访问的若干页面,预先调入内存。
优点:一次调入若干页,效率较好
缺点:预测不一定准确,预调入的页面可能根本不被执行到。主要用于进程的首次调入,由程序员指出应该先调入哪些页。
2.请求调页策略
运行中需要的页面不在内存,便立即提出请求,由OS将其调入内存。
优点:由请求调页策略所确定调入的页,一定会被访问;比较容易实现。
缺点:每次仅调入一页,需花费较大的系统开销,增加了磁盘I/O的启动频率。
② 从何处调入页面
在请求分页系统中的外存分为:
对换区:连续存放数据,读写速度较快
文件区:离散分配方式,I/O速度相对慢
发生缺页时,系统应从何处将缺页调入内存,分成三种情况:
系统拥有足够的对换区空间:进程运行前所有页面由文件区拷贝到对换区,运行需要的页面全部从对换区调入内存,提高调页速度。
系统缺少足够的对换区空间:不会被修改的部分,在文件区操作。可能被修改的部分在对换区操作。
UNIX方式:首次运行在文件区,再请调的时候从对换区调入。
外存:文件区、对换区
系统拥有足够的对换区空间:对换区
系统缺少足够的对换区空间:文件区/对换区
UNIX方式:首次->文件区/再请调->对换区

③ 页面调入过程
程序运行前需要装入内存:上述的②步策略处理何处调入;
开始运行:先预调入一部分页面;
运行中:需要的页面不在内存时,
向CPU发出一缺页中断,“中断处理程序”开始工作:
首先保留CPU环境
分析中断原因后,转入缺页中断处理程序。
处理:判断是否置换、页表信息更新
恢复现场,重新操作页面。

页面置换算法
选择换出哪些页面的算法,其好坏直接影响系统的性能。
缺页率=页面调入次数(缺页次数)/总的页面使用次数

1.最佳Optimal置换算法
换出以后永不再用的,或在最长(未来)时间内不再被访问的页面
优点:保证获得最低的缺页率
不足:无法实现,因为无法预知一进程将来的运行情况
2.先进先出FIFO置换算法
先进入的先淘汰,即选择内存中驻留时间最久的页面予以淘汰
优点:实现简单,把一进程已调入内存的页面按先后次序组织成一个队列,并设置一个指针(替换指针),使它总是指向队首最老的页面。
不足:与进程实际运行规律不相适应(较早调入的页往往是经常被访问的页,频繁被对换造成运行性能降低)
3.最近最久未使用(LRU)置换算法
无法预测将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法选择最近最久未使用(least recently used)的页面予以淘汰
不足:
有时页面过去和未来的走向之间并无必然的联系。
相应的需较多的硬件支持:记录每个页面自上次被访问以来所经历的时间t,淘汰时选择页面t值最大的;以及需要快速地知道哪一页是最近最久未使用的页面,用寄存器或栈。
4.CLOCK置换算法
又称最近未使用算法。每个页设一个使用标志位(use bit),若该页被访问则将其置为1。设置一个指针,从当前指针位置开始按地址先后检查各页,寻找use bit=0的页面作为被置换页。若指针经过的页use bit=1,修改use bit=0,指针继续向下,到所有页面末尾后再返回队首检查。
5.其他置换算法
最少使用

缺页率排序:FIFO>CLOCK>LRU>OPT

抖动
抖动是指:页面调入不久就被导出,导出不久又被调入,导致系统频繁更换页面。
产生抖动的原因:块数少或者算法选择不当
工作集是指在某段时间间隔里,进程那个实际所要访问页面的集合,一个计算分析选择出来的合适的值。
驻留集是指实际在内存中的页面集合。
驻留集包含工作集
正确选择工作集的大小,对存储器的利用率和系统吞吐量的提高,都将产生重要影响。

防抖动的方法:
局部置换策略。
页面调入内存前检查各进程工作集,为缺页率高的增加有限物理块。
L缺页间的平均时间=S置换一个页面所需时间,可使磁盘和CPU达到最大利用率。
抖动发生时选择暂停一些进程,调节多道程序度。

缺页率与物理块数有关联,基于局部性原理,若能预知程序在某段时间要访问的页面并全部调入他们,将大大降低缺页率。

请求分段存储管理方式
硬件支持:段表机制,缺段中断机构,地址变换机构

分段的共享和保护
实现共享:共享段表,在内存中配置一张共享段表,每个共享段都占有一表项,记录着共享计数count(非共享段仅为一个进程所需要,而共享段是为多个进程所需要的,为记录有多少进程正在共享该分段,须设置共享进程计数count),存取控制字段,段号。
分段保护:越界检查,存取控制检查,环保护机构。

总结

1.实现虚拟存储器的目的是:从逻辑上扩充主存容量。
2.虚拟的基础是局部性原理,其基本含义是指令的局部性(时间局部性与空间局部性)
3.在局部管理中,虚拟地址空间是指逻辑地址空间,大小受机器的指令地址长度的限制。实地址空间是指物理地址空间,大小受物理内存大小的限制。
4.请求页式系统中,OPT是最佳置换算法;LRU是最近最久未使用算法;NRU是最近未使用置换算法;LFU是最不常使用置换算法
5.页式虚拟存储管理的主要特点是:不要求将作业同时装入到主存的连续区域。
6.在请求分页存储管理中,若采用FIFO页面淘汰算法,则当分配的页面数增加时,缺页中断的次数可能增加也可能减少

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值