/* Optimal */
#include<stdio.h>
int str[30],sl;
float placement(int);
main()
{
int nfs,fs[10];
int i,j,chk;
float pfr[10];
printf("enter the length of string: ");
scanf("%d",&sl);
printf("enter the string: ");
for(i=0;i<sl;i++)
scanf("%d",&str[i]);
printf("enter the no.of frames: ");
scanf("%d",&nfs);
printf("enter frame sizes: ");
for(i=0;i<nfs;i++)
scanf("%d",&fs[i]);
for(i=0;i<nfs;i++)
{
printf("\npage replacement for frame size: %d\n",fs[i]);
pfr[i]=placement(fs[i]);
}
for(i=0;i<nfs;i++)
for(j=0,chk=0;j<nfs;j++)
{
if(fs[i]>fs[j])
chk=1;
if(chk==1&&pfr[i]<pfr[j])
printf("\nBELADY'S ANOMALY occurred between frame sizes %d&%d\n",fs[i],fs[j]);
}
}
float placement(int fs)
{
int i,j,k,p;
int f[10],t[10];
int par[10][20];
int pf=0;
float pfr;
for(i=0;i<fs;i++)
f[i]=-1;
for(i=0;i<sl;i++)
{
p=-1;
for(j=0;j<fs;j++)
if(str[i]==f[j])
break;
if(j!=fs)
continue;
for(j=0;j<fs;j++)
if(f[j]==-1)
{
p=j;
break;
}
if(p==-1)
{
for(j=i+1;j<sl;j++)
{
for(k=0;k<fs;k++)
if(t[k]==0&&str[j]==f[k])
{
t[k]++;
break;
}
if(k!=fs);
{
for(k=0;k<fs;k++)
if(t[k]!=0)
t[k]++;
}
}
p=lesser(t,fs);
}
f[p]=str[i];
pf++;
for(j=0;j<fs;j++)
par[j][pf-1]=f[j];
}
for(i=0;i<fs;i++)
{
for(j=0;j<fs;j++)
printf("%5d",par[i][j]);
printf("\n");
}
pfr=((float)pf/sl)*100;
printf("no.of page faults=%d",pf);
printf("\npage fault rate=%0.3f\n",pfr);
return pfr;
}
int lesser(int t[10],int fs)
{
int i,j,c;
for(i=0;i<fs;i++)
{
c=0;
for(j=0;j<fs;j++)
if(t[i]<=t[j])
c++;
if(c==fs)
break;
}
return i;
}
I KRISHNAPRASAD PURSUING MY B.TECH IN C.R.REDDY COLLEGE OF ENGINEERING TRADE COMPUTER SCIENCES AND ENGINEERING. I'M HAPPY TO PRESENT ALL TYPE OF PROGRAMS. I HOPE U UTILISE THIS BLOG AND ENJOY YOUR PROGRAMMING. THESE PROGRAMS ARE BEST COMPILED IN TURBO C++ COMPILERS AND SUN JAVA COMPILERS
Thursday, November 25, 2010
OPTIMAL PAGE REPLACEMENT ALG
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment