LRU is the simplest technique for replacing pages in a frame. It decides when a page fault occurs then which frames are to be replaced. Create a program to counts the number of page fault occurs when an input reference string is given. Initially, all the frames contain default value as -1. The input contains integer values for a number of pages in a queue, sequence of reference strings and frame size. The output should display the reference string given, pages in frames and the total number of page faults.
Note: Text in Bold corresponds to the input
To print PageFrames use ("%10s","Page_Frames") and to display pages inside a frame use additional spacing ("%10d",frame) between pages.
Sample Input and Output
Enter number of pages:
6
Enter reference string:
1
2
2
3
4
5
Enter number of frames:
3
Page_Frames
1 -1 -1
1 2 -1
1 2 -1
1 2 3
4 2 3
4 5 3
Total Page Faults: 5
Answer:
#include<stdio.h>
int main()
{
int pages,frames,m,n,position,k,l,temp[10],a=0,b=0,pagef=0;
printf("Enter number of pages: \n");
scanf("%d",&pages);
printf("Enter reference string: \n");
int ref[pages];
for(m=0;m<pages;m++){
scanf("%d",&ref[m]);
}
printf("Enter number of frames: \n");
scanf("%d",&frames);
int frame[frames];
printf("Page_Frames\n");
for(m=0;m<frames;m++){
frame[m]=-1;
}
for(n=0;n<pages;n++){
a=0,b=0;
for(m=0;m<frames;m++){
if(frame[m]==ref[n]){
a=1;
b=1;
break;
}
}
if(a==0){
for(m=0;m<frames;m++){
if(frame[m]==-1){
frame[m]=ref[n];
b=1;
pagef++;
break;
}
}
}
if(b==0){
for(m=0;m<frames;m++){
temp[m]=0;
}
for(k=n-1,l=1;l<=frames-1;l++,k--){
for(m=0;m<frames;m++){
if(frame[m]==ref[k]){
temp[m]=1;
}
}
}
for(m=0;m<frames;m++){
if(temp[m]==0){
position=m;
}
}
frame[position]=ref[n];
pagef++;
}
for(m=0;m<frames;m++){
printf("%10d",frame[m]);
}
printf("\n");
}
printf("Total Page Faults: %d",pagef);
}
0 Comments