Page Replacement Algorithms
//Page Replacement Algorithms =LRU Page Replacement & Optimal Page Replacement
#include<stdio.h>
int rs[50],n,i,j,no_f,frame[10];
void get()
{
printf("\nEnter the length of string=");
scanf("%d",&n);
printf("\nEnter refrence String=");
for(i=0;i<n;i++)
scanf("%d",&rs[i]);
printf("\nEnter no of frame=");
scanf("%d",&no_f);
}
void lru()
{
int hit=0,fault=0;
for(i=0;i<no_f;i++)
frame[i]=-1;
printf("\n*****Least Recently Used*******");
printf("\nRefernce String=");
for(i=0;i<n;i++)
printf(" %d",rs[i]);
for(i=0;i<n;i++)
{
for(j=0;j<no_f;j++)
{
if(rs[i]==frame[j])
{
hit++;
printf("\nPage Hit");
break;
}
}
if(j==no_f)
{
fault++;
for(j=0;j<no_f;j++)
{
if(frame[j]==-1)
{
frame[j]=rs[i];
break;
}
}
if(j==no_f)
{
int used[10]={0},least;
for(int k=0;k<no_f;k++)
for(j=i-1;j>0;j--)
{
if(rs[j]==frame[k])
break;
used[k]++;
}
int max=0;
for(j=0;j<no_f;j++)
if(max<used[j])
{
max=used[j];
least=j;
}
frame[least]=rs[i];
}
printf("\nPage Fault Frame=");
for(j=0;j<no_f;j++)
printf(" %d",frame[j]);
}
}
printf("\nHit=%d Fault=%d",hit,fault);
}
void opt()
{
int hit=0,fault=0;
for(i=0;i<no_f;i++)
frame[i]=-1;
printf("\n*******Optimal Page Replacement*******");
printf("\nRefernce String=");
for(i=0;i<n;i++)
printf(" %d",rs[i]);
for(i=0;i<n;i++)
{
for(j=0;j<no_f;j++)
{
if(rs[i]==frame[j])
{
hit++;
break;
}
}
if(j==no_f)
{
fault++;
for(j=0;j<no_f;j++)
{
if(frame[j]==-1)
{
frame[j]=rs[i];
break;
}
}
if(j==no_f)
{
int used[10]={0},least;
for(int k=0;k<no_f;k++)
for(j=i+1;j<n;j++)
{
if(rs[j]==frame[k])
break;
used[k]++;
}
int max=0;
for(j=0;j<no_f;j++)
if(max<used[j])
{
max=used[j];
least=j;
}
frame[least]=rs[i];
}
printf("\nFrame=");
for(j=0;j<no_f;j++)
printf(" %d",frame[j]);
}
}
printf("\nHit=%d Fault=%d",hit,fault);
}
int main()
{
get();
lru();
opt();
return 0;
}
#include<stdio.h>
int rs[50],n,i,j,no_f,frame[10];
void get()
{
printf("\nEnter the length of string=");
scanf("%d",&n);
printf("\nEnter refrence String=");
for(i=0;i<n;i++)
scanf("%d",&rs[i]);
printf("\nEnter no of frame=");
scanf("%d",&no_f);
}
void lru()
{
int hit=0,fault=0;
for(i=0;i<no_f;i++)
frame[i]=-1;
printf("\n*****Least Recently Used*******");
printf("\nRefernce String=");
for(i=0;i<n;i++)
printf(" %d",rs[i]);
for(i=0;i<n;i++)
{
for(j=0;j<no_f;j++)
{
if(rs[i]==frame[j])
{
hit++;
printf("\nPage Hit");
break;
}
}
if(j==no_f)
{
fault++;
for(j=0;j<no_f;j++)
{
if(frame[j]==-1)
{
frame[j]=rs[i];
break;
}
}
if(j==no_f)
{
int used[10]={0},least;
for(int k=0;k<no_f;k++)
for(j=i-1;j>0;j--)
{
if(rs[j]==frame[k])
break;
used[k]++;
}
int max=0;
for(j=0;j<no_f;j++)
if(max<used[j])
{
max=used[j];
least=j;
}
frame[least]=rs[i];
}
printf("\nPage Fault Frame=");
for(j=0;j<no_f;j++)
printf(" %d",frame[j]);
}
}
printf("\nHit=%d Fault=%d",hit,fault);
}
void opt()
{
int hit=0,fault=0;
for(i=0;i<no_f;i++)
frame[i]=-1;
printf("\n*******Optimal Page Replacement*******");
printf("\nRefernce String=");
for(i=0;i<n;i++)
printf(" %d",rs[i]);
for(i=0;i<n;i++)
{
for(j=0;j<no_f;j++)
{
if(rs[i]==frame[j])
{
hit++;
break;
}
}
if(j==no_f)
{
fault++;
for(j=0;j<no_f;j++)
{
if(frame[j]==-1)
{
frame[j]=rs[i];
break;
}
}
if(j==no_f)
{
int used[10]={0},least;
for(int k=0;k<no_f;k++)
for(j=i+1;j<n;j++)
{
if(rs[j]==frame[k])
break;
used[k]++;
}
int max=0;
for(j=0;j<no_f;j++)
if(max<used[j])
{
max=used[j];
least=j;
}
frame[least]=rs[i];
}
printf("\nFrame=");
for(j=0;j<no_f;j++)
printf(" %d",frame[j]);
}
}
printf("\nHit=%d Fault=%d",hit,fault);
}
int main()
{
get();
lru();
opt();
return 0;
}
0 comments:
Post a Comment