您的位置:首页 > 其它

学习LFU与LRU缓冲技术的心得(举例说明)

2014-10-23 18:29 302 查看
最近在学习LFU与LRU缓冲算法时对于其怎样对数据进行存储遇到了障碍,想上网查找例子方便理解,但又找不到好的文章。研究了一些问题之后,算是弄懂了其中的原理,在此与各位分享。


    LFU算法(最不频繁使用法):LFU记录缓冲池中每个缓冲区的访问次数。当需要一个缓冲区重新存储新信息时,被访问次数最少的缓冲区被认为是包含“最不重要的”信息,接下来就使用这个缓冲区。

    LRU算法(最近最少使用法):LRU简单地把缓冲区放到一个链表中。每当访问了一个缓冲区中的信息时,就把这个缓冲区放到链表的最前端。当需要读取新信息时,使用链表最后面的缓冲区(最近最少使用的缓冲区),根据需要丢弃其中“老”信息或把这些信息写回磁盘。
下面举例说明:
    缓冲池有5个缓冲区,先后存储一下数据:5  2  5  12  3  6  5  9  3  2  4  1  5  9  8  15  3  7  2  5  9  10  4  6  8  5  
    首先用LFU算法存储数据:
    第一次      5  2  12  3  6(5次数为2)
    第二次      5  9  12  3  6(5次数为3,3次数为2)
    第三次      5  3  9  2  6  
    第四次      5  3  9  2  4
    第五次      5  3  1  2  4  
    第六次      5  3  1  9  4    (5次数为4)
    第七次      5  3  1  9  8
    第八次      5  3  15  9  8
    第九次      5  3  15  7  8    (3次数为3)
    第十次      5  3  15  7  2
    第十一次    5  3  9  7  2    (5次数为5)
    第十二次    5  3  9  10  2
    第十三次    5  3  9  10  4
    第十四次    5  3  6  10  4
    第十五次    5  3  6  8  4      (5次数为6)
    整理        5  3  4  6  8(从左到右为出现次数由多到少,若次数相同,则从左到右为出现时间为后到先)
    再用LRU算法存储数据:
    第一次      5  2  12  3  6
    第二次      5  9  12  3  6
    第三次      5  9  2  3  6
    第四次      5  9  2  3  4
    第五次      1  9  2  3  4
    第六次      1  5  2  3  4
    第七次      1  5  2  9  4
    第八次      1  5  8  9  4
    第九次      1  5  8  9  15
    第十次      3  5  8  9  15
    第十一次    3  7  8  9  15
    第十二次    3  7  8  2  15
    第十三次    3  7  5  2  15
    第十四次    3  7  5  2  9
    第十五次    10  7  5  2  9
    第十六次    10  4  5  2  9
    第十七次    10  4  5  6  9
    第十八次    10  4  8  6  9
    第十九次    10  4  8  6  5
    整理        5  8  6  4  10(从左到右为出现时间从后到先)

以上为本人所积累的方法,供各位参考,若有不明白之处可以提出,我们共同探讨。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: