#include<stdio.h>
int main()
{
int no_of_frames, no_of_pages, frames[10], pages[30], temp[10], flag1, flag2, flag3, i, j, k, pos, max, faults = 0;
printf("\nEnter number of frames: "); scanf("%d", &no_of_frames
);
printf("\nEnter number of pages: "); scanf("%d", &no_of_pages
);
printf("\nEnter page reference string: ");
for(i = 0; i < no_of_pages; ++i){
}
/* Visit www.rgpv.tk for more */
for(i = 0; i < no_of_frames; ++i){
frames[i] = -1;
}
for(i = 0; i < no_of_pages; ++i){
flag1 = flag2 = 0;
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == pages[i]){
flag1 = flag2 = 1;
break;
}
}
/* Aditya Jain */
if(flag1 == 0){
for(j = 0; j < no_of_frames; ++j){
if(frames[j] == -1){
faults++;
frames[j] = pages[i];
flag2 = 1;
break;
}
}
}
if(flag2 == 0){
flag3 =0;
for(j = 0; j < no_of_frames; ++j){
temp[j] = -1;
for(k = i + 1; k < no_of_pages; ++k){
if(frames[j] == pages[k]){
temp[j] = k;
break;
}
}
}
for(j = 0; j < no_of_frames; ++j){
if(temp[j] == -1){
pos = j;
flag3 = 1;
break;
}
}
if(flag3 ==0){
max = temp[0];
pos = 0;
for(j = 1; j < no_of_frames; ++j){
if(temp[j] > max){
max = temp[j];
pos = j;
}
}
}
frames[pos] = pages[i];
faults++;
}
for(j = 0; j < no_of_frames; ++j){
}
}
printf("\n\nTotal Page Faults = %d", faults
);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KIAppbnQgbWFpbigpCnsKICAgIGludCBub19vZl9mcmFtZXMsIG5vX29mX3BhZ2VzLCBmcmFtZXNbMTBdLCBwYWdlc1szMF0sIHRlbXBbMTBdLCBmbGFnMSwgZmxhZzIsIGZsYWczLCBpLCBqLCBrLCBwb3MsIG1heCwgZmF1bHRzID0gMDsKICAgIHByaW50ZigiXG5FbnRlciBudW1iZXIgb2YgZnJhbWVzOiAiKTsKICAgIHNjYW5mKCIlZCIsICZub19vZl9mcmFtZXMpOwogICAgCiAgICBwcmludGYoIlxuRW50ZXIgbnVtYmVyIG9mIHBhZ2VzOiAiKTsKICAgIHNjYW5mKCIlZCIsICZub19vZl9wYWdlcyk7CiAgICAKICAgIHByaW50ZigiXG5FbnRlciBwYWdlIHJlZmVyZW5jZSBzdHJpbmc6ICIpOwogICAgCiAgICBmb3IoaSA9IDA7IGkgPCBub19vZl9wYWdlczsgKytpKXsKICAgICAgICBzY2FuZigiJWQiLCAmcGFnZXNbaV0pOwogICAgfQogICAgLyogVmlzaXQgd3d3LnJncHYudGsgZm9yIG1vcmUgKi8KICAgIGZvcihpID0gMDsgaSA8IG5vX29mX2ZyYW1lczsgKytpKXsKICAgICAgICBmcmFtZXNbaV0gPSAtMTsKICAgIH0KICAgIAogICAgZm9yKGkgPSAwOyBpIDwgbm9fb2ZfcGFnZXM7ICsraSl7CiAgICAgICAgZmxhZzEgPSBmbGFnMiA9IDA7CiAgICAgICAgCiAgICAgICAgZm9yKGogPSAwOyBqIDwgbm9fb2ZfZnJhbWVzOyArK2opewogICAgICAgICAgICBpZihmcmFtZXNbal0gPT0gcGFnZXNbaV0pewogICAgICAgICAgICAgICAgICAgZmxhZzEgPSBmbGFnMiA9IDE7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvKiBBZGl0eWEgSmFpbiAqLwogICAgICAgIGlmKGZsYWcxID09IDApewogICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBub19vZl9mcmFtZXM7ICsrail7CiAgICAgICAgICAgICAgICBpZihmcmFtZXNbal0gPT0gLTEpewogICAgICAgICAgICAgICAgICAgIGZhdWx0cysrOwogICAgICAgICAgICAgICAgICAgIGZyYW1lc1tqXSA9IHBhZ2VzW2ldOwogICAgICAgICAgICAgICAgICAgIGZsYWcyID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYoZmxhZzIgPT0gMCl7CiAgICAgICAgICAgIGZsYWczID0wOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgbm9fb2ZfZnJhbWVzOyArK2opewogICAgICAgICAgICAgICAgdGVtcFtqXSA9IC0xOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IoayA9IGkgKyAxOyBrIDwgbm9fb2ZfcGFnZXM7ICsrayl7CiAgICAgICAgICAgICAgICAgICAgaWYoZnJhbWVzW2pdID09IHBhZ2VzW2tdKXsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFtqXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZm9yKGogPSAwOyBqIDwgbm9fb2ZfZnJhbWVzOyArK2opewogICAgICAgICAgICAgICAgaWYodGVtcFtqXSA9PSAtMSl7CiAgICAgICAgICAgICAgICAgICAgcG9zID0gajsKICAgICAgICAgICAgICAgICAgICBmbGFnMyA9IDE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKGZsYWczID09MCl7CiAgICAgICAgICAgICAgICBtYXggPSB0ZW1wWzBdOwogICAgICAgICAgICAgICAgcG9zID0gMDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZm9yKGogPSAxOyBqIDwgbm9fb2ZfZnJhbWVzOyArK2opewogICAgICAgICAgICAgICAgICAgIGlmKHRlbXBbal0gPiBtYXgpewogICAgICAgICAgICAgICAgICAgICAgICBtYXggPSB0ZW1wW2pdOwogICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBqOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZyYW1lc1twb3NdID0gcGFnZXNbaV07CiAgICAgICAgICAgIGZhdWx0cysrOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgCiAgICAgICAgZm9yKGogPSAwOyBqIDwgbm9fb2ZfZnJhbWVzOyArK2opewogICAgICAgICAgICBwcmludGYoIiVkXHQiLCBmcmFtZXNbal0pOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcHJpbnRmKCJcblxuVG90YWwgUGFnZSBGYXVsdHMgPSAlZCIsIGZhdWx0cyk7CiAgICAKICAgIHJldHVybiAwOwp9