Simulate the following page replacement algorithms Optimal

#include<stdio.h>
#include<math.h>
int findoptimal();
int i,j,pf=0,nf,r,ffree=0,found,np,max,u,v,ref[40],frame[10],avail,ind[10],k;
 
void main()
{
printf("enter the number of pages : ");
scanf("%d",&np);
printf("enter the page numbers : ");
for(i=0;i<np;i++)
scanf("%d",&ref[i]);
printf("enter the number of frames : ");
scanf("%d",&nf);
printf("ref. string\tpage frames");
for(i=0;i<nf;i++)
{
     frame[i]=-1;
}
for(i=0;i<np;i++)
{
       printf("\n");
       printf("%d\t\t",ref[i]);
       avail=0;
       for(j=0;j<nf;j++)
{
if(frame[j]==ref[i])
{
avail=1;
for(j=0;j<nf;j++)
printf("%d\t",frame[j]);
break;
}
}
if(avail==0)
{
if(ffree<nf)
{
k=ffree;
ffree++;
}
else
k=findoptimal(i+1);
frame[k]=ref[i];
pf++;
for(j=0;j<nf;j++)
printf("%d\t",frame[j]);
}
}
printf("\ntotal page faults : %d\n",pf);
 
}
 
int findoptimal(int p)
{
for(u=0;u<nf;u++)
{
found=0;
for(v=p;v<np;v++)
{
       if(frame[u]==ref[v])
       {
ind[u]=v;
found=1;
break;
       }
}
if(found==0)
return u;
}
max=ind[0];
for(u=1;u<nf;u++)
{       if(ind[u]>max)
{
max=ind[u];
r=u;
}
}
return r;
}
#include<conio.h>

Comments

Popular posts from this blog

CLOOK DISK SCHEDULING

LOOK Disk Scheduling