#include<stdio.h>
int findLRU(int time[],int n)
{
int i,min=time[0],pos=0;
for(i=1;i<n;i++)
{
if(time[i]<min)
{
min=time[i];
pos=i;
}
}
return pos;
}
int main()
{
int f=3,r=20;
int counter=0,flag1,flag2,i,j,pos,fault=0;
printf("Enter frame size : ");
scanf("%d",&f);
printf("Enter reference string length : ");
scanf("%d",&r);
int fr[f],time[f],ref_str[r];
puts("Enter reference string: ");
for(i=0;i<r;i++)
scanf("%d",&ref_str[i]);
printf("\n\n");
for(i=0;i<f;i++)
fr[i]=-1;
for(i=0;i<r;i++)
{
flag1=flag2=0;
for(j=0;j<f;j++)
{
if(fr[j]==ref_str[i])
{
counter++;
time[j]=counter;
flag1=flag2=1;
printf("page %d hit\n",ref_str[i]);
break;
}
}
if(flag1==0)
{
for(j=0;j<f;j++)
{
if(fr[j]==-1)
{
counter++;
fault++;
fr[j]=ref_str[i];
time[j]=counter;
flag2=1;
printf("page %d fault\n",ref_str[i]);
break;
}
}
}
if(flag2==0)
{
pos=findLRU(time,f);
counter++;
fault++;
fr[pos]=ref_str[i];
time[pos]=counter;
printf("page %d fault\n",ref_str[i]);
}
printf("Current Frame Status\n");
for(j = 0; j < f; ++j)
printf("%d ", fr[j]);
printf("\n\n");
}
printf("Total Page fault = %d", fault);
return 0;
}
Comments
Post a Comment