• 大小: 378KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: 操作系统  

资源简介

操作系统实验五 虚拟内存页面置换算法(内含源代码和详细实验报告),详细介绍:http://blog.csdn.net/xunciy/article/details/79239096

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;

#define MaxNumber 100
int MinBlockNumPageNumLackNumLackPageNum;  //物理块数,页面个数,缺页次数,缺页数
double  LackPageRate;   //缺页率
int PageOrder[MaxNumber];  //页面序列
int PageDisCount[MaxNumber]; //当前内存距离下一次出现的距离
int LRUtime[MaxNumber];   //存储队列中各个页面最近使用情况
int VirtualQueue[MaxNumber];   //虚拟队列

void Enter();  //输入物理块数、页面号顺序
void initial();  //模拟物理块顺序被填满,初始化物理块
void FIFO();    //先进先出FIFO
void OPI();     //最佳置换OPI
void LRU();    //最近最久未使用LRU
void display(); //显示执行结果

int main(){
    Enter();
//    initial();
    FIFO();
    OPI();
    LRU();
    return 0;
}

void Enter(){
    int i;
    cout<<“Enter MinBlockNum: “;
    cin>>MinBlockNum;//输入最小物理块数
    cout<<“Enter PageNum: “;
    cin>>PageNum;//输入页面个数
    //输入页面序列
    cout<<“Enter PageOrder: “;
    for (i=0;i        cin>>PageOrder[i];
    }
}

void initial(){
    int ijk;
    bool isInQueue;
    LackPageNum = MinBlockNum;//缺页数=物理块数+缺页次数
    LackPageRate = 0.0;

    for(i = 0;i        PageDisCount[i] = 0;  //初始化距离
        VirtualQueue[i] = -1;  //初始化队列
    }

    for (i = 0;i        isInQueue = false;
        LRUtime[i] = 0;
        for (j = 0;j            if (VirtualQueue[j] == PageOrder[i])//如果页面在队列中
                isInQueue = true;
        }
        if (!isInQueue){  //当有新的进程进入到队列时,便计算其对应的距离
            VirtualQueue[i] = PageOrder[i];//小于物理块数时,页面顺序进入队列
            for (k = 0;k                LRUtime[k]++;   //之前的页面对应的时间+1
            }
            display();
        }
        else
            LRUtime[i] = 0;  //重新更新为0,表示最近刚刚使用
    }
}

void display(){
    int i;
    for (i = 0;i=0;i++)
        cout<    cout<}

void FIFO(){
    cout<    int ik;
    cout<<“FIFO“<    initial();
    bool isInQueue;
    int point = 0;  //指向队列中最老的
    //从物理块数+1的地方开始继续分配内存
    for (i = MinBlockNum;i        isInQueue = false;
        for (k = 0;k            if (VirtualQueue[k] == PageOrder[i]){   //页面在队列中
                isInQueue = true;
            }
        }

        if (!isInQueue){   //如果页面不在队列中,则进行相应的处理
            LackPageNum++;  //缺页数加1
            VirtualQueue[point] = PageOrder[i];//页面替换队列中最老的
            display();//输出物理块状态
            point++;//后移
            if (point == MinBlockNum)//当指向队尾时后,重新指向队首
                point = 0;
        }
        else
            cout<    }

    LackPageRate = (LackPageNum * 1.0)/PageNum;
    cout<<“LackPageNum: “<    cout<<“LackPageRate: “<
}

void OPI(){
    cout<    int ikmst;
    cout<<“OPI“<    initial();

    bool isInQueue;
    int distance;   //表示队列每个值距离下一次访问的距离
    int point;  //指向最长时间未被访问的下标

    for(i = MinBlockNum;i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-02-02 14:31  实验五  虚拟内存页面置换算法\
     目录           0  2018-02-02 14:27  实验五  虚拟内存页面置换算法\5.FIFO_OPI_LRU\
     文件        6019  2017-12-28 22:11  实验五  虚拟内存页面置换算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.cpp
     文件     1050111  2017-12-20 19:54  实验五  虚拟内存页面置换算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.exe
     文件        5823  2017-12-20 19:54  实验五  虚拟内存页面置换算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.o
     文件      100931  2017-12-28 22:41  实验五  虚拟内存页面置换算法\实验五  虚拟内存页面置换算法.docx

评论

共有 条评论