#include"stdio.h"
#include"iostream.h"
void main()
{
int a[3][2]={{-1,0},{-1,0},{-1,0}};
int p[10];
int c;
int d=0;
int i=0;
int j;
int temp;
int flat=1;
int queye=0;
int count1,count2;
count1=0;
cout<<"请输入访问数!"<<endl;
for(int t=0;t<10;t++)
{
cin>>c;
p[t]=c;
}
for(t=0;t<10;t++)
{
c=p[t];
count2=0;
cout<<endl;
d++;
i=0;
flat=1;
if(d<4)
{
while(flat)
{
if(i==3){
flat=0;}
else{
if(a[i][0]==c)
{
cout<<endl;
cout<<"已命中!"<<endl;
cout<<endl;
d--;
for(j=0;j<3;j++)
{if(a[j][1]!=0) a[j][1]++;}
count2++;
flat=0;
}
else i++;
}
}
if(count2==0)
{
i=0;
flat=1;
while(flat)
{
if(a[i][0]==-1)
{
a[i][0]=c;
cout<<endl;
cout<<"缺页!"<<endl;
cout<<endl;
queye++;
for(j=0;j<3;j++)
{if(a[j][1]!=0) a[j][1]++;}
a[i][1]=1;
flat=0;
}
else i++;
}
}
}
else
{
count2=0;
flat=1;
i=0;
while(flat)
{
if(a[i][0]==c)
{
cout<<endl;
cout<<"已命中!"<<endl;
cout<<endl;
for(j=0;j<3;j++)
{a[j][1]++;}
count2++;
flat=0;
}
else i++;
if(i==2){flat=0;}
}
if(count2==0)
{
j=0;
temp=j;
for(j=0;j<2;j++)
{
if(a[temp][1]<a[j+1][1])
{
temp=j+1;
}
}
for(j=0;j<3;j++)
{a[j][1]++;}
a[temp][0]=c;
a[temp][1]=1;
cout<<endl;
cout<<"缺页!"<<endl;
cout<<endl;
queye++;
}
}
cout<<"现存状态表!"<<endl;
for(j=0;j<3;j++)
{
cout<<a[j][0]<<endl;
}
}
cout<<"本次操作缺页次数为"<<queye<<"次!"<<endl;
}
评论0