#include <stdio.h>
int main() {
int frames = 3;
int ref[] = {7, 0, 1, 2, 0, 3, 0, 4};
int n = 8;
int frame[3];
int i, j, k = 0;
int pageFaults = 0;
int found;
// Initialize frames
for (i = 0; i < frames; i++)
frame[i] = -1;
printf("PAGE\tFRAMES\n");
for (i = 0; i < n; i++) {
found = 0;
// Check if page already exists
for (j = 0; j < frames; j++) {
if (frame[j] == ref[i]) {
found = 1;
break;
}
}
// Page fault
if (!found) {
frame[k] = ref[i];
k = (k + 1) % frames;
pageFaults++;
}
// Print frame status
printf("%d\t", ref[i]);
for (j = 0; j < frames; j++) {
if (frame[j] == -1)
printf("-");
else
printf("%d", frame[j]);
}
printf("\n");
}
printf("\nTotal Page Faults = %d\n", pageFaults);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpIHsKICAgIGludCBmcmFtZXMgPSAzOwogICAgaW50IHJlZltdID0gezcsIDAsIDEsIDIsIDAsIDMsIDAsIDR9OwogICAgaW50IG4gPSA4OwoKICAgIGludCBmcmFtZVszXTsKICAgIGludCBpLCBqLCBrID0gMDsKICAgIGludCBwYWdlRmF1bHRzID0gMDsKICAgIGludCBmb3VuZDsKCiAgICAvLyBJbml0aWFsaXplIGZyYW1lcwogICAgZm9yIChpID0gMDsgaSA8IGZyYW1lczsgaSsrKQogICAgICAgIGZyYW1lW2ldID0gLTE7CgogICAgcHJpbnRmKCJQQUdFXHRGUkFNRVNcbiIpOwoKICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBmb3VuZCA9IDA7CgogICAgICAgIC8vIENoZWNrIGlmIHBhZ2UgYWxyZWFkeSBleGlzdHMKICAgICAgICBmb3IgKGogPSAwOyBqIDwgZnJhbWVzOyBqKyspIHsKICAgICAgICAgICAgaWYgKGZyYW1lW2pdID09IHJlZltpXSkgewogICAgICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBhZ2UgZmF1bHQKICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgICAgIGZyYW1lW2tdID0gcmVmW2ldOwogICAgICAgICAgICBrID0gKGsgKyAxKSAlIGZyYW1lczsKICAgICAgICAgICAgcGFnZUZhdWx0cysrOwogICAgICAgIH0KCiAgICAgICAgLy8gUHJpbnQgZnJhbWUgc3RhdHVzCiAgICAgICAgcHJpbnRmKCIlZFx0IiwgcmVmW2ldKTsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgZnJhbWVzOyBqKyspIHsKICAgICAgICAgICAgaWYgKGZyYW1lW2pdID09IC0xKQogICAgICAgICAgICAgICAgcHJpbnRmKCItIik7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHByaW50ZigiJWQiLCBmcmFtZVtqXSk7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsKICAgIH0KCiAgICBwcmludGYoIlxuVG90YWwgUGFnZSBGYXVsdHMgPSAlZFxuIiwgcGFnZUZhdWx0cyk7CiAgICByZXR1cm4gMDsKfQ==