操做系统本质上是一个多级缓存系统,从cpu寄存器,cpu一级缓存,cpu二级缓存,cpu三级缓存,主内存,硬盘,从右到左访问效率依次提高。如何在有限的资源内处理无限的数据?最理想的状况是置换出将来短时间内不会被再次访问的数据,可是咱们没法预知将来,因此只能从数据在过去的访问状况中寻找规律进行置换。算法
LRU全称是Least Recently Used,即最近最久未使用算法。其基于若是一个数据在最近一段时间没有被访问到,那么在未来它被访问的可能性也很小
的思路,也就是说优先删除掉在过去一段时间内没有被访问的数据。缓存
利用双向链表记录数据顺序,hashmap查询数据;操作系统
LFU全称是Least Frequently Used,即最近最少使用算法。其基于若是一个数据在最近一段时间内使用次数不多,那么在未来一段时间内被使用的可能性也很小
的思路,也就是说删除在过去一段时间内使用次数不多的数据;code
注意LFU和LRU算法的不一样之处:LRU的淘汰规则是基于访问时间,而LFU是基于访问次数的。blog
一样利用双向链表记录数据顺序,hashmap查询数据(存储的节点还须要维护访问次数)内存
FIFO全称是First in First out,即先进先出算法。其基于若是一个数据最早进入缓存中,则应该最先淘汰掉
的思路,也就是说优先删除掉最早保存到链表中的数据;资源
利用双向链表记录数据顺序,hashmap查询数据;hash