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.
#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
Post a Comment