页面置换算法

在此展示3种算法:FIFO、OPT、LRU 算法。(点击进入百度百科介绍)
1、任意给出一组页面访问顺序(如页面走向是1、2、5、7、5、7、1、4、3、5、6、4、3、2、1、5、2)。
2、分配给该作业一定的物理块(如3块、4块等)。
3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。
4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。

算法大致流程:

实验代码:

#include 
#define maxPage 100
using namespace std;
int phyBlockNum;
int show(int * block,int ispageL) {
    string str[2]= {" 否"," 是"};
    for(int i=0; i=0; m--) {
                if(page[m]==block[k]) {
                    ntime[k]=m;
                    break;
                } else if(m==0) ntime[k]=-1;
            }
        }
        for(int j=1; jntime[j]?j:min;
        cout<>phyBlockNum;
    Block=new int(phyBlockNum);
    cout<<"输入一组页面访问顺序,输入-1结束:";
    for(int i=0; i>pageQue[i];
        if(pageQue[i]==-1) break;
    }
    cout<<"\n-----------------OPT算法-----------------\n";
    OPT(Block,pageQue);
    cout<<"\n-----------------FIFO算法----------------\n";
    FIFO(Block,pageQue);
    cout<<"\n-----------------LRU算法-----------------\n";
    LRU(Block,pageQue);
    return 0;
}

运行结果:

输入分配给改作业的物理块数:4
输入一组页面访问顺序,输入-1结束:1 2 5 7 5 7 1 4 3 5 6 4 3 2 1 5 2 -1

-----------------OPT算法-----------------
页号    页块0   页块1   页块2   页块3   是否缺页
1       1                                是
2       1       2                        是
5       1       2       5                是
7       1       2       5       7        是
5       1       2       5       7        否
7       1       2       5       7        否
1       1       2       5       7        否
4       1       2       5       4        是
3       3       2       5       4        是
5       3       2       5       4        否
6       3       2       6       4        是
4       3       2       6       4        否
3       3       2       6       4        否
2       3       2       6       4        否
1       1       2       6       4        是
5       5       2       6       4        是
2       5       2       6       4        否
OPT算法的缺页率为0.529412

-----------------FIFO算法----------------
页号    页块0   页块1   页块2   页块3   是否缺页
1       1                                是
2       1       2                        是
5       1       2       5                是
7       1       2       5       7        是
5       1       2       5       7        否
7       1       2       5       7        否
1       1       2       5       7        否
4       4       2       5       7        是
3       4       3       5       7        是
5       4       3       5       7        否
6       4       3       6       7        是
4       4       3       6       7        否
3       4       3       6       7        否
2       4       3       6       2        是
1       1       3       6       2        是
5       1       5       6       2        是
2       1       5       6       2        否
FIFO算法的缺页率为0.588235

-----------------LRU算法-----------------
页号    页块0   页块1   页块2   页块3   是否缺页
1       1                                是
2       1       2                        是
5       1       2       5                是
7       1       2       5       7        是
5       1       2       5       7        否
7       1       2       5       7        否
1       1       2       5       7        否
4       1       4       5       7        是
3       1       4       3       7        是
5       1       4       3       5        是
6       6       4       3       5        是
4       6       4       3       5        否
3       6       4       3       5        否
2       6       4       3       2        是
1       1       4       3       2        是
5       1       5       3       2        是
2       1       5       3       2        否
LRU算法的缺页率为0.647059

你可能感兴趣的:(页面置换算法)