(操作系统)缓存算法

818 阅读1分钟

缓存算法

缓存算法(页面置换算法)FIFO、LFU、LRU

FIFO

先进先出。如果一个数据最先进入缓存中,则应该最早淘汰掉。

底层实现是双向链表

LFU(Least Frequently Used)

最近最少使用算法。如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。

底层实现是数组和hashmap

LFU算法最简单的一种设计思路就是利用一个数组存储数据项,用hashmap存储每个数据项在数组中对应的位置,然后为每个数据项设计一个访问频次,当数据项被命中时,访问频次自增,在淘汰的时候淘汰访问频次最少的数据。这样一来的话,在插入数据和访问数据的时候都能达到O(1)的时间复杂度。

LRU

最近最久未使用。如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。

底层实现是链表和Hashmap

当插入新数据时,如果新数据项在链表中存在(一般称为命中),则把该节点移到链表头部,如果不存在,则新建一个节点,放到链表头部。

在访问数据时,如果数据项在链表中存在,则把该节点移到链表头部,否则返回-1。

若缓存满了,则把链表最后一个节点删除即可。

参考链接:www.cnblogs.com/argenbarbie…