操作系统复习(十三)——虚拟存储器

虚拟存储器概述

虚拟存储器实现了内存的扩充功能,该功能并非是从物理上实际地扩大内存的容量,而是从逻辑上实现对内存容量的扩充。

常规存储器管理方式的特征:

  1. 一次性,指作业必须一次性的全部装入内存后才能开始运行。
  2. 驻留性,指作业被装入内存后,整个作业都一直驻留在内存中,其中任何部分都不回被换出,直至作业运行结束。

**虚拟存储器的基本工作情况:**程序在运行时,如果他所要访问的页(段)已调入内存,便可继续执行下去;如果程序所要访问的页(段)尚未调入内存(称为缺页或缺段),便发出缺页(段)中断请求,此时OS将利用请求调页(段)功能将他们调入内存,以使进程能继续执行下去。如果此时内存已满,无法再装入新的页(段),OS还须再利用页(段)的置换功能,将内存中暂时不用的页(段)调至盘上,腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去。

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

虚拟存储器的特征:

  1. 多次性:指一个作业中的程序和数据不需要一次性全部装入内存,而是允许多次调入,每次只需将当前要运行的那部分程序和数据调入内存即可开始运行。
  2. 对换性:指一个作业中的程序和数据,无需在作业运行时一直常驻内存,而是允许在作业的运行过程中进行换进换出(暂时不用的代码和数据从内存调至外存的对换区(换出),以后需要时再从外存调至内存(换进),甚至允许将不暂时运行的进程换出)。
  3. 虚拟性:指能够从逻辑上扩充内存容量,使用户所看到的内存容量远大于实际内存容量。

虚拟存储器的实现方式: 请求分页系统。请求分段系统。

请求分页系统:

  1. 请求分页中的内存分配策略: 固定分配局部置换。可变分配全局置换。可变分配局部置换。
  2. 物理块分配算法: 平均分配算法。按比例分配算法。考虑优先权的分配算法。
  3. 页面调入策略: (1)何时调入页面:预调页策略。请求调页策略。(2)从何处调入页面:系统对换区空间足够时,可全部从对换区调入所需页面,需要在进程运行前将与之相关的文件从文件去拷贝到对换区;系统对换区空间不足时,其中凡是不会被修改的文件,直接从文件区调入,可能会被修改的部分,在它们杯换厨师必须调到对换区;UNIX方式,与进程有关的文件都在文件去,因此未运行页面都应从文件区调入,对于曾经运行过但被换出的页面,由于放在对换区,因此下次调入时应从对换区调入。
  4. 页面调入过程: 当程序访问的页面不在内存时,产生缺页中断发给CPU,中断处理程序先保留CPU环境,分析中断原因后转入缺页中断处理程序。程序查找页表得到该页在外村的物理块后,若内存能够容纳新页,从外存调入内存,若内存已满,先进行某种页面置换算法,从内存中选出一页准备换出,如果此页被修改过,必须写回盘;反之则不用。然后将所缺页调入内存,并修改相应表项,置存在位为1,将此页写入快表中。在缺页调入内存后,利用修改后的页表形成所要访问数据的物理地址,再去访问内存数据。整个过程对用户透明。
  5. 缺页率: 通常受到页面大小、进程所分配物理块的数目、页面置换算法与程序固有特性影响。设缺页率为f,从外存调入的次数为F,访问页面成功次数为A,页面总访问次数S=A+F,则缺页率 f=F/S。

页面置换算法:

  • 最佳置换算法:所选的淘汰页面将是以后永不使用或未来最长时间内不再被访问的页面。(此策略通常可保证获得最低的缺页率,但因为进程运行的页面调入无法预知,因此此算法是无法实现的。)
  • 先进先出(FIFO)置换算法: 该算法总是淘汰最先进入内存的页面,即总是淘汰在内存停留最久的页面(性能通常较差)。在这里插入代码片
  • 最近最久未使用(LRU)置换算法: 选择最近最久未使用的页面予以淘汰。(因需要记录页面的使用情况,所以需要寄存器和栈两类硬件的支持)
  • 最少使用(LFU)置换算法: 在内存中为每个页面设置一个移位寄存器,每隔一段时间移位一次,记录页面被访问的频率。该算法总是选择最近时期使用最少的页面淘汰。
  • 简单Clock置换算法: 为每页设置一位访问位,再将内存中所有的页面都通过链接指针接成一个循环队列。当某页被访问时,置访问位为1,置换算法在淘汰时,只需检查页的访问位,为0直接换出,为1时置0,给该页第二次主流内存机会,再按照FIFO算法检查下一个页面。
  • 改进型Clock算法: 按访问位A和修改位M组合形成四类页面1类(A=0,M=0),表示该页最近未被访问未被修改,是最佳淘汰页;2类(A=0,M=1),表示该页最近未被访问,但已被修改,不是很好的淘汰页;3类(A=1,M=0),表示该页最近被访问,但未被修改,有可能再被访问;4类(A=1,M=1),表示该页最近被访问,被修改,有可能再被访问;根据修改位和访问位结合,分三步:(1)从指针所指位置开始,扫描循环队列,寻找1类页面,将遇到的第一个页面选中淘汰。第一次扫描期间不改变访问位A。(2)若第一步失败,则开始第二轮扫描,寻找2类页面,将遇到的第一个页面选中淘汰。第二轮扫描期间,将所有扫描过的页面的访问位都置0.(3)若第二步失败,将指针返回开始位置,将所有访问位赋0。然后重复第一步,若仍失败,必要时再重复第二步,此时一定能找到2类页面淘汰。
  • 页面缓冲PBA算法: 影响页面换进换出效率的原因:(1)页面置换算法。(2)写回磁盘的频率。(3)读入内存的频率 PBA算法主要特点:显著降低页面换进换出的频率,使磁盘I/O操作次数大为减少,因而减少了页面换进换出的开销。PBA算法设置了空闲页面链表与修改页面链表,当一个未被修改的页面换出时,将其所在的物理块挂在空闲链表的末尾,如果以后进程需要这些页面中的数据时,可以从空闲链表上将它们取下,免除了从磁盘读入数据操作,减少了页面换进开销。当进程讲一个已修改页面换出时,系统将它所在物理块挂在修改页面链表的末尾,降低已修改页面写回磁盘的频率,降低将磁盘内容读入内存的频率。

访问内存的有效时间: 设查找快表时间为L,内存的有效访问时间为E,访问实际物理地址所用时间为T,页中断处理时间为Y,命中率为A,缺页率为F

  • 被访问页在内存,且其对应页表项在快表中:E = L + T ;
  • 被访问页在内存,且其对应页表项不在快表中:E = 2 * (L + T) ;
  • 被访问页不在内存:E = Y + 2 * (L + T);
  • 加上缺页率和命中率等因素:E = L+A * T+(1-A) * [ T+F * (Y+L+T)+(1-F)*(L-T)];
  • 只考虑缺页率,设缺页中断处理时间为I,则:E=T+F*(I+T)+(1-F)*T;

**产生抖动的原因:**根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺之页调入内存。这会使得在系统中排队等待页面调进/调出的进程数目增加。显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。

抖动的预防方法

  • 采取局部置换策略,即缺页时,只能在分配给自己的内存里进行置换,不允许从其他进程获取新的物理块,这样即使该进程发生抖动也不好影响其他进程。但效果不是很好,在某进程发生抖动后,他还会常去处于磁盘的io等待队列中,这会延迟其他进程区人员中断的处理时间。
  • 把工作集算法融入到处理机调度中,当调度程序发现处理机利用率低下时,它将试图从外存调入一个新作业进入内存,来改善处理机的利用率。 在融入工作集算法后,在调度程序从外存调入作业之前,必须检查每个进程在内存驻留页面是否足够多。如果都足够多,此时便可以将新作业调入内存中,反之则不调入。
  • 利用“L=S”准则调节缺页率,Denning于1980年提出了“L=S”的准则来调节多道程序度,其中L是缺页之间的平均时间,S是平均缺页服务时间,即用于置换一个页面所需的时间。如果是L远比S大,说明很少发生缺页,磁盘的能力尚未得到充分的利用;反之,如果是L比S小,则说明频繁发生缺页,缺页的速度已超过磁盘的处理能力。只有当L与S接近时,磁盘和处理机都可达到它们的最大利用率。理论和实践都已证明,利用“L=S”准则,对于调节缺页率是十分有效的。
  • 选择暂停的进程,当多道程序度偏高时,已影响到处理机的利用率,为了防止发生“抖动”,系统必须减少多道程序的数目。 此时根据某种算法选择一个进程,暂停该进程。

请求分段系统:

  1. 共享段表: 为实现分段共享,可在系统中配置一张共享段表,所有共享段都在共享段表中占有一表项。在表项上记录了共享段的段号、段长、内存地址、状态位、外存始址以及共享计数等信息。
  2. 共享段的分配: 为共享段分配内存时,对第一个请求使用该共享段的进程,有系统为该共享段分配一物理区,再把共享段调入该区,同时将该区始址填入请求进程的段表相应项中,还要在共享段表中增加一表项,记录该请求使用共享段进程的信息,把count置1。之后再有进程调用该共享段是,无须再分配内存,只需在调用进程的段表中增加一表项,填写该共享段在本进程中的段号,记录该请求使用共享段进程的信息,把count加1。
  3. 共享段的回收: 当共享此段的某进程不再需要该段时,应将该段释放,包括撤销在该进程段表中共享段所对应的表项,以及执行count减1操作。若count为0,系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时无进程使用该段。否则,只取消调用者进程在共享段表中的有关记录。
  4. 分段保护: (1)越界检查;(2)存取控制检查通常的访问方式有:只读,只执行,读/写;(3)环保护机构低编号的环具有高优先权。OS核心处于0号环内;某些重要的实用程序和OS服务占局中间环;一般应用程序被安排在外环。在环系统中,程序的访问和调用要遵守:一个程序可以访问驻留在相同环或者较低特权环(外环)中的数据;一个程序可以调用驻留在相同环或者较高特权环(内环)中的服务
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值