LRU代表最近最少使用。 LRU 算法的发展结束了 1960 年代和 1970 年代关于页面替换算法的争论和研究。
LRU 替换缓存中在缓存中存在时间最长的行而不引用它。它适用于最近使用的块更有可能被再次引用的想法。 LRU 是最常用的算法,因为与其他算法相比,它产生的页面错误数量较少。
LRU的特点
- 已经观察到,最近被大量使用的页面可能也会在即将到来的指令中大量使用,这构成了 LRU 的基础。
- 当程序请求的页面不在 RAM 中时,就会发生页面错误,然后如果页面框已满,则我们必须删除最长时间未使用的页面。
- 可以在每行包含一个 USE 位的 2 路集关联映射中轻松实现。引用行的 USE 位设置为 1,另一行的 USE 位设置为 0。当集合已满时,我们考虑替换 USE 位为零的块。
LRU的优势
- 与 FIFO 不同,LRU 不受 Belady 异常的影响。
- 除了最优算法之外,它提供的页面错误数量更少,并且由于最优算法无法在现实生活中实现,LRU 是最常用的算法。
- LRU 算法非常高效。
LRU的缺点
- 由于我们必须跟踪引用了哪些页面,因此开销更大。
- 由于需要硬件辅助,因此难以实施。