在一个请求分页系统中,设页面大小占100个单元,假如系统分配给一个作业的物理块数为3,试求出用FIFO,LRU,OPT三种算法在程序访问过程中所发生的缺页次数及缺页率,每次中断时都需要打印出来或者标示出来。(假设最初页面都在外存)
假定此作业的访问地址序列为202,313,252,111,546,217,444,544,365,223,398,111。
输入任意的访问序列,也必须正确显示。
代码
#include<iostream>
using namespace std;
int a[12] = {
202,313,252,111,546,217,444,544,365,223,398,111};
int *b = new int[12];
void FIFO()
{
int queyeshu=0;
int *c = new int[3];
for (int i = 0; i < 3; i++)
{
c[i] = -1;
}
for (int i = 0; i < 12; i++)
{
int o = 0;
int count = 0;
for (; o < 3; o++)
{
if (c[o] < 0)
break;
count++;
}
if (count == 3)
{
queyeshu++;
cout << "发生缺页中断,第"<<c[0]<<"号页面被换出"<<a[i]<<"被换入。" << endl;
c[0] = c[1];
c[1] = c[2];
c[2] = b[i];
}
else
{
int q = 0;
for (; q < o; q++)
{
if (c[q] == b[i])
{
cout << "已有,不用换入" << endl;
break;
}
}