博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作系统:老化算法
阅读量:6340 次
发布时间:2019-06-22

本文共 1237 字,大约阅读时间需要 4 分钟。

因为LRU(最近最少使用)算法的两种实现方案都比较麻烦而且开销很大,所以提出了用软件来模拟LRU算法的NFU(不经常使用)算法,但是NFU算法存在一些问题,比如在一个多次扫描编译器中,在第一遍扫描中被频繁用到的页,在程序进入第二遍扫描时计数器值可能仍然很高。实际上,如果第一次扫描的执行时间恰好是各次扫描中最长的,含有以后各次扫描代码的页的计数器可能总是比含有第一次扫描代码的页小,其结果是操作系统将删除掉有用的页而不是不再使用的页。

 所以为了使NFU算法能够更好的模拟LRU算法,需要对其进行修改,修改分两部分:第一是计数器在R位被加进来之前右移一位;第二是R位加到计数器的最左端而不是最右端。这就是老化算法。

 这样修改以后的老化算法的结果是显而易见的,因为每次都对计数器进行移位,这就相当于每次都“清除”掉上一次的计数值,但是这个值并非被完全去掉而是保存在后面的位中,然后通过对高位添加R位来决定需要淘汰的页面,这样就保证了需要淘汰页面时计数器值最小的叶面肯定是最近最少访问到的页面。

 

          

时钟周期0  

时钟周期1   

时钟周期2  

时钟周期3  

时钟周期

页面0    

10000000  

11000000    

11100000   

11110000   

01111000  

页面1    

00000000   

10000000    

11000000  

01100000   

10110000  

页面2    

10000000  

01000000    

00100000  

00010000   

10001000  

页面3    

00000000  

00000000    

10000000  

01000000   

00100000  

页面4    

10000000  

11000000    

01100000   

10110000   

01011000  

页面

10000000   

01000000    

10100000  

01010000   

00101000  

 

用软件模拟LRU的老化算法6个页面在5个时钟周期内的计数器情况

 从上表可以看出,在未开始之前所有计数器的值都为0,每过一个时钟周期首先将计数器右移一位,然后将新的R位添加到计数器最左端,发生淘汰时淘汰计数器值最小的页面。

 在第5个时钟周期出现了选择的问题,页面35都连续两个周期没有被访问了,而在两个周期之前的一个周期中他们都被访问过。根据LRU,如果有一个页面必须被淘汰掉,我们应该在这两个页面中选一个。然而现在的问题是我们不知道在时钟周期1到时钟周期2期间这两个页中的哪一个后被访问到,在每个时钟周期中只记录一位使我们无法区分一个周期内较早和较晚的访问,我们所能作的只是淘汰掉页3,因为页5在再往前的周期中也被访问过而页3没有。

 老化算法存在的另外一个问题是计数器始终都只有有限位,如上表所示只有8位计数器,这就意味着开始的访问数据会被冲掉,如果两个页面的计数值恰巧一样的话,唯一的办法就是从两个页面中随机淘汰掉一个。

转载于:https://www.cnblogs.com/gaosheng-221/p/6168596.html

你可能感兴趣的文章
厉害了!哈佛大学的研究让机器人为心脏供血
查看>>
数据科学如何应用到安全 六步创建内部DNS查询分析模型
查看>>
Android 渗透测试学习手册 第九章 编写渗透测试报告
查看>>
Harbor 开源镜像仓库成为 CNCF 托管项目
查看>>
量子专家公开信背后:这家公司凭“量子神话”一夜暴富
查看>>
鱼鹰软件签约老牌传播机构思艾传播集团
查看>>
巨头逐鹿智能医疗,AI的下一个“蓝海”初露端倪
查看>>
中国人工智能产业发展联盟媒体项目组成立,镁客网为首批联盟特约媒体之一...
查看>>
妈妈再也不用担心我的学习,Smartivity EDGE让孩子边玩边学!
查看>>
「镁客·请讲」智能一点胡云华:提供“拎包入住”服务,为电商提供定制化AI导购...
查看>>
“边缘计算”在未来工业4.0中的运用机遇
查看>>
django 1.8 官方文档翻译: 2-3-1 模型实例参考
查看>>
IBM宣布:成功研制出了量子计算机原型机
查看>>
仿花间直播心聊直播追我吧直播易直播-1对1按分钟收费的直播交友系统开发!...
查看>>
vuejs14表达式
查看>>
基于线性表的堆栈
查看>>
python之基础篇(五)——数据类型
查看>>
第十三章 httpd详解
查看>>
oracle之 调整 I/O 相关的等待
查看>>
java使用Executor(执行器)管理线程
查看>>