【问题标题】:When does FIFO win over LRU replacement algorithm?FIFO 何时胜过 LRU 替换算法?
【发布时间】:2021-02-04 13:50:19
【问题描述】:

当 FIFO 战胜 LRU 时,我需要一个数字序列。假设 15 个以下的数字和页数为 3。我希望 FIFO 比 LRU 获得更少的页面错误。有可能吗?

【问题讨论】:

  • 你试过什么?
  • LRU 就像 FIFO,除了当队列中的某些东西被引用时,它会被移到队列的后面。所以你需要找到一个序列,通过将一个项目(A)移动到队列的后面,LRU选择驱逐(B)而FIFO驱逐(C),然后(B)出现在(A)之前的序列中,所以LRU 必须重新获取 (B) 而 FIFO 没有。

标签: algorithm replace fifo lru


【解决方案1】:

对于三页缓存,序列1, 2, 3, 1, 4, 2 可以解决问题。缓存的演变:

FIFO    LRU
1       1
12      12
123     123 [three misses for both as the cache fills]
123     231 [LRU moves 1 to the back]
234     314
234     142 [LRU but not FIFO misses on 2]

【讨论】:

    【解决方案2】:

    FIFO 是简单的缓存实现,虽然实现简单,但不提供最佳的页面错误。

    当使用基于 CLOCK(FIFO 的变体)的数据结构时,我们可以获得更好的性能,与 LRU 相比,页面错误更少。 CLOCK 有多种变体。

    在实践中,LRU 是最佳缓存实现和各种操作系统、数据库使用 LRU 的变体,例如 ARC、LIRS ...

    有关更多信息,请参阅 wiki 了解各种缓存策略

    https://en.wikipedia.org/wiki/Cache_replacement_policies https://en.wikipedia.org/wiki/Page_replacement_algorithm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2013-12-06
      • 2014-05-10
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      相关资源
      最近更新 更多