LRU(Least Recent Used)是我们在cache替换算法中最普遍使用的算法,在缓存块已满,而需要缓存新的数据块的时候,
这时需要从缓存中找到一个“没有价值”的块用新的数据块去替换它。
LRU的特点是简洁高效,但是缺点是LRU的缺点是不能对weak locality的数据进行缓存
一个印度人的ARC还有LIRSLRU的缺点是不能对weak locality的数据进行缓存。
a. 如果stack size有1000个块,而一个文件是1001个块的大小,而且每次访问都是从头到尾的访问。则LRU的性能非常
差,几乎没有任何缓存。
b. 假设我们要邀请学习好的同学到一个容纳10人的会议室开会。如果是LRU算法的话,会邀请90分以上或者80分以上的人,,但是如果没有80分以上的同学则一个都不邀请,而会议室也就白白浪费了,对于LIRS,邀请
成绩前在10名的同学到会议室。这里会议室为我们的stack ,这样我们的会议室也就是stack至少不会浪费。
所以我们这里边的问题就是如何把一些weak locality的数据也能够缓存起来,使我们的cache得到充分的使用?
2. 两个概念
Reuse: 一个块被使用之后,再次被使用
Recency:一个块被访问后,和上一次访问之间的距离。
LIRS的基本思想是对访问的数据块进行分类,一部分为hot数据块,一部分为cold数据块。对于hot数据块我们可以分配
90%以上的cache给它们。而对于cold数据块给