LRU implementation in C

Program:
#include<stdio.h>

int main()
{
   int page_num,frame_num,i,j,k,c=0,min,l,loc;
 
   printf("Enter # of pages and # of frames:\n");
    scanf("%d%d",&page_num,&frame_num);
    int ref[page_num];//reference string
    int frm[frame_num];//frames array
    printf("Enter the reference string :\n");
    for (i = 0; i < page_num; ++i)
        scanf("%d",&ref[i]);
    for (i = 0; i < frame_num; ++i)
        frm[i] = -1;
     
   for(i=0;i<page_num;i++)
   {
      for(j=0;j<frame_num;j++)
      {
         if(ref[i]==frm[j])//check if element already present in frame,if true then no page fault.
           break;
         else
           continue;             
      }
     
      if(j==frame_num)
      {
         for(k=0;k<frame_num;k++)
           if(frm[k]==-1)
           {
              frm[k]=ref[i];//replace the initial value by string value
       
              break;       
           }
         
          if(k==frame_num)
          {
             min=50;
             for(j=0;j<frame_num;j++)
             {
               for(l=i-1;l>=0;l--)
               {
                 if(ref[l]==frm[j])
                 {
                    if(l<min)
                    { 
                       min=l;
                       loc=j;
                    }   
                    break;
                 }
               }
             }
           }     
           frm[loc]=ref[i]; 
           c++;
           
         }         
         printf("\n\n");
         for(k=0;k<frame_num;k++)
           printf("%d\t",frm[k]);
         
   } 
    printf("\n No of page fault is:%d",c); 
   return 0;
}
Output:
Enter # of pages and # of frames:
15
4
Enter the reference string :


7 0 1 2 0 3 0 4 2 3 0 3 7 2 0


7       -1      -1      -1

0       0       -1      -1

1       0       1       -1

2       0       1       2

2       0       1       2

2       0       3       2

2       0       3       2

4       0       3       2

4       0       3       2

4       0       3       2

4       0       3       2

4       0       3       2

7       0       3       2

7       0       3       2

7       0       3       2
 No of page fault is:7

Comments

Popular posts from this blog

Multi-programming with variable number of tasks(MVT) program in C

Multi-programming with fixed number of tasks(MFT) program in C

Linked file allocation program in C.