页面置换算法

操作系统的虚拟存储器管理技术中,有一项比较重要的分支叫分页存储管理。分页管理是在页架中装入一些需要使用或过去使用过的页面,但是页架的数量是有限的,这里就会用到一些页面置换算法,使得页面访问的效率提高。判断一个置换算法优劣的指标就是缺页率,缺页是指当前的页架中没有需要访问的页面,而需要将该页面加入其中一个页架。缺页率=访问缺页次数/访问总次数。

1.最佳置换算法OPT

不可现实的算法

 

总结:若出现缺页,从该页向后查找,先找到的M-1个页面保留在内存,另外那个替换掉。

 

 

 

2.先进先出FIFO页面置换算法

 

缺点:存在Belady现象,抖动现象。

 

 

 

3.最近最久未使用(LRU)置换算法

 

最有效的页面置换算法

 

总结:若出现缺页,从该页向前查找,先找到的M-1个页面保留在内存,另外那个替换掉。

 

 

 

4.Clock置换算法

 

又称最近未使用算法又没有被修改。

多了控制位
2.先进先出算法(FIFO)是一个实现起来比较简单的页面置换算法,其基本原则是“选择最早进入主存的页面淘汰”,理由是最早进入的页面,其不再使用的可能性比最近调入的页面要大。
理论上来说,如果分配的页架数增加的话,缺页率是会减少,但是FIFO算法对于一些特殊的页面访问序列会有随着分给的页架数增加,缺页率也增加的异常现象。
 

4.Clock置换算法

内存及控制信息 输入串 指针移动情况及帧替换信息 是否缺页?
内存 访问位 指针 3 内存中没有3,需要找到一个帧放入3,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
  0
  0  
  0  
内存 访问位 指针 4 内存中没有4,需要找到一个帧放入4,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 1  
  0
  0  
内存 访问位 指针 2 内存中没有2,需要找到一个帧放入2,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 1  
4 1  
  0
内存 访问位 指针 6 内存中没有6,需要找到一个帧放入6,
指针所指的位置的访问位为1,
将其变成0,再下移
3 1
4 1  
2 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
3 0  
4 1
2 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
3 0  
4 0  
2 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 0
4 0  
2 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 1  
4 0
2 0  
内存 访问位 指针 3 内存中没有3,需要找到一个帧放入3,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
6 1  
4 1  
2 0
内存 访问位 指针 7 内存中没有7,需要找到一个帧放入7,
指针所指的位置的访问位为1,
将其变成0,再下移
内存及控制信息 输入串 指针移动情况及帧替换信息 是否缺页?
内存 访问位 指针 3 内存中没有3,需要找到一个帧放入3,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
  0
  0  
  0  
内存 访问位 指针 4 内存中没有4,需要找到一个帧放入4,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 1  
  0
  0  
内存 访问位 指针 2 内存中没有2,需要找到一个帧放入2,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 1  
4 1  
  0
内存 访问位 指针 6 内存中没有6,需要找到一个帧放入6,
指针所指的位置的访问位为1,
将其变成0,再下移
3 1
4 1  
2 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
3 0  
4 1
2 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
3 0  
4 0  
2 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
3 0
4 0  
2 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 1  
4 0
2 0  
内存 访问位 指针 3 内存中没有3,需要找到一个帧放入3,
指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
6 1  
4 1  
2 0
内存 访问位 指针 7 内存中没有7,需要找到一个帧放入7,
指针所指的位置的访问位为1,
将其变成0,再下移
6 1
4 1  
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 0  
4 1
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
6 0  
4 0  
3 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
6 0
4 0  
3 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
7 1  
4 0
3 0  
内存 访问位 指针 3 内存中有3,于是3所在帧的访问位变为1,
指针下移(回到开头)
×
7 1  
4 1  
3 0
内存 访问位 指针 6 内存中没有6,需要找到一个帧放入6,
指针所指的位置的访问位为1,
将其变成0,再下移
7 1
4 1  
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
7 0  
4 1
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
7 0  
4 0  
3 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
7 0
4 0  
3 0  
内存 访问位 指针 3 内存中有3,于是3所在帧的访问位变为1,
指针下移
×
6 1  
4 0
3 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 1
4 0  
3 1  
内存 访问位 指针 8 内存中没有8,需要找到一个帧放入8,
指针所指的位置的访问位为1,
将其变成0,再下移(回到开头)
6 1  
4 1  
3 1
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 1
4 1  
3 0  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 0  
4 1
3 0  
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移(回到开头)
6 0  
4 0  
3 0
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 0
4 0  
8 1  
内存 访问位 指针 6 内存中有6,于是6所在帧的访问位变为1,
指针下移
×
6 0  
4 1  
8 1
内存 访问位 指针 结束 完成 缺页8次
6 1  
4 1
8 1

 

 

6 1
4 1  
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 0  
4 1
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
6 0  
4 0  
3 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
6 0
4 0  
3 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
7 1  
4 0
3 0  
内存 访问位 指针 3 内存中有3,于是3所在帧的访问位变为1,
指针下移(回到开头)
×
7 1  
4 1  
3 0
内存 访问位 指针 6 内存中没有6,需要找到一个帧放入6,
指针所指的位置的访问位为1,
将其变成0,再下移
7 1
4 1  
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
7 0  
4 1
3 1  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移(回到开头)
7 0  
4 0  
3 1
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移
7 0
4 0  
3 0  
内存 访问位 指针 3 内存中有3,于是3所在帧的访问位变为1,
指针下移
×
6 1  
4 0
3 0  
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 1
4 0  
3 1  
内存 访问位 指针 8 内存中没有8,需要找到一个帧放入8,
指针所指的位置的访问位为1,
将其变成0,再下移(回到开头)
6 1  
4 1  
3 1
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 1
4 1  
3 0  
内存 访问位 指针 指针所指的位置的访问位仍为1,
将其变成0,再下移
6 0  
4 1
3 0  
内存 访问位 指针 指针所指的位置恰好有访问位为0的,
于是就淘汰这个帧,指针下移(回到开头)
6 0  
4 0  
3 0
内存 访问位 指针 4 内存中有4,于是4所在帧的访问位变为1,
指针下移
×
6 0
4 0  
8 1  
内存 访问位 指针 6 内存中有6,于是6所在帧的访问位变为1,
指针下移
×
6 0  
4 1  
8 1
内存 访问位 指针 结束 完成 缺页8次
6 1  
4 1
8 1

 

 

更多0
 
posted @ 2014-03-28 08:54  程序员大叔的博客  阅读(1377)  评论(0编辑  收藏  举报