1.概念理解
LRU是Least Recently Used(最近最少使用)的首字母组合,最早接触是在操作系统课程中,关于Cache的hit和miss的一种算法,可以极大地提高访问命中率。
网上有许多关于LRU算法解释的例子,这里简单说一下:
1、该算法的运行过程就像一个特殊的栈;
2、“栈”容量大小cacheSize固定;
3、当要访问的表项不在“栈”中时,是一个cache miss的过程:
如果"栈"还有剩余空间(即使用量小于cacheSize),则将该表项置于栈顶;
如果"栈"已被填满(即使用量等于cacheSize),这时必须先将栈底(即最早被使用过,但是最近最少使用)的表项弹出,然后将待访问的表项压入"栈"中;
4、当要访问的页面在“栈”中时,是一个cache hit的过程,就能直接获得该页面的地址,并且将该地址置于栈顶(每个表项在cache中只出现一次,可以理解为将“栈”中原表项先删除,再将其压入栈顶),表示最新访问过的表项。
算法理解,还是来看个例子:栈容量为3,页面访问序列为3、0、2、0、1、3,“栈”的表现如下:
3(访问3,miss,压入栈顶)
3 0(访问0,miss,压入栈顶)