Advertisement
Rakibul_Ahasan

Untitled

Mar 31st, 2021
467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int pageFaults(int pages[], int n, int capacity)
  5. {
  6.     unordered_set<int> s;
  7.  
  8.    
  9.     unordered_map<int, int> indexes;
  10.  
  11.  
  12.     int page_faults = 0;
  13.     for (int i=0; i<n; i++)
  14.     {
  15.    
  16.         if (s.size() < capacity)
  17.         {
  18.        
  19.             if (s.find(pages[i])==s.end())
  20.             {
  21.                 s.insert(pages[i]);
  22.  
  23.            
  24.                 page_faults++;
  25.             }
  26.  
  27.        
  28.             indexes[pages[i]] = i;
  29.         }
  30.  
  31.    
  32.         else
  33.         {
  34.        
  35.             if (s.find(pages[i]) == s.end())
  36.             {
  37.                
  38.                 int lru = INT_MAX, val;
  39.                 for (auto it=s.begin(); it!=s.end(); it++)
  40.                 {
  41.                     if (indexes[*it] < lru)
  42.                     {
  43.                         lru = indexes[*it];
  44.                         val = *it;
  45.                     }
  46.                 }
  47.  
  48.            
  49.                 s.erase(val);
  50.  
  51.                 s.insert(pages[i]);
  52.  
  53.                 page_faults++;
  54.             }
  55.  
  56.             indexes[pages[i]] = i;
  57.         }
  58.     }
  59.  
  60.     return page_faults;
  61. }
  62.  
  63. int main()
  64. {
  65.     int pages[10];
  66.     // = {7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2}
  67.     for(int i=0;i<10;i++){
  68.         pages[i] =  rand() % 10;
  69.     }
  70.     int n = sizeof(pages)/sizeof(pages[0]);
  71.     int capacity = 4;
  72.     cout <<"page Faults:"<< pageFaults(pages, n, capacity);
  73.     return 0;
  74. }
  75.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement