操作系统页面置换算法实现

 

1.LRU算法:

算法原理不再论述,此处只写实现。

#include 
#include
#include 
#include 
#include 
#include 
using namespace std;
#define PAGESIZE 3  //内存中的最大页数
int find(const vector& vec,int x){
    if(vec.size()==0) return -1; //无内容
    else {
        for (int i = 0; i < vec.size(); i++)
        {
            if (x == vec.at(i))
            {
                return i;
            }

        }
    }
    return -1;//找不到
}

int LRU(int N){             //以离栈顶距离判断时间长短
    vector memory; //内存
    vector pages;    //页块
    int p;
    int x;
    int lackpage = 0;
    for(int i = 0;i < N;i++){
        cout << "请输入页号" <> p;
        if(find(memory,p)!= -1 ){   //找到即该页存在
            x = find(memory,p);     //返回该页索引
            memory.erase(memory.begin()+x); //把其在栈中删除
            memory.push_back(p);            //将其压入栈顶
        }
        else{   // 该页不存在
            lackpage ++;                //  缺页数加1
            cout<<"第"<> N;
    int missPage = LRU(N);

    cout << missPage << endl;
    return 0;
}

2.FIFO算法

同为C实现

// FIFO
int FIFO(int N){
	 vector memory; //内存堆栈
    int p;
    int x;
    int lackpage = 0;
    for(int i = 0;i < N;i++){
        cout << "请输入页号" <> p;
		x = find(memory,p);//在内存中找到该页	
		if(x == -1)										//找不到该页,开始置换
		{		
			lackpage++;
			 cout<<"第"<

 

你可能感兴趣的:(操作系统)