【问题标题】:page replacement algorithms: optimal, FIFO, and LRU页面替换算法:优化、FIFO 和 LRU
【发布时间】:2017-05-23 13:41:01
【问题描述】:
我有一个问题,我不确定。
一共有三个物理页面的计算机内存,以及页面引用顺序:
1、2、3、2、1、4、3、5、6、4、3、5、3、5、6、7、2、1、5、7。使用最优、FIFO和LRU页面替换算法.
我试过了,但我不确定我的答案。
另外,在这种情况下,哪一个是好的算法?为什么?
我的回答:
最佳:PF 10
先进先出:PF 12
LRU:PF 16
【问题讨论】:
-
您的计算看起来正确。那么你剩下的作业有什么问题呢?你可能担心或想太多了。似乎只有 2 个可能的答案。要么这是一个现实世界的问题,FIFO 是最好的,因为它的 PF 最少,要么这是一个可塑性的问题,optimal 是最好的,因为如果你知道页面加载顺序,它总是最好的策略前进 - 因此Bélády's Algorithm 的名称 optimal。
标签:
algorithm
operating-system
【解决方案1】:
如果我们从理论上分析,那么最优页面替换算法是最好的。
原因:
- 它最大限度地减少页面错误(所有页面替换算法中的最少页面错误)
- 它克服了 Belady 的异常
但是这个算法的问题是,它需要对所需页面的未来了解,即需要在内存中获取哪个页面,这并非总是可能的。
如果页面是已知的,那么您必须使用 OPR 算法。否则,根据页面需求,分析每个算法的成本并实施导致页面错误最小的页面替换策略。
【解决方案2】:
任何页面替换的主要内容是页面的访问模式/序列。此访问权限因操作系统的运行时工作负载而异。
如果我们可以清楚地看到访问模式并可以预测未来需要的页面,那么“最佳页面替换”是最好的。正如 sanjay 在另一个答案中所提到的,它最大限度地减少了页面错误。
如果模式无法预测,LRU 可能适用于大多数实际工作负载。但是一些工作负载可能会显示 FIFO 优于 LRU。您可以在此处找到相同的discussion。