#include <stdio.h>
int main() {
int frames, pages, count = 0, pageFaults = 0;
int reference[100], temp[10], time[10];
int flag1, flag2, i, j, pos, minimum;
printf("Enter Total number of frames: ");
scanf("%d", &frames);
printf("Enter number of Pages: ");
scanf("%d", &pages);
printf("Enter Reference string:\n");
for (i = 0; i < pages; ++i) {
scanf("%d", &reference[i]);
}
for (i = 0; i < frames; ++i) {
temp[i] = -1; // Initialize frames as empty (-1)
}
for (i = 0; i < pages; ++i) {
flag1 = flag2 = 0;
// Check if the page is already in any frame
for (j = 0; j < frames; ++j) {
if (temp[j] == reference[i]) {
flag1 = flag2 = 1;
time[j] = count++; // Update the recent use time
break;
}
}
if (flag1 == 0) {
// Check for an empty frame
for (j = 0; j < frames; ++j) {
if (temp[j] == -1) {
pageFaults++;
temp[j] = reference[i];
time[j] = count++;
flag2 = 1;
break;
}
}
}
// If no empty frame and page is not present, replace least recently used page
if (flag2 == 0) {
pos = 0;
minimum = time[0];
for (j = 1; j < frames; ++j) {
if (time[j] < minimum) {
minimum = time[j];
pos = j;
}
}
temp[pos] = reference[i];
time[pos] = count++;
pageFaults++;
}
// Display the current state of frames
for (j = 0; j < frames; ++j) {
if (temp[j] == -1)
printf("-1 ");
else
printf("%d ", temp[j]);
}
printf("\n");
}
printf("\nMy Student ID = BC123123123\n");
printf("Total Page Faults = %d\n", pageFaults);
return 0;
}
0 Comments