FIFO 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
For spacing between Ref.string and PageFrames use ("%s%40s\n","Ref.string","PageFrames") and space between 1 (Ref.string) and 1(PageFrames) use ("%45s",""). To display pages inside a frame use additional spacing ("%10d",frame) between pages.
Sample Input and Output
Enter the number of pages:
6
Enter the reference string:
1
2
2
3
1
4
Enter frame size:
3
Ref.string PageFrames
1 1 -1 -1
2 1 2 -1
2
3 1 2 3
1
4 4 2 3
Total Page Fault is 4
Answer:
#include<stdio.h> int main() { int n,pages,frames,m,i,s,pagef=0; printf("Enter the number of pages:\n"); scanf("%d",&pages); int r_arr[pages]; printf("Enter the reference string:\n"); for(m=0;m<pages;m++){ scanf("%d",&r_arr[m]); } printf("Enter frame size:\n"); scanf("%d",&frames); int temp[frames]; for(i=0;i<frames;i++) { temp[i]=-1; } printf("%s%40s\n","Ref.string","PageFrames"); for(m=0;m<pages;m++){ printf("%d%45s",r_arr[m],""); s=0; for(i=0;i<frames;i++) { if(r_arr[m]==temp[i]){ s++; pagef--; } } pagef++; if((pagef<=frames) && s==0){ temp[pagef-1]=r_arr[m]; for(n=0;n<frames;n++){ printf("%10d",temp[n]); } } else if(s==0){ temp[(pagef-1)%frames]=r_arr[m]; for(n=0;n<frames;n++) { printf("%10d",temp[n]); } } printf("\n"); } printf("Total Page Fault is %d",pagef); }
0 Comments