- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)