`
uule
  • 浏览: 6353030 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

缓存淘汰算法系列之3 --- FIFO类

 
阅读更多

1 FIFO

1.1. 原理

按照“先进先出(First In,First Out)”的原理淘汰数据。

1.2. 实现

FIFO队列,具体实现如下:

 

1. 新访问的数据插入FIFO队列尾部,数据在FIFO队列中顺序移动;

2. 淘汰FIFO队列头部的数据;

 

1.3. 分析

l 命中率

命中率很低,因为命中率太低,实际应用中基本上不会采用。

l 复杂度

简单

l 代价

实现代价很小。

 

 

2. Second Chance

2.1. 原理

FIFO算法的改进版,其思想是“如果被淘汰的数据之前被访问过,则给其第二次机会(Second Chance)”。

2.2. 实现

每个数据会增加一个访问标志位,用于标识此数据放入缓存队列后是否被再次访问过。

 

如上图,A是FIFO队列中最旧的数据,且其放入队列后没有被再次访问,则A被立刻淘汰;否则如果放入队列后被访问过,则将A移到FIFO队列头,并且将访问标志位清除。

如果所有的数据都被访问过,则经过一次循环后就会按照FIFO的原则淘汰数据。

2.3. 分析

l 命中率

命中率比FIFO高。

l 复杂度

与FIFO相比,需要记录数据的访问标志位,且需要将数据移动。

l 代价

实现代价比FIFO高。

 

 

3. Clock

3.1. 原理

Clock是Second Chance的改进版,通过一个环形队列,避免将数据在FIFO队列中移动。

3.2. 实现

 

如上图,其具体实现如下:

l 当前指针指向C,如果C被访问过,则清除C的访问标志,并将指针指向D;

l 如果C没有被访问过,则将新数据插入到C的位置,将指针指向D。

3.3. 分析

l 命中率

命中率比FIFO高,和Second Chance一样。

l 复杂度

与FIFO相比,需要记录数据的访问标志位,且需要将数据指针移动。

l 代价

实现代价比FIFO高,比Second Chance低。

 

4. FIFO类算法对比

对比点

对比

命中率

Clock =  Second Chance > FIFO

复杂度

Second Chance  > Clock > FIFO

代价

Second Chance  > Clock > FIFO

由于FIFO类算法命中率相比其他算法要低不少,因此实际应用中很少使用此类算法。

 

来源:http://blog.csdn.net/yunhua_lee/article/details/7776513

 

 

 

分享到:
评论

相关推荐

    常用的缓存淘汰算法.pdf

    常见的缓存淘汰算法有LFU、LRU、ARC、FIFO、MRU等。 1. 最不经常使用算法(LFU):LFU缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,...

    缓存淘汰算法之LRU

    缓存淘汰算法之 LRU 缓存淘汰算法是指在计算机系统中,为了提高缓存命中率和减少缓存 pollution 而采用的算法。其中,LRU(Least Recently Used,最近最少使用)算法是一种常用的缓存淘汰算法。 1. LRU 算法原理 ...

    cache缓存淘汰算法--LRU算法.docx

    这些缓存淘汰算法各有优劣,LRU 实现简单但可能受到批量操作的影响,LRU-K 提高了命中率但成本较高,2Q 在两者之间找到了平衡,而 MQ 则提供了更灵活的策略以适应不同场景的需求。选择哪种算法取决于具体的应用场景...

    cache缓存淘汰算法--LRU算法.pdf

    综上所述,不同的缓存淘汰算法各有优劣,选择哪种算法取决于具体的应用场景和资源限制。LRU适合简单快速的实现,2Q在性能和复杂度之间找到了平衡,而LRU-K和MQ则提供了更高的灵活性和命中率,但代价也更高。在实际...

    缓存、缓存算法和缓存框架简介 - 文章 - 伯乐在线.pdf

    缓存算法,又称缓存淘汰算法,是指在缓存容量达到上限时,用于决定哪些数据应该被保留,哪些数据应该被替换出去的一系列算法。常见的缓存算法包括最近最少使用(LRU)、先进先出(FIFO)、时钟算法(Clock)等。这些...

    cache缓存淘汰算法--LRU算法 (2).pdf

    LRU(Least Recently Used)缓存淘汰算法是根据数据的历史访问记录来决定何时淘汰数据的策略。其核心理念是“最近被访问过的数据在未来更有可能被再次访问”。LRU算法通常通过链表来实现,新数据插入链表头部,每次...

    cache缓存淘汰算法--LRU算法 (2).docx

    LRU(Least Recently Used,最近最少使用)是一种广泛应用于缓存淘汰策略的算法。它的基本原理是假设最近被访问过的数据在未来更有可能被再次访问。LRU算法通过维护一个链表来实现,新数据插入链表头部,每次访问的...

    06丨链表(上):如何实现LRU缓存淘汰算法?1

    "链表数据结构与LRU缓存淘汰算法" 链表是一种基础的数据结构,它广泛应用于软件开发和硬件设计中。今天我们将讨论如何使用链表来实现LRU缓存淘汰算法。 首先,让我们来讨论缓存的概念。缓存是一种提高数据读取性能...

    06丨链表(上):如何实现LRU缓存淘汰算法?.pdf

    链表(上):如何实现 LRU 缓存淘汰算法? 链表是一种基础的数据结构,学习链表有什么用呢?为了回答这个问题,我们来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法。缓存是一种提高数据读取性能的技术,在...

    js实现操作系统FIFO置换算法

    FIFO算法的基本思想是:当需要替换一个页面时,选择最早进入内存的页面进行淘汰。这种策略基于“先来的先走”的原则,假设最旧的页面在未来被访问的可能性最小。然而,FIFO算法并不总是最优的,它可能会导致Belady's...

    页面淘汰算法演示系统 操作系统课程设计

    操作系统是计算机科学中的核心课程,其中页面淘汰算法是内存管理的重要组成部分,特别是在现代多任务环境中,有限的物理内存需要有效地支持多个进程的运行。在这个"页面淘汰算法演示系统"的操作系统课程设计中,我们...

    GPU功耗管理(缓存置换算法)-需求.docx

    通过对比该算法与LFU(最不经常使用)、LRU(最近最少使用)和FIFO(先进先出)等传统缓存置换策略的功耗和性能,可以得出关于新算法有效性的结论。 总结来说,GPU功耗管理中的缓存置换算法设计是一个关键环节,...

    调度算法中的经典-LRU算法的实现(绝对值得收藏)

    FIFO(First In First Out,先进先出)算法是另一种简单的页面替换策略,它按页面进入内存的顺序进行淘汰。相比于LRU,FIFO的性能往往较差,因为它可能淘汰刚被访问过的页面,而保留了很长时间未使用的页面。 在...

    利用高速缓存调度算法实现通讯信息的缓冲

    在IT领域,高速缓存调度算法是优化系统性能的关键技术之一,特别是在处理大量通信信息时。本项目通过VB6(Visual Basic 6)编程环境,结合Access2003数据库,实现了利用高速缓存调度算法对通讯信息进行缓冲,以提高...

    P2P流媒体直播分布式缓存替换算法研究.pdf

    LRU算法是一种常用的缓存替换策略,它依据访问历史信息来淘汰最久未被访问的数据,以使得更可能被访问的数据保持在缓存中。在这种情况下,K-Degree指的是缓存中数据的新鲜程度,算法会根据数据的新鲜度和访问频度来...

    算法-数据结构和算法-8-双向链表.rar

    - 双向链表和栈的结合:在实现某些算法,如LRU缓存淘汰策略时,会用到栈和双向链表的组合。 6. **数据结构的比较**: - 单链表:只有后继指针,插入和删除相对简单,但只能单向遍历。 - 双向链表:增加前驱指针...

    操作系统页面置换算法实现,fifo、lfu、lru、opt,界面由MFC实现

    3. LFU(最不常用)算法:LFU试图淘汰那些在过去一段时间内使用频率最低的页面。它的核心思想是频繁使用的页面在未来更可能继续被频繁使用。LFU在处理短期和长期热门页面方面通常优于LRU,但在处理某些特定工作负载...

    自定义缓存类

    - 淘汰策略:例如LFU(最不经常使用)和FIFO(先进先出)。 2. **数据过期机制**: - 绝对过期:设置一个固定的时间点,超过这个时间点缓存项自动失效。 - 相对过期:相对于添加到缓存的时间,经过一定时长后...

    数据结构与算法-java

    - 缓存管理:LRU(最近最少使用)算法实现缓存淘汰策略。 通过深入学习数据结构与算法,并结合Java语言的特性,开发者可以编写出更高效、更易于维护的代码,为实际项目提供强大支持。这份“数据结构与算法分析_...

    操作系统实验三页面置换算法实验报告.docx

    该实验报告主要介绍了操作系统中的页面置换算法实验,涵盖了 FIFO、Optimal 和 LRU 等三种常见的页面置换算法。实验报告中还提供了实验源码,展示了如何使用 C 语言实现这些算法。 知识点一:页面置换算法 页面...

Global site tag (gtag.js) - Google Analytics