Advertisement
_Black_Panther_

Write a program that implements the LRU page-replacement algorithms. First, generate a random page-

Mar 31st, 2021 (edited)
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1.  
  2. #include <bits/stc++.h>
  3.  
  4. using namespace std;
  5.  
  6. #define ll long long
  7. #define smallestnum 1e18
  8.  
  9.  
  10. int findLRU(int time[], int n) {
  11.     int i, minimum = time[0], pos = 0;
  12.     for(i = 1; i < n; ++i) {
  13.         if(time[i] < minimum) {
  14.             minimum = time[i];
  15.             pos = i;
  16.         }
  17.     }
  18.     return pos;
  19. }
  20.  
  21.  
  22. int main() {
  23.     int no_of_frames, no_of_pages, frames[10], pages[30], counter = 0, time[1], i, j, flag1, flag2;
  24.     int faults= 0;
  25.     printf("Enter number of frames: ");
  26.     scanf("%d", &no_of_frames);
  27.     printf("Enter number of pages: ");
  28.     scanf("%d", &no_of_pages);
  29.     //printf("Enter reference string: ");
  30.     for(i = 0; i < no_of_pages; ++i) {
  31.         //scanf("%d", &pages[i]);
  32.         pages[i] = rand() % 10;  // get input automatically with a random string
  33.  
  34.     }
  35.     cout << endl;
  36.     for(i = 0; i < no_of_frames; ++i) {
  37.         frames[i] = -1;
  38.     }
  39.     for(i = 0; i < no_of_pages; ++i) {
  40.         flag1 = flag2 = 0;
  41.         for(j = 0; j < no_of_frames; ++j) {
  42.             if(frames[j] == pages[i]) {
  43.                 counter++;
  44.                 time[j] = counter;
  45.                 flag1 = flag2 = 1;
  46.                 break;
  47.             }
  48.         }
  49.         if(flag1 == 0) {
  50.             for(j = 0; j < no_of_frames; ++j) {
  51.                 if(frames[j] == -1) {
  52.                     counter++;
  53.                     faults++;
  54.                     frames[j] = pages[i];
  55.                     time[j] = counter;
  56.                     flag2 = 1;
  57.                     break;
  58.                 }
  59.             }
  60.         }
  61.         if(flag2 == 0) {
  62.             int pos = findLRU(time, no_of_frames);
  63.             counter++;
  64.             faults++;
  65.             frames[pos] = pages[i];
  66.             time[pos] = counter;
  67.         }
  68.         printf("\n");
  69.         for(j = 0; j < no_of_frames; ++j) {
  70.             printf("%d\t", frames[j]);
  71.         }
  72.     }
  73.     printf("\n\nTotal Page Faults = %d", faults);
  74.     return 0;
  75. }
  76. // input: 3 10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement