📄 fcfo.cpp
字号:
#include<iostream.h>
void fifo(int b[],int m,int n)
{
int i,j,k,input=0,flag=0;
int *a=new int[100];
bool justment;
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
{
if(a[i]!=b[j])
{
justment=1;
}
else
{
justment=0;
cout<<"当第"<<j<<"个页面到达的时候没有置换发生!"<<endl;
break;
}
}
if(justment==1)
{
cout<<"当第"<<j<<"个页面到达的时候";
if(a[flag%n]<0) cout<<"没有置换发生!"<<endl;
else cout<<"即将被置换的页面为:"<<a[flag%n]<<endl;
a[flag%n]=b[j];
flag++;
input++;
justment=0;
}
int temp=flag;
if(flag>n)
{
flag=n;
}
cout<<"当第"<<j<<"个页面处理完后物理块里面的页面为:"<<endl;
for(k=0;k<flag;k++)
{
cout<<a[k]<<" ";
}
cout<<"\n";
flag=temp;
}
cout<<"使用FIFO算法的缺页次数为:"<<input<<"\n"<<"缺页率为:"<<(float)input/m<<endl;
}
void lru(int b[],int m,int n)
{
int i,j,k,big,input=0,flag=0;
bool justment;
int *a=new int[100];
int temp=n;
int *t=new int[100];
for(i=0;i<n;i++)
{
t[i]=temp;
temp--;
}
for(j=0;j<m;j++)
{
for(i=0;i<n;i++)
{
if(b[j]!=a[i])
{
justment=1;
}
else
{
t[i]=0;
justment=0;
cout<<"当第"<<j<<"个页面到达的时候没有置换发生!"<<endl;
break;
}
}
if(justment==1)
{
big=0;
for(i=0;i<n;i++)
{
if(t[i]>t[big]) big=i;
}
cout<<"当第"<<j<<"个页面到达的时候";
if(a[big]<0) cout<<"没有置换发生!"<<endl;
else cout<<"即将被置换的页面为:"<<a[big]<<endl;
a[big]=b[j];
t[big]=0;
input++;
justment=0;
flag++;
for(i=0;i<n;i++)
{
t[i]=t[i]+1;
}
}
if(flag>n)
{
flag=n;
}
cout<<"当第"<<j<<"个页面处理完后物理块里面的页面为:"<<endl;
for(k=0;k<flag;k++)
{
cout<<a[k]<<" ";
}
cout<<"\n";
}
cout<<"使用LRU算法的缺页次数为:"<<input<<"\n"<<"缺页率为:"<<(float)input/m<<endl;
}
void INSTRUCTION()
{
cout<<endl<<endl;
cout<<"\t选择一种算法:"<<endl<<endl;
cout<<"\t 按“1”使用FIFO算法"<<endl<<endl<<endl;
cout<<"\t 按“2”使用LRU算法"<<endl<<endl<<endl;
}
void main()
{
cout<<"本程序演示的是页面置换的FIFO和LRU算法!"<<endl;
cout<<"请输入物理块个数:";
int n;
cin>>n;
cout<<"请输入页面序列个数:";
int m,*temp;
cin>>m;
const int MaxSize=100;
temp=new int[MaxSize];
for(int i=0;i<m;i++)
{
cout<<"请输入的第"<<i<<"个页面:";
int num;
cin>>num;
temp[i]=num;
}
INSTRUCTION();
char choose;
cin>>choose;
switch(choose)
{
case '1':
{
fifo(temp,m,n);
break;
}
case '2':
{
lru(temp,m,n);
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -