操作系统内存最全解析!!!(16)


操作系统内存最全解析!!!

文章插图
 
  • 最优算法在当前页面中置换最后要访问的页面 。不幸的是,没有办法来判定哪个页面是最后一个要访问的,因此实际上该算法不能使用 。然而,它可以作为衡量其他算法的标准 。
  • NRU 算法根据 R 位和 M 位的状态将页面氛围四类 。从编号最小的类别中随机选择一个页面 。NRU 算法易于实现,但是性能不是很好 。存在更好的算法 。
  • FIFO 会跟踪页面加载进入内存中的顺序,并把页面放入一个链表中 。有可能删除存在时间最长但是还在使用的页面,因此这个算法也不是一个很好的选择 。
  • 第二次机会算法是对 FIFO 的一个修改,它会在删除页面之前检查这个页面是否仍在使用 。如果页面正在使用,就会进行保留 。这个改进大大提高了性能 。
  • 时钟 算法是第二次机会算法的另外一种实现形式,时钟算法和第二次算法的性能差不多,但是会花费更少的时间来执行算法 。
  • LRU 算法是一个非常优秀的算法,但是没有特殊的硬件(TLB)很难实现 。如果没有硬件,就不能使用 LRU 算法 。
  • NFU 算法是一种近似于 LRU 的算法,它的性能不是非常好 。
  • 老化 算法是一种更接近 LRU 算法的实现,并且可以更好的实现,因此是一个很好的选择
  • 最后两种算法都使用了工作集算法 。工作集算法提供了合理的性能开销,但是它的实现比较复杂 。WSClock 是另外一种变体,它不仅能够提供良好的性能,而且可以高效地实现 。
总之,最好的算法是老化算法和WSClock算法 。他们分别是基于 LRU 和工作集算法 。他们都具有良好的性能并且能够被有效的实现 。还存在其他一些好的算法,但实际上这两个可能是最重要的 。

【操作系统内存最全解析!!!】


推荐阅读