0

我正在为我的操作系统课程做一个模拟页面替换的项目。我有一个模拟器,可以在 1200 个引用上运行所有三种算法。但是,我得到了页面错误率,其中 LRU 算法仅在大多数情况下获得等于或低于 FIFO 的分数。偶尔会运行一个输入,即 LRU 的页面错误率会比 FIFO 略高。这是不正确的吗?

我为每轮递增的每个页码使用计数器来实现 LRU。正在使用的页面将其计数器重置为 0。当我交换框架时,我使用具有最大计数器值的框架。我觉得我的实现应该是正确的。

4

1 回答 1

3

LRU 不是最优的肯定会发生,FIFO 甚至可能会更好。

例如,考虑一个应用程序,它重复顺序地扫描一个大数组(太大而无法放入内存)总是从头开始,通常足够远以强制页面替换,但通常不会到达结尾。

我认为,最佳策略是将早期页面保留在阵列中,每次扫描都会使用这些页面,而不是最近访问的页面,这可能在一段时间内不再需要。这种策略更类似于 FIFO 而不是 LRU。

于 2012-11-29T02:14:51.760 回答