#include<stdio.h>
int findLRU(int temp[], int n){
int i, pos = 0, minimum = temp[0];
for(i = 1; i<n; i++){
if(temp[i] < minimum){
minimum = temp[i];
pos = i;
}
}
return pos;
}
int main(){
int frames[100],
page_table[3],
temp[10],
page_size = 3, frame_size = 20,
i, j, k,
flag1, flag2,
pos = 0, counter = 0,
foults = 0;
printf("Enter page size:\n");
scanf("%d", &page_size);
printf("Enter frame size:\n");
scanf("%d", &frame_size);
printf("Enter frame values:\n");
for(i=0; i<frame_size; i++){
scanf("%d", &frames[i]);
}
for(j=0; j<page_size; j++){
page_table[j] = -1;
}
for(i=0; i<frame_size; i++){
flag1 = flag2 = 0;
// Check Existing Frame
for(j=0; j<page_size; j++){
if(page_table[j] == frames[i]){
counter++;
temp[j] = counter;
flag1 = flag2 = 1;
break;
}
}
// Insert Frame
if(flag1 == 0){
for(j=0; j<page_size; j++){
if(page_table[j] == -1){
page_table[j] = frames[i];
counter++;
temp[j] = counter;
flag2 = 1;
break;
}
}
}
// Replace the frame
if(flag2 == 0){
int minmum = temp[0];
pos = findLRU(temp, page_size);
counter++;
foults++;
page_table[pos] = frames[i];
temp[pos] = counter;
}
printf("\n");
for(j=0; j<page_size; j++){
printf("%d\t", page_table[j]);
}
}
printf("Page faults = %d", foults);
}
Created
August 1, 2018 17:08
-
-
Save hasinur1997/7f5785605c938ba83d6e70f2d318676a to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment