我正在为我的操作系统课程模拟页面替换的项目。我有一个模拟器,而不是在1200个参考上运行所有三种算法。然而,我得到了页面错误率,其中LRU算法在大多数时间里得分等于或低于FIFO。有时会输入一个输入,LRU的页面错误率略高于FIFO。这是不正确的?
我使用每个页码的计数器,每轮递增以实现LRU。正在使用的页面将其计数器重置为0.当我交换帧时,我使用具有最大计数器值的帧。我觉得我的实施应该是正确的。
答案 0 :(得分:2)
当然,LRU不是最优的,而FIFO甚至可能更好。
例如,考虑一个应用程序,它反复顺序扫描一个大型数组(太大而无法容纳在内存中),总是从头开始,通常足够强大,可以强制更换页面,但往往没有达到目的。我认为,最佳策略会保留数组中的早期页面,这些页面将在每次扫描时使用,而不是最近访问的页面,这可能在一段时间内不再需要。这种策略比FIFO更类似于FIFO。