【问题标题】:Could someone help me to figure an example of MRU and CLOCK?有人可以帮我举一个 MRU 和 CLOCK 的例子吗?
【发布时间】:2016-06-07 17:06:36
【问题描述】:

作为标题。

有一个有 3 个页面的缓冲池接收以下页码的请求:

2,4,4,2,5,2,1,1,3,1

替换策略是 MRU 和 CLOCK。 我对它们的工作方式感到困惑。有人可以给我看看吗?非常感谢~

更新:

我的解决方案遵循 MRU 政策:

2

2 4

2 4

2 4

2 4 5

2 4 5

1 4 5

3 4 5

1 4 5

是吗?

并遵循 LRU 政策:

          hit/miss?

2 米

2 4 米

2 4 小时

2 4 小时

2 4 5 米

2 4 5 小时

2 1 5 米

2 1 5 小时

2 1 3 米

2 1 3 小时

是吗?

【问题讨论】:

  • 你确定是MRU(请展开)?我听说过 LRU、NRU、NFU,但没有听说过 MRU!或者我现在不记得了,可能。
  • MRU 是最近使用的~
  • @mihuecho:请不要彻底改变您的问题,尤其是在有人回答之后。它使旧的答案不完整/不正确,回答者甚至不知道。
  • 都是我的错。再次抱歉~

标签: operating-system paging virtual-memory mru page-replacement


【解决方案1】:

我的解决方案遵循 MRU 政策...是吗?

根据您提到的 MRU 定义,您的 MRU 页面替换策略似乎是正确的。

替换策略是 MRU 和 CLOCK。我对它们的工作方式感到困惑。在这种情况下(对于 2,4,4,2,5,2,1,1,3,1 页码):

在时钟页面替换策略中,操作系统通过页面循环,清除 参考位并找到参考位设置为 0 的页面。

Page number                  Reference bit

 2                               1
2,4                             1,1
2,4                             1,1
2,4                             1,1
2,4,5                          1,1,1
2,4,5                          1,1,1
1,4,5                          1,0,0
1,4,5                          1,0,0
1,3,5                          1,1,0
1,3,5                          1,1,0

并遵循 LRU 政策:命中/未命中?对吗?

YES,对于 LRU 页面替换,页面顺序以及命中数和未命中数都是正确的。

【讨论】:

  • 请求应该是 2 4 4 2 5 2 1 1 3 1。抱歉打错了!
  • @mihuecho - 没问题,我已经修改了答案。不需要太多编辑:D
  • 非常感谢!我可以再问一个问题吗?如何计算它们的命中率?我的意思是,命中率是命中/所有请求(这里的数字是 10)。我很困惑是否错过了一页或点击一页?如果一个页面是第一次被请求的,那么它就是一个错过的页面。如果我们再次请求它,那么它应该是一个成功的?
  • @mihuecho - 好吧,你可以。但是,请记住,这个问题过于宽泛,无法作为一个整体来回答。
  • @mihuecho - 是的,命中/未命中率只是它们在内存中可用/不可用的次数,从而防止/发生页面错误。 如果一个页面是第一次被请求的,那么它就是一个错过的页面。如果我们再次请求它,那么只有当它存在于内存中时,它才应该是命中的。
【解决方案2】:

对于 MRU 驱逐策略,让我们将 MRU 页面保持在最前面。使用给定的请求列表,以下将是缓冲区的状态:

2 -> 2
4 -> 2 4
4 -> 2 4
2 -> 4 2
5 -> 4 2 5
2 -> 4 5 2
1 -> 4 5 1
1 -> 4 5 1
3 -> 4 5 3
1 -> 4 5 1

对于 CLOCK eviction 策略,页面列表将是(* 表示发生页面错误时要填充的缓冲区位置):

2 -> 2 *
4 -> 2 4 *
4 -> 2 4 *
2 -> 2 4 *
5 -> 2* 4 5
2 -> 2* 4 5
1 -> 1 4* 5
1 -> 1 4* 5
3 -> 1 3 5*
1 -> 1 3 5*

遵循 LRU 策略,让我们将 LRU 页面放在后面。缓冲区的状态将是:

2 -> 2
4 -> 2 4
4 -> 2 4
2 -> 4 2
5 -> 4 2 5
2 -> 4 5 2
1 -> 5 2 1
1 -> 5 2 1
3 -> 2 1 3
1 -> 2 3 1

【讨论】:

  • @Am_I_Helpful:内存中的顺序会改变吗?不会。为了知道最近使用哪个页面,数据结构中的顺序会发生变化吗?是的。 LinkedHashMaps 用于构建时间相关的缓存。因此,当策略为 MRU 时,项目在被访问时会移到列表顶部,这就是我要演示的内容。
  • 好的,我同意你的观点。但是,我以人类可以理解的方式回答了它。
  • @Am_I_Helpful:你可能有......但我对你的回答没有任何问题。只是澄清了你认为我的问题。 :)
猜你喜欢
  • 1970-01-01
  • 2013-05-06
  • 2018-02-15
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多