program for LRU AGORITHM using c-languge


LRU ALGORITHM
#include<stdio.h>
int f[30],fs;
int cnt[30];
int flag,ps[30];
main()
{
int p,i,pos=0,j,k,max,s,pf=0;
float pfr;
void increment();
int check();
clrscr();
printf("enter no of pages:");
scanf("%d",&p);
printf("enter the pages:");
for(i=0;i<p;i++)
scanf("%d",&ps[i]);
printf("enter the frame size:");
scanf("%d",&fs);
for(k=0;k<fs;k++)
 f[k]=-999;
 for(i=0,j=0;i<p;i++)
 {
 flag=0;
 if(f[i]==-999)
 {
 check(j,ps[j]);
 if(flag==0)
 {
 f[j]=ps[i];
 pf++;
 for(k=0;k<=j;k++)
 cnt[k]+=1;
 j++;
 }
 }
 else
 {
 check(fs,ps[i]);
 if(flag==0)
 {
 max=cnt[0],pos=0;
 for(k=1;k<fs;k++)
 if(max<cnt[k])
 max=cnt[k],pos=k;
 f[pos]=ps[i],pf++;
 increment(ps[i]);
 }
 }
 for(k=0;k<fs;k++)
 printf("%4d",f[k]);
 printf("\n");
 }
 pfr=(float)pf/p;
 printf("total no of page faults:%d\n",pf);
 printf("page fault rare:%f",pfr);
 getch();
 }
 void increment(int ele)
 {
 int k;
 for(k=0;k<fs;k++)
 {
 if(f[k]==ele)
 cnt[k]=1;
 else
 cnt[k]+=1;
 }
 }
 check(int pos,int ele)
 {
 int k,s;
 for(k=0;k<fs;k++)
 if(f[k]==ele)
 {
 cnt[k]=1;
 for(s=0;s<pos;s++)
 if(s!=k)
 cnt[s]+=1;
 flag=1;
 }
 }

No comments:

Post a Comment