2016 - 2024

感恩一路有你

lfu算法实现 LFU算法LFU算法过程是什么,呵LRU算?

浏览量:1985 时间:2021-03-17 20:13:36 作者:admin

LFU算法LFU算法过程是什么,呵LRU算?

LRU是最近最少使用的页面替换算法(least recently used),即首先消除最长未使用的页面!LFU是最近使用最少的页面替换算法(最少频繁使用),即在一定的时间内消除最少访问的页面!例如,第二方法的周期T是10分钟,如果每分钟分页一次,则主存储器块是3,如果所需的页方向是21234。请注意,调用第4页时,将出现缺页中断。根据LRU算法,应该替换第1页(第1页最长时间没有使用),但是根据LFU算法,应该替换第3页(第3页每十分钟才使用一次)。可以看出,LRU的关键是看页面最后使用了多长时间,而LFU的关键是看页面在一段时间内使用的频率

lfu算法优缺点?

在LFU算法中,可以为每个密钥维护一个计数器。每次存取钥匙时,计数器都会增加。计数器越大,访问频率就越高。

上述简单算法有两个问题:

在LRU算法中,它可以维护一个双向链表,然后简单地将被访问的节点移动到链表的开头,但在LFU中是不可行的。节点应严格按照计数器排序。当添加新节点或更新节点位置时,时间复杂度可能达到o(n)。

增加计数器的简单方法并不完美。访问模式将频繁更改。在一段时间内频繁访问的密钥在一段时间后可能很少被访问。仅仅增加计数器不能反映这一趋势。

第一个问题解决得很好。我们可以借鉴LRU实现的经验来维护一个待淘汰的密钥池。第二个问题的解决方案是记录上次访问密钥的时间,然后随着时间的推移减少计数器。

redis object的结构如下:

typedef struct redisobject{

unsigned类型:4

未签名编码:4

未签名lru:lru位/*LRU时间(相对于全局LRU时钟)或

*LFU数据(最低有效8位频率

*和最高有效16位访问时间)。*/

int refcount

void*ptr

}罗布

lfu算法实现 最佳页面置换算法 lru算法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。