• C++编写的页面淘汰算法LRU的代码


    如下代码是关于C++编写的页面淘汰算法LRU的代码,应该对码农们有较大用。

    #include<iostream>
    #include<iomanip>
    using namespace std;
    void discard(int Array[][19],int pagenumber[],int page[],int max);
    int LRU(int pagenumber[],int order);
    int main()
    {
    int Array[4][19];
    int page[19] = {7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0};
    int pagenumber[3] = {-1,-1,-1};
    cout<<"页面访问序列如下:"<<endl;
    for(int i = 0;i < 19;i++){
    Array[3][i] = -1;
    cout<<setw(3)<<page[i];
    }
    cout<<endl;
    cout<<endl;
    cout<<"输出结果如下表(-2)代表没有缺页中断!"<<endl;
    int LackPageNumber = 0;
    for(int j = 0; j < 4;j++){
    for(int k = 0; k < 19;k++){
    cout<<setw(3)<<Array[j][k];
    if(j == 3){
    if(Array[j][k] != -2)
    LackPageNumber++;
    }
    }
    cout<<endl;
    }
    cout<<"缺页次数"<<LackPageNumber<<endl;
    return 0;
    }
    void discard(int Array[][19],int pagenumber[],int page[],int max)

    {
    for(int i = 0;i < max;i++){
    if(LRU(pagenumber,page[i])> -1){
    for(int tt = LRU(pagenumber,page[i]);tt>0;tt--){
    pagenumber[tt] = pagenumber[tt-1];
    }
    pagenumber[0] = page[i];
    Array[0][i] = pagenumber[0];
    Array[1][i] = pagenumber[1];
    Array[2][i] = pagenumber[2];
    }
    else{
    Array[0][i] = page[i];
    Array[1][i] = pagenumber[0];
    Array[2][i] = pagenumber[1];
    Array[3][i] = pagenumber[2];
    for(int ii = 2;ii >0;ii--){
    pagenumber[ii] = pagenumber[ii-1];
    }
    pagenumber[0] = page[i];
    }
    }
    }
    int LRU(int pagenumber[],int order)
    if(pagenumber[0] == order)
    return 0;
    else if(pagenumber[1] == order)
    return 1;
    else if(pagenumber[2] == order)
    return 2;
    else
    return -1;
    }




  • 相关阅读:
    HashMap数据结构分析(jdk8)
    ConcurrentHashMap数据结构(jdk8)
    TOJ1373_多项式规律
    Windows程序基础——Windows应用程序的基本概念
    Why to learn MFC?
    TOJ1062
    TOJ1369
    TOJ1003
    vue 生命周期~~
    如何跨域访问的两种方法~
  • 原文地址:https://www.cnblogs.com/tudou990/p/13093052.html
Copyright © 2020-2023  润新知