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

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

1、Belady现象


在采用FIFO算法时,有时会出现分配的物理页面数增加,缺页率反而提高的异常现象


Belady现象产生的原因: FIFO算法的置换特征与进程访问内存的动态特征时矛盾的,与置换算法的目标(即替换较少使用的页面)不一致的,因此,被他置换出去的页面并不一定是进程不会访问的。


只有FIFO算法有Belady现象的缺陷,其他算法如LRU算法没有Belady算法这种缺陷,因为LRU算法符合一种“栈算法”的特点,所分配的物理页帧越多,则产生的缺页次数越少。




2、LRU、FIFO和clock的比较


LRU算法和FIFO本质上都是先进先出的思路,只不过LRU时针对页面最近访问的时间来进行排序,所以需要在每一次页面访问的时候动态地调整各个页面之间的先后顺序(因为其中某个页面的最近访问时间改变了);而FIFO是针对页面进入内存的时间来进行排序的,这个时间是固定不变的,所以各个页面之间的先后顺序时固定的。如果一个页面在进入内存后没有被访问,那么他的最近访问时间就是他进入内存的时间。换句话说,如果内存当中的所有页面都未曾访问过,那么LRU算法就退化为FIFO算法。


clock是使用了一些内存中的信息(访问位,脏位等)来模拟LRU算法。


LRU算法性能较好,但系统开销较大;FIFO算法系统开销较小,但可能会发生Belady现象。因此,这种的办法就是使用clock算法,在每一次页面访问的时候,他不必动态地去调整该页面在链表中的顺序,而仅仅是做一个标记,然后等到发生缺页中断时,再把它移动到链表末尾。对于内存当中那些未被访问的页面,clock和LRU算法表现一样好;而对于那些曾经被访问过的页面,他不能像LRU算法那样,准确记录他们的位置。




相关文章
|
2月前
|
存储 缓存 Java
LRU是什么?如何实现?
LRU(Least Recently Used)是一种常用的缓存淘汰策略,其核心思想是:如果一个数据在最近一段时间内没有被访问到,那么在未来它被访问的可能性也很小。因此,当缓存满了的时候,最久未使用的数据会被淘汰
|
8月前
|
消息中间件 调度 数据安全/隐私保护
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
本文是关于Xenomai实时操作系统中资源管理和优先级倒置问题的概述。Xenomai使用`xnobject`和`xnregistry`管理任务间的同步互斥资源,如信号量、互斥锁等。资源管理涉及访问控制和资源保存,确保共享资源的正确调度。文章还介绍了优先级倒置现象,即高优先级任务因低优先级任务持有资源而被阻塞。为解决此问题,Xenomai采用了优先级继承策略,临时提升低优先级任务的优先级,以防止持续的优先级反转。文章后续将深入分析`xnsynch`模块和优先级倒置解决方案。
168 1
xenomai内核解析--任务同步互斥机制(一)--优先级倒置
|
8月前
|
调度
FreeRTOS深入教程(空闲任务和Tick中断深入分析)
FreeRTOS深入教程(空闲任务和Tick中断深入分析)
340 0
【异步FIFO的一些小事·3】异步FIFO中指针走线延时的一些思考
【异步FIFO的一些小事·3】异步FIFO中指针走线延时的一些思考
152 0
【异步FIFO的一些小事·3】异步FIFO中指针走线延时的一些思考
|
数据处理
万能的FIFO篇
万能的FIFO篇
105 0
|
算法
操作系统 页面置换算法FIFO与LRU的实现
操作系统 页面置换算法FIFO与LRU的实现
435 0
操作系统 页面置换算法FIFO与LRU的实现
|
存储 缓存 算法
从 LRU Cache 带你看面试的本质
在讲这道题之前,我想先聊聊「技术面试究竟是在考什么」这个问题。
227 0
从 LRU Cache 带你看面试的本质
|
缓存 算法
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。 常见类型包括LFU、LRU、ARC、FIFO、MRU。
599 0
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
|
存储 缓存 算法
昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现
在高并发、高性能的质量要求不断提高时,我们首先会想到的就是利用缓存予以应对。 第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用。 但是,缓存的空间一般都是有限,不可能把所有的结果全部保存下来。那么,当缓存空间全部被占满再有新的数据需要被保存,就要决定删除原来的哪些数据。如何做这样决定需要使用缓存淘汰算法。 常用的缓存淘汰算法有:FIFO、LRU、LFU,下面我们就逐一介绍一下。
322 0
|
算法 应用服务中间件 Linux
epoll定时器实现系列文章:高性能定时器实现的三种方式---升序链表,时间轮,最小堆(★firecat推荐★)
epoll定时器实现系列文章:高性能定时器实现的三种方式---升序链表,时间轮,最小堆(★firecat推荐★)
964 0