1、最佳置换算法

 该算法的核心思想就是:选择永久不适用或是在最长时间内不再被访问的页面置换出内存。

该算法为理想化算法,从计算结果来看,缺页率较低,性能较好,对于固定分配页面方式,该算法可保证获得最低的缺页率,但在实际中难于实现,主要用于评价参照。

2、随机置换算法

该算法的核心思想是每次随机产生取值范围在0N-1之间的随机数,该随机数表示应该被淘汰出内存的页面。

   随机置换算法思想简单,实现较容易,大量数据随机模拟的缺页率在50%以上。

3、先进先出置换算法

该算法的核心思想是:选择最先进入内存即在内存中驻留时间最久的页面换出到外存。

进程已调入内存的页面按进入先后次序链接成一个循环队列,并设置替换指针以指向最老页面。

该算法简单直观,但是不符合实际运行规律。从缺页率计算结果来看,运行较差。

4、最近最久未使用置换算法

最近最久未使用置换算法的核心思想就是选择最近一段时间未被访问的页面淘汰出内存。

最近最久未使用算法需要额外的硬件支持,寄存器或栈,用栈就是将当前使用过的放在栈顶,其余的均栈底压,如果分配的内存已满,每次替换的都是栈底的元素。

    最近最久未使用的算法执行效率相对先进先出算法执行效率会较高。

5、简单Clock置换算法

    简单Clock置换算法的思想是为每页设置一个访问位,再将内存中所有页面都链接成一个循环队列。当某页被访问时,其访问位置1。置换算法在其中选择一页淘汰时,只需检查页的访问位。如果是0,就选择该页换出;若为1,则重新将它置0,暂不换出,再按照FIFO算法的思想检查下一个页面,当查到队列的最后一个页面时,若其访问位仍为1,则再返回队首去检查第一个页面。

       简单 Clock 算法只有一个访问位,用于标记是否已经被使用过。

6、改进Clock置换算法

改进Clock算法的核心思想是:设置两个标志位,一个为访问标志位,一个为修改标志位,如果修改标志位为0,且访问标志位也为0,则是最佳淘汰页。在此期间不改变访问标志位。

如果第一步不成功,则寻找访问标志位为0,且修改标志位为1的页面淘汰,此时,所有扫描过的访问标志位都置0,如果此时失败,则返回上一步,将所有访问位复0。重复两次即可。

    与简单Clock相比,可减少磁盘的I/O操作次数。但为了找到一个可置换的页,可能须经过几轮扫描,实现该算法本身的开销将有所增加。

7、随机测试

生成随机序列的过程如下:

(1)确定物理内存块大小M,虚拟内存页面总数N,工作集的起始位置p,工作集中的页数e,工作集的移动率m,和一个范围在01之间的值t

(2)生成m个取值范围在pp+e之间的随机数,并记录到页面访问序列串中;

(3)生成一个随机数r;

4)如果r<t,则为p生成一个新值,否则p=(p+1)modN;

(5)如果想继续加大页面访问序列串的长度,则返回第2步,否则结束。