第五章 虚拟存储器 复习
1 常规存储管理方式的特征
1.一次性:作业必须一次性全部转入内存才能运行
2.驻留性:装入内存后,整个作业都驻留在内存中,在完成前,任何部分都不能换出
1.1 虚拟存储器 :
指具有请求调入功能和置换功能,能够从逻辑上对内存容量加以扩充的一种存储器系统
1.2 理论基础:
程序在执行过程中的一个较短时间内,所执行的指令地址和指令的操作数地址,分别局限于一定区域。
1.时间局部性
2.空间局部性
1.3 特征:
1.多次性
2.对换性
3.虚拟性
2.请求分页存储管理方式
2.1 硬件支持
2.1.1 请求页表数据结构
页号 | 物理块号 | 状态位P | 访问字段A | 修改位M | 外存地址 |
---|
1.状态位(P):指示是否已调入内存
2.访问字段(A):记录本业在一段时间的访问次数
3.修改位(M):标识该页调入内存后是否被修改过
2.1.2 地址变换机构流程图
2.2 请求分页中的内存分配
2.2.1 最小物理块数:
能保证进程正常运行所需的最小物理块数
2.2.2 内存分配策略
1.固定分配局部置换:为每个进程分配一组固定数目的物理块,当缺页率较高时,也不再分配更多物理块
2.可变分配全局置换:先为系统中的每个进程分配一定数目的物理块,而OS也保持一定数目的物理块队列,当发生缺页时,则从系统总分配一块新的空闲物理块
3.可变分配局部置换:为每个进程分配一定数目的物理块,当缺页率较高时,需为该进程分配若干附加物理块
2.2.3 物理块分配算法
1.平均分配算法
2.按比例分配算法
3.考虑优先权分配算法
2.3 页面调入策略
2.3.1 何时调入页面
1.预调页策略:需要调入某页时,一次调入该页及相邻的几个页
2.请求调页策略:只调入发生缺页时所需的页面
2.3.2 从何处调入页面
1.系统拥有足够的对换空间,全部从对换区调入
2.系统缺少足够的对换区,不会被修改的从文件区调入;修改后被换出的页面放入对换区,以后从对换区调入
3.UNIX方式:未运行过的页面从文件去调入,运行过被换出的页面从对换区调入
2.3.2 缺页率
f=F/A
1.F:访问页面失败的次数
2.A:访问页面成功的次数
2.4 请求分系统评价
2.4.1 优点
1.有效的缓解了碎片问题
2.提供了大容量的多个虚拟存储器
3.作业地址空间不再受实际存储容量的限制
4.有利于运行多道程序
2.4.2 缺点
1.增加了成本
2.缺页中断增加了处理机时间的开销
3.页面淘汰算法选择不当,可能发生抖动现象
2.5 页面置换算法
2.5.1 最佳置换算法(OPT)
概述:具有最好的性能,但实际无法实现,通常作为标准来评价其他算法的优劣。
选择所淘汰的页面是以后不再使用,或者未来很长时间不被访问的页面
示例图
2.5.2 先进先出(FIFO)页面算法
概述:最直观的算法,但性能可能是最差的
选择在内存中驻留时间最久的页面予以淘汰
示例图
2.5.3 最近最久未使用(LRU)算法
概述:性能最接近最佳算法,硬件开销大
需要的硬件机构(二者选其一)
1.移位寄存器:进程第一次访问页面时,将相应寄存器的最高位置为1,每隔一段时间,将寄存器右移一位,那么具有最小值的寄存器所对应的页面,就是最近最久未使用的页面
2.特殊的栈:把被访问的页面移到栈顶,于是栈底就是最久未使用的页面
示例图
2.5.4 最少使用(LFU)算法
选择在最近时期使用最少的页面最为淘汰页
硬件机制
每次访问页面时,便将移位寄存器的最高位置1,每隔一段时间,将寄存器右移一位,这样,在一段时间内移位寄存器数值最小的页面将是最少使用页面
2.5.5 简单Clock置换算法
又把该算法成为最近未使用算法或NRU
为每页设置一个访问位,再将所有的页面连接成循环队列,被访问时,访问位置1,在淘汰时,检查访问位是否为0,若是则换出,若为1,则访问位置0,按照FIFO继续检查下一个,直到查到访问位为0的页
2.5.6 改进型Clock置换算法
除了考虑页面使用情况,还需考虑置换代价,因此增加了修改位M,和访问位组合为四种类型
1类(A=0, M=0):表示该页最近既未被访问,又未被修改过,最佳淘汰业
2类(A=0, M=1):表示该页未被访问,但也被修改,不是很好的淘汰页
3类(A=1, M=0):表示该页已被访问,但未被修改
4类(A=1, M=1):表示该页已被访问,也被修改
访问
第一步:从当前位置开始,查找A=0且M=0的第一类页面,将遇到的第一个页面作为淘汰页
第二步:若第一步失败,继续查找A=0且M=1的第二类页面,所遇到的第一个页面作为淘汰页,这一轮将所有的访问位A置0
第三步:若第二轮失败,则进行第一步,若仍失败,进行第二步,则必然能够找到淘汰页
2.5.7 页面缓冲算法(PBA)
采用可变分配全局置换的方法
如果一个淘汰页未被修改,则将他放入空闲链表中;如果页面被修改过,则放入已被修改的链表中。
当读入页面时,则放在第一个链表块中,淘汰时则将它放到链表尾部,当淘汰页达到一定数量时,再将链表全部换回(写回)外存
此算法减少了i/o操作
2.6 抖动与工作集
2.6.1 抖动
原因
如果系统中的进程太多,分配给每个进程的物理块太少,则会频繁的发生换页,导致大部分时间都浪费在i/o中,CPU的利用率趋近于0
预防方法
1.采取局部置换策略
2.把工作集算法融入到处理机调度中
3.利用L=S准则调节缺页率
4.选择暂停的进程
2.6.2 工作集
定义
指在某段时间间隔内,进程访问页面的集合