📄 fifo.cpp
字号:
#include<iostream.h>
#include<stdio.h>
void read(int a[50],int& n) //读入页面走向
{
cout<<"输入进程的页面走向,以0结束!\n";
n=0;
do
{
cin>>a[n];
}while(a[n++]!=0&&n<50);
--n;
cout<<"页面走向为:\n";
cout<<"----------------------\n";
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<'\n';
cout<<"----------------------\n";
}
void main()
{
cout<<"***** 信科 060215 邵进 ******\n";
cout<<"*****此程序使用的是FIFO算法******\n\n\n";
cout<<"输入分配的内存块数:";
int k;
cin>>k;
int q=0; //记录缺页次数
int x[50]={0},y; //记录内存块中页面停留的时间
int i,a[50]; //记录页面走向
int p[50]={0}; //记录内存块中的页面
read(a,i);
for(int j=0;j<i;j++)
{
int count1=0;
for(int m=0;m<k;m++)
{
if(a[j]!=p[m]) count1++;
}
if(count1==k)
{
for(int t=0;t<k;t++)
{
int count2=0;
for(int r=0;r<k;r++)
{
if(x[t]>=x[r])count2++;
}
if(count2==k){
y=t;break;
}
}
cout<<"第"<<j+1<<"次 <"<<a[j]<<"页> 执行时"<<"\t"<<"缺页"<<" ";
if(p[y]==0)cout<<"内存块"<<y+1<<"中无页面"<<"直接将 <"<<a[j]<<"页> 调入内存块"<<y+1;
else cout<<"调出内存块"<<y+1<<"中的 <"<<p[y]<<"> 页,将 <"<<a[j]<<"页> 调入内存块"<<y+1;
p[y]=a[j]; //置换进内存块
x[y]=0;
for(t=0;t<k;t++)
{
x[t]++;
}
x[y]--;
q++; //缺页次数记录
}
else cout<<"第"<<j+1<<"次 <"<<a[j]<<"页> 执行时"<<"\t"
<<"命中"<<'\t'<<"执行下个页面!";
cout<<endl;
}
cout<<"缺页次数:"<<q<<endl;
cout<<"缺页率 :"<<q<<'/'<<i<<"="<<(float)q/(float)i<<endl;
cout<<endl<<"------------------输入enter结束--------------"<<endl;
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -