网上很多介绍3种页面置换算法的例子和过程是不正确的, 本文根据《操作系统概念》第七版对三种算法做介绍,并给出正确的例子以验证算法。
一、FIFO先进先出页面置换算法,创建一个FIFO队列来管理内存中的所有页。在计算缺页率的时候最好把每一次页面调度的队列写出来,这样不容易出错。
下面举例说明:
假设页帧为3,引用串为:7,0,1,2,0,3,0,4,2
页面走向:7,0,1,2,0,3,0,4,2,
-----------------------------------------------
物理页: 7,7,7,2,2,2,2,4,4,
0,0,0,0,3,3,3,2,
1,1,1,1,0,0,0,
FIFO队列:7, 7,7,0,0,1,2,3,0,
0,0,1,1,2,3,0,4,
1,2,2,3,0,4,2,
首先7,0,1页面依次进入页帧,队列变为7,0,1,下一个引用2要调入,则队列头部的7出队,队列变为0,1,2,物理页内将7换成2,下一个引用0调入,已经存在页帧中,队列不变,下一个3调入,队列头的0出队,3入队列尾,队列变为1,2,3,页帧将0变为3。后面同理依次进行。
二、LRU是Least Recently Used 近期最少使用算法 ( 待更新 )
三、OPT是最佳页面替换算法(待更新)
下面举一些例子及答案,可根据上述算法验证调度算法的正确性。
1、在一个请求分页系统中,假如一个作业的页面走向为:1,2,3,6,4,7,3,2,1,4,7,5,6,5,2,1。当分配给该作业的物理块数为4时,分别采用最佳置换算法、LRU和FIFO页面置换算法,计算访问过程中所发生的缺页次数和缺页率。
答:最佳置换算法的情况如下表
页面走向 | 1 | 2 | 3 | 6 | 4 | 7 | 3 | 2 | 1 | 4 | 7 | 5 | 6 | 5 | 2 | 1 |
物理页0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
物理页1 |
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
物理页2 |
|
| 3 | 3 | 3 | 3 | 3 | 3 | 3 | 4 | 4 | 5 | 5 | 5 | 5 | 5 |
物理页3 |
|
|
| 6 | 4 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 6 | 6 | 6 | 6 |
缺页否 | Y | Y | Y | Y | Y | Y | N | N | N | Y | N | Y | Y | N | N | N |
缺页次数为9,缺页率为9/16
LRU算法的情况如下表:
页面走向 | 1 | 2 | 3 | 6 | 4 | 7 | 3 | 2 | 1 | 4 | 7 | 5 | 6 | 5 | 2 | 1 |
物理页0 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | 6 | 6 | 6 | 6 |
物理页1 |
| 2 | 2 | 2 | 2 | 7 | 7 | 7 | 7 | 4 | 4 | 4 | 4 | 4 | 2 | 2 |
物理页2 |
|
| 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 7 | 1 |
物理页3 |
|
|
| 6 | 6 | 6 | 6 | 2 | 2 | 2 | 2 | 5 | 5 | 5 | 5 | 5 |
缺页否 | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y | Y | N | Y | Y |
缺页次数为14,缺页率为14/16
FIFO算法的情况如下表:
页面走向 | 1 | 2 | 3 | 6 | 4 | 7 | 3 | 2 | 1 | 4 | 7 | 5 | 6 | 5 | 2 | 1 |
物理页0 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 5 |
物理页1 |
| 2 | 2 | 2 | 2 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 6 | 6 | 6 | 6 |
物理页2 |
|
| 3 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
物理页3 |
|
|
| 6 | 6 | 6 | 6 | 6 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
缺页否 | Y | Y | Y | Y | Y | Y | N | Y | Y | N | N | Y | Y | N | N | N |
缺页次数为10,缺页率为10/16
二、在一个请求分页系统中,假如一个作业的页面走向为:4,3,2,1,4,3,5,4,3,2,1,5。当分配给该作业的物理块数M为4时,分别采用最佳置换算法、LRU和FIFO页面置换算法,计算访问过程中所发生的缺页次数和缺页率。
答:最佳置换算法的情况如下表:
页面走向 | 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
物理页0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 1 | 1 |
物理页1 |
| 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
物理页2 |
|
| 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
物理页3 |
|
|
| 1 | 1 | 1 | 5 | 5 | 5 | 5 | 5 | 5 |
缺页否 | Y | Y | Y | Y | N | N | Y | N | N | N | Y | N |
缺页次数为6,缺页率为6/12
LRU置换算法的情况如下表:
页面走向 | 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
物理页0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 5 |
物理页1 |
| 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
物理页2 |
|
| 2 | 2 | 2 | 2 | 5 | 5 | 5 | 5 | 1 | 1 |
物理页3 |
|
|
| 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 |
缺页否 | Y | Y | Y | Y | N | N | Y | N | N | Y | Y | Y |
缺页次数为8,缺页率为8/12
FIFO算法的情况如下表:
页面走向 | 4 | 3 | 2 | 1 | 4 | 3 | 5 | 4 | 3 | 2 | 1 | 5 |
物理页0 | 4 | 4 | 4 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 1 | 1 |
物理页1 |
| 3 | 3 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | 5 |
物理页2 |
|
| 2 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 |
物理页3 |
|
|
| 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 |
缺页否 | Y | Y | Y | Y | N | N | Y | Y | Y | Y | Y | Y |
缺页次数为10,缺页率为10/12