大创4
缓存失效算法
1,FIFO算法
所谓FIFO算法,就是先进先出队列, FIFO使用起来很简单,但是只能顺序写入数据,顺序的输出数据,不可以有地址线决定读取或写入某个指定的地址。
2.MRU算法
MRU算法也被称为最常使用算法,即一个条目处理越久,越容易被访问,该条目久越容易被清除
3.LFU算法
该算法使用一个计数器来记录条目被访问的频率。最低访问数的条目首先被移除。但是他无法对一个拥有最初高访问率的之后长时间没有被访问的条目缓存进行清除。
4.LRU算法
这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置,当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存到达极限时,较早之前访问的条栏目将从缓存底部开始被移除,。
5.ARC算法
该算法同时跟踪记录LFU和LRU,以及驱逐缓存条目,来获得可用缓存的最佳使用。
思考:如何来进行对缓存的定向驱逐呢?
我的想法是,可以构建一个cache中的数据的集合,通过不断的访问cache,判断是否命中(可能会有一定的误报率),如果命中,则对该集合中的数据记录下来,即该数据是cache中存在的数据 ,若没有命中,则说明cache中不存在该数据。我们可以从记录下来的数据中选择我们要主动驱逐的,通过一种驱逐算法,对cache中的数据进行判断是否在我们所构建的集合中,如果存在就对她进行驱逐,反之继续遍历。但可能存在几个问题:1,成本可能会比较高。2,这个集合我们怎么创建。3,该设计怎样一种算法来对数据进行驱逐。