⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 操作系统 页面置换算法 可以参考 利用C语言实现的算法
💻 CPP
字号:
#include <iostream>
#include <string.h>
using namespace std;
//========================

//-------------------------------
int **martrix;
 int i,j;
void setm(int m,int n)
{for(i=0;i<n;i++)
{martrix[m][i]=1;
 martrix[i][m]=0;
}
}
//-----------------------------------
char * current;
void print(int n)
{ int p,q;
for(p=0;p<n;p++)
{ for(q=0;q<n;q++)
   {cout<<martrix[p][q]<<" ";}
   cout<<"**"<<current[p];
   cout<<"\n";
}
}
//-----------------------------------
int mini(int *b)
{int i=0;
 int n,m,flag;
 n=0;
 while(b[i]>=0&&b[i]<=9){n++;i++;}
m=b[0];flag=0;
 for(j=1;j<n;j++)
 { if(m>b[j]) {m=b[j];flag=j;}
 }
return flag;
}
//-------------------------------------
void main()
{
 int n;
 char sequence[255];
 cout<<"请输入分配物理块数:";
 cin>>n;
 cout<<"请输入页面走向序列:";
 cin>>sequence;
 cout<<"*****LRU算法*****"<<endl;

 martrix=new int * [n];
 for( i=0;i<n;i++)
  martrix[i]=new int[n];

 current=new char [n];
 for(i=0;i<n;i++)
  current[i]=' ';
 
 for(i=0;i<n;i++)  //模拟寄存器
  for(j=0;j<n;j++)
   martrix[i][j]=0;

  int k;
  int len=strlen(sequence);
  int flag;
  int f;
  int *total;
  int g;
  int count=0;
  char c;
  total=new int[n];
  for(i=0;i<n;i++)
   total[i]=0;

  for(k=1;k<=len;k++)
{  cout<<endl; 
 cout<<sequence[k-1]<<"要求进入"<<endl;
 if(k<=n) {current[k-1]=sequence[k-1];setm(k-1,n);print(n);cout<<"缺页"<<endl;count++;}
else 
{     for(i=0;i<n;i++)
       {      if(current[i]==sequence[k-1]) {flag=i; break;}
       }
    if(i==n) { 
             for(f=0;f<n;f++)
                    { for(g=0;g<n;g++)
                           {total[f]+=martrix[f][g];}
            } 
        c=current[mini(total)];
        current[mini(total)]=sequence[k-1];
        setm(mini(total),n);print(n);cout<<"缺页,置换前一次"<<c<<"的那行"<<endl;
        cout<<endl;
        count++;
               }            
else
{setm(flag,n);print(n);cout<<endl;}
}
for(i=0;i<n;i++)
                  total[i]=0;

}
cout<<"///////////////////////////////////"<<endl;
cout<<"总共有"<<count<<"次缺页"<<endl;

cout<<"缺页率:"<<count<<"/"<<len<<endl;
cout<<"演示完毕!"<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -