Optimal Page Replacement Implementation in C

Program:

#include<stdio.h>

main()
{
   int i,j,k,frame_num,page_num,page_fault=0,max,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[j]==frm[i])
    goto display;
for(j=0;j<frame_num;j++){
    if(frm[j]==-1)//check if element already present in frame,if true then no page fault.
            {
                frm[j]=ref[i];
                page_fault++;
                goto display;
}
}
if(j==frame_num)
        {
            max=0;
            for(j=0;j<frame_num;j++){
            for(k=i+1;k<page_num;k++){
                    if(ref[k]==frm[j]){
                        if(k>max){ 
                            max=k;
                            loc=j;
                        }   
                    break;
                }
                                             }
                                             if(k==page_num)
                                             {
                                               max=k;
                                               loc=j;
                                             }
                                           
                           }
                   }     
                   frm[loc]=ref[i]; 
                    page_fault++;
display:
  for (j = 0,printf("\n"); j < frame_num; ++j)
        printf("%d\t",frm[j]);
    }
    printf("\n\n# of page faults are %d.\n",page_fault);
   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
7       0       -1      -1
7       0       1       -1
7       0       1       2
7       0       0       2
7       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2
0       0       0       2

# of page faults are 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.