十一、Belady现象和LRU、FIFO、clock的比较

本文深入探讨了页面替换算法中的Belady现象,这是FIFO算法特有的问题,导致分配更多页面帧反而增加缺页率。相比之下,LRU算法由于其基于最近使用频率的策略,避免了这一问题。同时,文章对比了LRU、FIFO和clock算法,指出LRU性能更优但成本高,FIFO成本低但可能出现Belady现象,而clock算法则试图在效率和效果间找到平衡。
摘要由CSDN通过智能技术生成

1、Belady现象

\qquad 在采用FIFO算法时,有时会出现分配的物理页面数增加,缺页率反而提高的异常现象
\qquad Belady现象产生的原因: FIFO算法的置换特征与进程访问内存的动态特征时矛盾的,与置换算法的目标(即替换较少使用的页面)不一致的,因此,被他置换出去的页面并不一定是进程不会访问的。
\qquad 只有FIFO算法有Belady现象的缺陷,其他算法如LRU算法没有Belady算法这种缺陷,因为LRU算法符合一种“栈算法”的特点,所分配的物理页帧越多,则产生的缺页次数越少。

2、LRU、FIFO和clock的比较

\qquad LRU算法和FIFO本质上都是先进先出的思路,只不过LRU时针对页面最近访问的时间来进行排序,所以需要在每一次页面访问的时候动态地调整各个页面之间的先后顺序(因为其中某个页面的最近访问时间改变了);而FIFO是针对页面进入内存的时间来进行排序的,这个时间是固定不变的,所以各个页面之间的先后顺序时固定的。如果一个页面在进入内存后没有被访问,那么他的最近访问时间就是他进入内存的时间。换句话说,如果内存当中的所有页面都未曾访问过,那么LRU算法就退化为FIFO算法。clock是使用了一些内存中的信息(访问位,脏位等)来模拟LRU算法。
\qquad LRU算法性能较好,但系统开销较大;FIFO算法系统开销较小,但可能会发生Belady现象。因此,这种的办法就是使用clock算法,在每一次页面访问的时候,他不必动态地去调整该页面在链表中的顺序,而仅仅是做一个标记,然后等到发生缺页中断时,再把它移动到链表末尾。对于内存当中那些未被访问的页面,clock和LRU算法表现一样好;而对于那些曾经被访问过的页面,他不能像LRU算法那样,准确记录他们的位置。

THE END

陈老师原视频链接:
https://www.bilibili.com/video/BV1wW41117GS?p=29

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dragon Fly

多谢老板赏钱[抱拳抱拳抱拳]

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值