📄 fifo.cpp
字号:
#include<iostream>
using namespace std;
void main()
{
char a;
do
{
int pagenum=0; ///内存的物理块数
int total=0; ///要访问的叶面总数
int lacknumber=0; ///缺页的总数
int array[50];
for(int x=0;x<50;x++)
{
array[x]=-1; //-1代表没有内容
}
int seque[50]={0};
cout<<"请输入系统为进程在内存中分配的物理块数:";
cin>>pagenum;
cout<<"请输入访问页面的顺序(输入-1结束):";
for(int i=0;i<50;i++)
{
int num;
cin>>num;
if(num!=-1)
{
seque[i]=num;
total++;
}
else
{
seque[i]=num;break;
}
}
cout<<"总的页面数为"<<total<<endl; ///总的页面数
if(total<pagenum)
{
for(i=0;i<total;i++)
{
array[i]=seque[i];
cout<<"进程访问页面"<<seque[i]<<endl;
cout<<"缺页 "<<"页面"<<seque[i]<<"进入内存 "<<"此时页面内容为";
for(int j=0;j<total;j++)
{
cout<<array[j]<<" ";
}
cout<<"(-1代表没有内容)"<<endl;
cout<<endl;
lacknumber++;
}
}
else
{
for(int i=0;i<pagenum;i++)
{
array[i]=seque[i];
cout<<"进程访问页面"<<seque[i]<<endl;
cout<<"缺页 "<<"页面"<<seque[i]<<"进入内存 "<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<"(-1代表没有内容)"<<endl;
cout<<endl;
}
int k=0;
for(i=pagenum;i<total;i++)
{
int flag=0;
for(int n=0;n<pagenum;n++)
{
if(array[n]==seque[i])
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<"进程访问页面"<<seque[i]<<endl;
cout<<"不产生缺页中断 此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
cout<<endl;
}
else
{
int tem=array[k];
array[k]=seque[i];
cout<<"进程访问页面"<<seque[i]<<endl;
cout<<"缺页 产生缺页中断 "<<"页面"<<tem<<"被替换"<<endl;
cout<<"此时页面内容为";
for(int j=0;j<pagenum;j++)
{
cout<<array[j]<<" ";
}
k++;
if(k==pagenum)
{
k=0;
}
lacknumber++;
cout<<endl;
}
cout<<endl;
}
lacknumber=pagenum+lacknumber;
}
cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
cout<<"按任意键继续..."<<endl;
}
while(cin>>a);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -