首页 > 知识点讲解
       页面置换算法
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 存储管理 > 虚拟存储技术(程序局部性原理、虚拟页式存储管理、页面置换算法等) > 虚拟存储管理 > 
考试要求:掌握      相关知识点:4个      
        如前所述,系统在处理缺页中断时,需要调入新的页面。如果此时内存已满,就要采用某种页面置换算法,从内存中选择某一个页面,把它置换出去。最简单的做法是随机地进行选择,但这显然不是一个令人满意的方法。例如,假设随机选中的是一个经常要访问的页面,当它被置换出去后,可能马上又得把它换进来,而这种换进换出是需要开销的。所以,对于一个好的页面置换算法来说,它应该尽可能地减少页面的换进换出次数,或者说,尽可能地减少缺页中断的次数,从而减少系统在这方面的开销。具体来说,它应该把那些将来不再使用的,或者短期内较少使用的页面换出去,而把那些经常要访问的页面保留下来。不过,在通常的情形下,我们不可能完全做到这一点。因此,通常的做法,就是在程序局部性原理的指导下,依据过去的统计数据来对将来进行预测。
        常用的页面置换算法包括:最优页面置换算法、最近最久未使用算法、最不常用算法、先进先出算法和时钟页面置换算法。
               最优页面置换算法(optimal page replacement algorithm,OPT)
               最优页面置换算法的基本思路是:当一个缺页中断发生时,对于内存中的每一个逻辑页面,计算在它的下一次访问之前,还要等待多长的时间,然后从中选择等待时间最长的那个,来作为被置换的页面。从算法本身来看,这的确是一个最优算法,它能保证缺页中断的发生次数是最少的。但是,这个算法只是一种理想化的算法,在实际的系统中是无法实现的,因为操作系统无从知道,每一个页面还要等待多长的时间,才会被再次地访问。因此,该算法通常是用作其他算法的性能评价依据。
               最近最久未使用算法(Least Recently Used,LRU)
               最近最久未使用算法的基本思路是:当一个缺页中断发生时,从内存中选择最近最久没有被使用的那个页面,把它淘汰出局。LRU算法实质上是对最优页面置换算法的一个近似,它的理论依据就是程序的局部性原理。也就是说,如果在最近一小段时间内,某些页面被频繁地访问,那么在将来的一小段时间内,这些页面可能会再次被频繁地访问。反之,如果在过去一段时间内,某些页面长时间没有被访问,那么在将来,它们还可能会长时间得不到访问。OPT算法寻找的是将来长时间内得不到访问的那个页面,而LRU算法寻找的是过去长时间内没有被访问的那个页面。
               LRU算法需要记录各个页面在使用时间上的先后顺序,因此系统的开销比较大。在具体实现上,主要有两种方法。
               .链表法:由系统来维护一个页面链表,把最近刚刚使用过的页面作为首结点,把最久没有使用的页面作为尾结点。在每一次访问内存的时候,找到相应的逻辑页面,把它从链表中摘下来,移动到链表的开头,成为新的首结点。然后,当发生缺页中断的时候,总是淘汰链表末尾的那个页面,因为它就是最久未使用的。
               .栈方法:由系统来设置一个页面栈,每当访问一个逻辑页面时,就把相应的页面号压入到栈顶,然后考察栈内是否有与之相同的页面号,如果有就把它抽出来。当需要淘汰一个页面时,总是选择栈底的页面,因为它就是最久未使用的。
               最不常用算法(Least Frequently Used,LFU)
               最不常用算法的基本思路是:当一个缺页中断发生时,选择访问次数最少的那个页面,把它淘汰出局。在具体实现上,需要对每一个页面都设置一个访问计数器。每当一个页面被访问时,就把它的计数器的值加1。然后在发生缺页中断的时候,选择计数值最小的那个页面,把它置换出去。LFU算法和LRU算法类似,都是基于程序的局部性原理,通过分析过去的访问情况来预测将来的访问情况。两者的区别在于:LRU考察的是访问的时间间隔,即对于每一个页面,从它的上一次访问到现在,经历了多长的时间。而LFU考察的是访问的频度,即对于每一个页面,在最近一段时间内,它总共被访问了多少次。
               先进先出算法(First In First Out,FIFO)
               先进先出算法的基本思路是:选择在内存中驻留时间最长的页面,把它淘汰出局。在具体实现上,系统会维护一个链表,里面记录了内存当中的所有页面。从链表的排列顺序来看,链首页面的驻留时间最长,链尾页面的驻留时间最短。当发生一个缺页中断时,把链首的页面淘汰出局,然后把新来的页面添加到链表的末尾。FIFO算法的性能比较差,因为它每次淘汰的都是驻留时间最长的页面,而这样的页面并不一定就是不受欢迎的页面,相反,可能是一些经常要访问的页面。如果现在把它们置换出去,将来可能还要把它们再换回来。
               时钟页面置换算法(Clock)
               FIFO算法的缺点在于:它是根据页面的驻留时间来做出选择,而没有去考虑页面的访问情况。时钟页面置换算法对此进行了改进,把页面的访问情况也作为淘汰页面的一个依据。Clock算法需要用到页表项当中的访问位。当一个页面在内存当中的时候,如果它被访问了(不管是读操作还是写操作),那么它的访问位就会被CPU设置为1。算法的基本思路是:把各个页面组织成环形链表的形式,类似于一个时钟的表面,然后把指针指向最古老的那个页面,即最先进来的那个页面。当发生一个缺页中断的时候,考察指针所指向的那个页面。如果它的访问位的值等于0,说明这个页面的驻留时间最长,而且没有被访问过,因此理所当然地把它淘汰出局。如果访问位的值等于1,这说明这个页面的驻留时间虽然是最长的,但是在这一段时间内,它曾经被访问过了。因此,在这种情形下,就暂不淘汰这个页面,但要把它的访问位的值设置为0。然后把指针往下移动一格,去考察下一个页面。就这样一直进展下去,直到发现某一个页面,它的访问位的值等于0,因此就把它淘汰掉。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有