📄 cunchu1.cpp
字号:
#include <stdio.h>
#include<math.h>
#define maxsize 32
#include <stdlib.h>
#define vpf 200
void FIFO(int a[]);
int count[maxsize];
int a[vpf];
void main() // 定义主函数
{for(int i=0;i<200;i++) // 用随机数产生页地址流
a[i]=rand()%32;
FIFO(a);
}
void FIFO(int a[]) // FIFO算法
{ for(int n=4;n<33;n++) //不同的页面数计算命中率
{ int num;
int max;
int maxpage=0;
int dis=0;
int i=0;
int k=0;
int sum=n;
int b[maxsize];
for (k=0;k<n;k++) // 页面数组,计数数组初始化
{ b[k]=-1;
count[k]=0;}
for (i=0;i<vpf;i++)
{ num=0;
for (k=0;k<n;k++) // 测试是否命中
{ if(a[i]==b[k])
num++;
}
if(num==0) //未命中
{ dis++;
for(k=0;k<n;k++) // 所有页面计数器加一
count[k]++;
if(sum==0) //没空白页面时
{ max=0;
for(k=0;k<n;k++)
{ if(max<count[k]) // 找出计数器值最大的替换
{max=count[k];
maxpage=k;
}
}
b[maxpage]=a[i];
count[maxpage]=0; //被替换页面计数器清零
}
else {b[n-sum]=a[i];
count[n-sum]=0; //有空白页面时,将所缺页放入空白页面,
sum--; // 并将该页面计数器清零
}}}
printf("%d",n);
printf(" page frames FIFO:%3d",dis);
printf(" FIFO:%6.4f\n",1-(float)dis/32);
}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -