【问题标题】:Are the LRU and FIFO page replacements done correctly here?LRU 和 FIFO 页面替换在这里正确完成了吗?
【发布时间】:2017-02-14 15:16:38
【问题描述】:

我只是在学习分页,我想知道我为页面替换所做的是否正确,因为我在网上找到的教程似乎到处都是。我主要是在寻求澄清我是否做错了什么,并且想要一个解释而不是直接链接到其他地方的东西我必须进一步解释那些没有真正帮助的东西。

我已经为序列做了 3 帧内存, 0, 3, 1, 2, 3, 2, 0, 1, 0, 1, 3, 0, 2, 3, 1

Screenshot of my working

Y = 有故障,N = 无故障。

更新:尝试修复我的 FIFO, new working for FIFO

【问题讨论】:

  • 你的 lru 是正确的。你的fifo似乎和lru一模一样,为什么?当第二个零出现(#7)时,帧是 3、1 和 2。当您删除第 1 页时,lru 正确,但 fifo 不正确。在 fifo 中,您应该已经删除了第 3 页。请参阅第 1 页是在第 3 步中引入的,因此它比第 3 页在第 2 步中引入的要年轻。第 2 页是第 4 步中引入的最年轻的页面。在fifo中,替换最旧的,即。第 3 页。在 lru 中替换 old-untouched。
  • @inquisitive 所以我又做了一次 FIFO,不完全确定这次我是否正确。
  • 在fifo中,替换最旧的。检查步骤 #11。第 3 页与第 1 页 (#3)、第 2 页 (#4) 和第 0 页 (#7) 竞争。应该删除第 1 页,为什么却删除了第 0 页?

标签: memory-management paging fifo lru page-replacement


【解决方案1】:

在进行fifo时,在每一步中,我们都会复制之前的缓存状态。请注意,缓存槽是从左到右的,从最老到最年轻。根据命中或未命中,我们会做以下两件事之一:

如果被击中则什么也不做。

如果未命中,则删除最左边的缓存条目。在右侧追加新条目。

在执行 lru 时,除了被击中时,我们将被击中的项目移动到最右边的插槽之外,其他一切都保持不变。这意味着命中的项目成为同类中最年轻的。

【讨论】:

    【解决方案2】:

    2mints 孟加拉语中的 FIFO 页面替换算法! https://www.youtube.com/watch?v=QuucGuHkLcI&t=9s

    【讨论】:

    • 请贴出相关代码,以防您的链接被删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2013-12-06
    相关资源
    最近更新 更多