面试题答案
一键面试常见页面置换算法对比
- FIFO(先进先出)算法
- 原理:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。
- 优点:算法简单,实现容易,只需记录各页面进入内存的先后顺序。
- 缺点:性能较差,因为它没有考虑页面是否经常被访问。可能会把一些经常使用的页面置换出去,出现Belady现象(在分页系统中,分配给进程的物理块数增多,缺页率反而提高的异常现象)。
- LRU(最近最久未使用)算法
- 原理:每次淘汰的页面是最近一段时间内最久未被访问的页面。
- 优点:能够比较准确地反映程序局部性原理,性能较好,在实际应用中较为常用。
- 缺点:实现成本较高,需要记录每个页面上次被访问的时间,每次访问页面时都要更新这个时间戳。
- OPT(最佳置换)算法
- 原理:淘汰未来最长时间内不会被访问的页面。
- 优点:理论上是最优的算法,它保证了最低的缺页率。
- 缺点:无法实现,因为操作系统无法预知未来的页面访问序列。常被用作衡量其他页面置换算法性能的参照标准。
实际应用场景中算法选择
- 对性能要求不高且实现简单场景:如果系统对性能要求不是特别高,且希望算法实现简单,减少系统开销,FIFO算法可以考虑。例如一些对实时性要求不高的批处理系统,FIFO算法虽然性能不是最优,但因其简单性可以在一定程度上满足需求。
- 通用场景及注重性能场景:在大多数通用操作系统场景中,LRU算法是比较好的选择。它能较好地平衡性能和实现成本,通过近似模拟程序的局部性原理,能有效减少缺页率,提高系统性能。如现代操作系统中的内存管理,LRU及其变种算法被广泛应用。
- 特殊场景(已知未来访问序列模拟等):在一些特殊场景下,如对程序运行过程中的页面访问序列有一定预知能力(如模拟特定程序运行),可以使用OPT算法的思想来优化页面置换,尽管不能完全实现OPT算法,但可以尽量接近其效果,以此来对系统性能进行优化。