简单的页面置换算法分析

来源:互联网 发布:单片机检测电压原理 编辑:程序博客网 时间:2024/06/10 01:24

博客已迁移至:
https://fenglincanyi.github.io/

本文主要分析操作系统中涉及到的一些常见的置换算法,并不对涉及的操作系统内容过多介绍。这些算法在其他的计算机应用中也有体现,基本原理都是一致的,可参考理解。

一、前提说明

本文主要针对一个例子进行说明,以下的算法实现过程均是按照本例进行分析。页面的走向为:

4 3 2 1 4 3 5 4 3 2 1 5 

一段程序在内存中,分配3个页面,初始情况下为空。
以下依次根据不同的算法进行页面置换过程的分析。

二、算法分析过程

1. FIFO(先进先出)

FIFO算是最简单、最容易理解的算法了,只要按照依次装入内存的页面的页号按照进入的先后次序排好队列,每次总是从队首出,队尾出。当发生缺页时,置换队首的页面即可。
对上面的页面走向序列,分析过程如下图:

2. LRU (最近最少使用 Least Recently Used)

在缺页发生时,选择离现在最长时间内,没有被访问过的页面置换出来。
分析过程,如下图:

  • 此算法应用的比较广泛,尤其是拿来做缓存算法。Android的API中,已经封装了相关的LRU的算法直接可以调用。
  • 一些图片的缓存算法都是使用LRU进行缓存优化的。ImageLoader框架更是将好几种缓存算法融合到里面,可以灵活选用。详细可以查看源码的实现。

3. LFU (最近最不常用 Least Frequently Used)

选择访问次数最少的页面置换出来。
此算法的实现要花费的开销很大,并且要确定一个合适的周期T也有一定的难度,就不在分析了。

3. OPT (理想)

此算法置换以后不再需要或最长时间以后才会用到的页面。这一算法一般不可能实现,但它可以作为衡量其他页面置换算法的标准。
分析过程,如下图:

0 0