LRU

 

// LRU

#include <stdio.h>    #include <stdlib.h>

#define FRAME_SIZE 3      #define PAGE_COUNT 10

int isPageInMemory(int page, int frames[], int frameCount) {

 for (int i = 0; i < frameCount; i++) {      if (frames[i] == page) {

 return 1;   }    }    return 0;   }

int getLRUIndex(int time[], int frameCount) {

 int min = time[0], index = 0;

 for (int i = 1; i < frameCount; i++) {    if (time[i] < min) {    min = time[i];

 index = i;  }   }      return index;   }

void lruPageReplacement(int pages[], int pageCount) {

 int frames[FRAME_SIZE];    int time[FRAME_SIZE];    int pageFaults = 0;

  for (int i = 0; i < FRAME_SIZE; i++) {     frames[i] = -1;   time[i] = 0;    }

 printf("Page Reference:\n");

 for (int i = 0; i < pageCount; i++) {    printf("%d ", pages[i]);

 if (!isPageInMemory(pages[i], frames, FRAME_SIZE)) {    pageFaults++;

 int lruIndex = getLRUIndex(time, FRAME_SIZE);   frames[lruIndex] = pages[i];

 time[lruIndex] = i;        printf("-> Page Fault! Frames: [");

 for (int j = 0; j < FRAME_SIZE; j++) {      if (j > 0) printf(", ");

 printf("%d", frames[j]);    }      printf("]\n");       } else {

 for (int j = 0; j < FRAME_SIZE; j++) {      if (frames[j] == pages[i]) {

 time[j] = i;    break;   }    }    printf("(No Page Fault)\n");   }   }

 printf("\nTotal Page Faults: %d\n", pageFaults);   }     int main() {

 int pages[PAGE_COUNT] = {0, 1, 2, 1, 3, 0, 4, 0, 1, 2};

 lruPageReplacement(pages, PAGE_COUNT);

 return 0;  }

Comments

Popular posts from this blog

FCFS Static code