弟17讲存储器管理之页面置换算法.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十七讲 存储器管理之页面置换算法 1 引言 在进程运行过程中,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,需从内存中调出一页程序或数据,送入磁盘的对换区。但应将哪个页面调出,需根据一定的算法来确定。把选择换出页面的算法称为页面置换算法,其好坏直接影响系统的性能。刚被淘汰出内存的页面,过后不久又要访问它,需要再次将其调入,而该页调入内存后不入又再次被淘汰出内存,然后又要访问它,如此反复,这种现象称为抖动(又称颠簸)。 一个好的置换算法应具有较低的页面更换频率。从理论上讲,应将那些以后不会再访问的页面换出,或者把那些在较长时间内不会再访问的页面换出。 2 常用的页面置换算法 2.1 最佳置换算法(The best optimal) 最佳置换算法是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的, 或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。 由于人们无法预知一个进程在内存的若干个页面中,哪一个页面是将来最长时间内不再被访问的页面,因此该算法无法实现。但该算法可以用来评价其他算法。 例:就是课本上的例子 假定系统为某进程分配了三个物理块, 并考虑有以下的页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 2.2 先进先出页面置换算法(FIFO) 该算法淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面淘汰。 Belady现象:使用FIFO算法时,在未给进程或作业分配足它所要求的页面数时,有时会出现分配的页面增多,缺页次数反而增加的奇怪现象,就是Belady现象。 例:和上例一样 例子:1,2,3,4,1,2,5,1,2,3,4,5 内存3个物理页面:缺页9次 内存4个物理页面:缺页10次 异常! Belady现象 2.3 最近最久未使用置换算法(Least Recently Used,LRU) 2.3.1 算法描述 算法思想:利用“最近的过去”作为“最近的将来”。选择最近最久未使用的页面淘汰。该算法对每个页面设置一个访问字段,用于记录一个页面自上次被访问以来所经历的时间t,每次淘汰t值最大的页面,也就是最近最久未使用的页面。 例: 缺页12次,总访问次数20次,缺页率12/20=60% 2.3.2 硬件支持 两类硬件支持:寄存器、栈。 为每个在内存中的页面配置一个移位寄存器,用来记录某进程在内存中各页的使用情况。移位寄存器表示为 R= 当进程访问某物理块时,要将相应寄存器的位置成1。此时,定时信号将每隔一定时间将寄存器右移一位。如果把n位寄存器的数看作一个整数,那么具有最小数值的寄存器所对应的页面,就是最近最久未使用的页面。 例:某进程在内存中具有8个页面,为每个页面配置一个8位寄存器。如下图: 栈 利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程访问某页面时,便将该页面的页面号从栈中移出,将它压入栈顶。因此,栈顶始终是最新被访问页面的编号,而栈底则是最近最久未使用页面的页面号。 如下图: CLOCK置换算法 是一种最近最久未使用算法的近似算法。 2.4.1 简单的CLOCK置换算法 算法描述: 每页设置一位访问位,某页被访问时,其访问位被置1。内存中的所有页链接成一个循环队列; 循环检查各页面的使用情况,访问位为“0”,选择该页淘汰;访问位为“1”,复位访问位为“0”,查询指针前进一步。 因为该算法只有一位访问位,只能用它表示该页是否使用过,置换时只能将未使用过的页面置换出去,因此称为“最近未使用”置换算法(NRU) 例子: 改进型的CLOCK置换算法 1 由访问位A和修改位M可以组合成下面四种类型的页面: 1类(A=0, M=0): 表示该页最近既未被访问,又未被修改, 是最佳淘汰页。 2类(A=0, M=1): 表示该页最近未被访问,但已被修改, 并不是很好的淘汰页。 3类(A=1, M=0): 最近已被访问, 但未被修改,该页有可能再被访问。 4类(A=1, M=1): 最近已被访问且被修改,该页可能再被访问。 2 执行过程 访问位A,修改位M共同表示一个页面的状态:四种状态:00 01 10 11。 三轮扫描: 第一轮:查找00页面,若找到,则淘汰所找到的第一页,结束;若未找到,下一步; 第二轮:查找01页面,若找到,则淘汰所找到的第一页,结束;,若未找到,下一步;(第二轮中,所有扫描过的页面,A位复位为“0”) 第三轮:所有页面A位复位为“0”,重复第一步。 (1) 从指针所指示的当前位置开始, 扫描循环队列,

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档