网上非常多介绍3种页面置换算法的样例和过程是不对的, 本文依据《操作系统概念》第七版对三种算法做介绍,并给出正确的样例以验证算法。
一、FIFO先进先出页面置换算法,创建一个FIFO队列来管理内存中的全部页。
在计算缺页率的时候最好把每一次页面调度的队列写出来,这样不easy出错。
以下举例说明:
如果页帧为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 |