FIFO Page Replacement Algorithm implementation in C
Program:
#include<stdio.h>
int main()
{
int page_num,frame_num,i,j,flag,page_fault=0;
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;
printf("\n");
for (i = 0; i < page_num; ++i)
{
flag = 0;
printf("\nReference np:%d-->",ref[i]);
for (j = 0; j < frame_num; ++j)
{
if (frm[j] == ref[i])
{
flag++;
page_fault--;
}
}
page_fault++;
if ((flag == 0) && (page_fault <= frame_num))
{
frm[i] = ref[i];
}
else if(flag == 0)
frm[(page_fault - 1) % frame_num] = ref[i];
for (j = 0; j < frame_num; ++j)
{
printf("%d\t",frm[j]);
}
}
printf("\n\n# of page faults are %d.\n",page_fault);
return 0;
}
Output:
#include<stdio.h>
int main()
{
int page_num,frame_num,i,j,flag,page_fault=0;
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;
printf("\n");
for (i = 0; i < page_num; ++i)
{
flag = 0;
printf("\nReference np:%d-->",ref[i]);
for (j = 0; j < frame_num; ++j)
{
if (frm[j] == ref[i])
{
flag++;
page_fault--;
}
}
page_fault++;
if ((flag == 0) && (page_fault <= frame_num))
{
frm[i] = ref[i];
}
else if(flag == 0)
frm[(page_fault - 1) % frame_num] = ref[i];
for (j = 0; 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:
3
3
Enter the reference string :
2 3 4Reference np:2-->2 -1 -1Reference np:3-->2 3 -1Reference np:4-->2 3 4# of page faults are 3.
Comments
Post a Comment