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