3

MFU(最常用)页面替换算法什么时候比LRU(最不常用)有更好的性能?什么时候比LRU差?除了 MFU 页面替换算法的基本定义之外,我在哪里可以找到信息?

4

2 回答 2

7

通常,我看到一个 MFU 缓存用作主缓存,由使用 LRU 替换算法的辅助缓存(MRU 缓存)支持。这个想法是最近使用的东西将保留在主缓存中,从而提供非常快速的访问。当少量项目被频繁使用时,这会减少您在 MRU 缓存中看到的“流失”。它还可以防止那些常用的项目仅仅因为它们有一段时间没有被使用而被从缓存中逐出。

如果您有少量经常引用的项目和大量不经常引用的项目,则 MFU 可以很好地工作。例如,一个典型的桌面用户可能有三四个他每天使用很多次的程序,以及数百个他很少使用的程序。如果您想通过在内存程序中缓存来改善他的体验,以便它们能够快速启动,那么您最好缓存他经常使用的那些东西。

另一方面,如果您有大量基本上是随机引用的项目,或者某些项目的访问频率略高于这些项目,或者项目通常被批量引用(即项目 A 在短时间内被多次访问,并且然后根本没有),那么 LRU 缓存驱逐方案可能会更好。

于 2012-11-28T04:48:09.893 回答
1

最近最少使用 (LRU) 页面替换算法

在这个算法中,最长时间没有被使用的页面必须被替换。

LRU 页面替换算法的优点:

  1. 它可以进行全面的统计分析。
  2. 从未遭受贝拉迪异常的困扰。

最常使用的页面替换算法 (MFU)

实际上 MFU 算法认为最频繁使用的页面不会立即被需要,所以它会替换 MFU 页面

示例:考虑以下引用字符串:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

缓冲区大小:3 字符串:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7 7 7 2 2 2 0 4 2 2 0 0 2 2 2 0 0 7 7 7

  0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 3 0 0

    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
于 2013-04-12T09:42:13.387 回答