LRU和LFU的区别

简介: LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Leas...

LRU和LFU是不同的!

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

注意,当调页面4时会发生缺页中断

若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(十分钟内,页面3只使用了一次)

可见LRU关键是看页面最后一次被使用到发生调度的时间长短,

而LFU关键是看一定时间段内页面被使用的频率!

目录
相关文章
|
1月前
|
存储 缓存 算法
从0开始回顾数据结构---LRU,LFU算法
题意解释 请为LFU缓存设计一个数据结构。支持两种操作:get和set。 ● get(key) : 如果key在缓存中,则返回key对应的值;否则返回-1; ● put(key, value): 如果key在缓存中,则更新key对应的值;否则插入(key, value),如果缓存已满,则先删除使用频率最小的key,如果有多个key具有相同的使用频率,则应该删除最久未使用的key。 C++代码 class LFUCache { public: struct Node { Node *left, *right; int key, val;
|
3月前
|
缓存
leetcode-146:LRU 缓存
leetcode-146:LRU 缓存
17 0
|
5月前
|
缓存 算法
LRU算法详解
LRU算法详解
90 0
|
存储 SQL NoSQL
其实吧,LRU也就那么回事。 (中)
其实吧,LRU也就那么回事。 (中)
119 0
其实吧,LRU也就那么回事。 (中)
|
存储 缓存 算法
其实吧,LRU也就那么回事。 (上)
其实吧,LRU也就那么回事。 (上)
98 0
其实吧,LRU也就那么回事。 (上)
|
NoSQL 算法 Redis
其实吧,LRU也就那么回事。 (下)
其实吧,LRU也就那么回事。 (下)
109 0
其实吧,LRU也就那么回事。 (下)
|
存储 缓存 算法
最近最少使用(LRU)缓存淘汰算法
最近最少使用(LRU)缓存淘汰算法
最近最少使用(LRU)缓存淘汰算法
|
缓存 算法 Java
LRU算法
LRU是Least Recently Used的缩写,意思就是最近最少使用,常用于页面置换的一种算法。LRU算法的提出,是基于这样一个场景:在前面几条指令中使用频繁的页面很可能在后面的几条指令中频繁使用。反过来说,已经很久没有使用的页面很可能在未来较长的一段时间内不会被用到。这个,就是著名的局部性原理。此外,LRU算法也经常被用作缓存淘汰策略。本文将基于LRU算法的思想,使用Java语言实现一个我们自己的缓存工具类
|
缓存 算法
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。 常见类型包括LFU、LRU、ARC、FIFO、MRU。
431 0
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
|
存储 缓存 NoSQL
LRU(Least Recently Used)
Redis是基于内存存储的key-value数据库,我们知道内存虽然快但空间小,当物理内存达到上限时,系统就会跑的很慢,这是因为swap机制会将部分内存的数据转移到swap分区中,通过与swap的交换保证系统继续运行;但是swap属于硬盘存储,速度远远比不上内存,尤其是对于Redis这种QPS非常高的服务,发生这种情况是无法接收的。(注意如果swap分区内存也满了,系统就会发生错误!)
322 0
LRU(Least Recently Used)