Write the simulation program to implement demand paging and show the page scheduling and total number of page faults for the following given page reference string. Give input n as the number of memory frames. Reference String : 12,15,12,18,6,8,11,12,19,12,6,8,12,15,19,8 Implement MFU
#include <stdio.h>
#include <stdlib.h>// Function to find the index of the page that is least frequently used
int findMFUPage(int freq[], int n) {
int max = -1;
int index = -1;
for (int i = 0; i < n; i++) {
if (freq[i] > max) {
max = freq[i];
index = i;
}
}
return index;
}
// Function to simulate demand paging with MFU page replacement
void demandPagingMFU(int referenceString[], int n, int numFrames) {
int frames[numFrames];
int pageFaults = 0;
int freq[numFrames]; // Frequency of each page in the frames
for (int i = 0; i < numFrames; i++) {
frames[i] = -1; // Initialize frames to empty
freq[i] = 0; // Initialize frequency to 0
}
printf("Page Schedule:\n");
for (int i = 0; i < n; i++) {
int page = referenceString[i];
int found = 0;
for (int j = 0; j < numFrames; j++) {
if (frames[j] == page) {
freq[j]++;
found = 1;
break;
}
}
if (!found) {
int mfuIndex = findMFUPage(freq, numFrames);
frames[mfuIndex] = page;
freq[mfuIndex] = 1;
pageFaults++;
printf("Page %d -> ", page);
for (int j = 0; j < numFrames; j++) {
if (frames[j] == -1) {
printf("M ");
} else {
printf("%d ", frames[j]);
}
}
printf(" (Page Fault)\n");
} else {
printf("Page %d -> ", page);
for (int j = 0; j < numFrames; j++) {
if (frames[j] == -1) {
printf("M ");
} else {
printf("%d ", frames[j]);
}
}
printf("\n");
}
}
printf("\nTotal Page Faults: %d\n", pageFaults);
}
int main() {
int numFrames;
int n;
printf("Enter the number of memory frames: ");
scanf("%d", &numFrames);
printf("Enter the number of pages in the reference string: ");
scanf("%d", &n);
int referenceString[n];
printf("Enter the reference string (separated by spaces): ");
for (int i = 0; i < n; i++) {
scanf("%d", &referenceString[i]);
}
demandPagingMFU(referenceString, n, numFrames);
return 0;
}
Comments
Post a Comment