Advertisement
bunny007

Code 11

Nov 18th, 2022
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. ----------LRU Page Replacement----------
  2. ----------Code 11----------
  3.  
  4. import java.io.*;
  5. import java.util.*;
  6. public class LRU {
  7.  
  8.     public static void main(String[] args) throws IOException
  9.     {
  10.         BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
  11.         int frames, pointer = 0, hit = 0, fault = 0, ref_len;
  12.         Boolean isFull = false;
  13.         int buffer[];
  14.         ArrayList<Integer> stack = new ArrayList<Integer> ();
  15.         int reference[];
  16.         int mem_layout[][];
  17.         System.out.println("Please enter the number of Frames: ");
  18.         frames = Integer.parseInt(br.readLine());
  19.         System.out.println("Please enter the length of the Reference string:");
  20.         ref_len = Integer.parseInt(br.readLine());
  21.         reference = new int[ref_len];
  22.         mem_layout = new int[ref_len][frames];
  23.         buffer = new int[frames];
  24.         for(int j = 0; j < frames; j++)
  25.         buffer[j] = -1;
  26.  
  27.         System.out.println("Please enter the reference string: ");
  28.         for(int i = 0; i < ref_len; i++)
  29.         {
  30.         reference[i] = Integer.parseInt(br.readLine());
  31.         }
  32.         System.out.println();
  33.         for(int i = 0; i < ref_len; i++)
  34.         {
  35.         if(stack.contains(reference[i]))
  36.         {
  37.         stack.remove(stack.indexOf(reference[i]));
  38.         }
  39.         stack.add(reference[i]);
  40.         int search = -1;
  41.         for(int j = 0; j < frames; j++)
  42.         {
  43.         if(buffer[j] == reference[i])
  44.         {
  45.         search = j;
  46.         hit++;
  47.         break;
  48.         }
  49.         }
  50.         if(search == -1)
  51.         {
  52.         if(isFull)
  53.         {
  54.         int min_loc = ref_len;
  55.         for(int j = 0; j < frames; j++)
  56.         {
  57.         if(stack.contains(buffer[j]))
  58.         {
  59.         int temp = stack.indexOf(buffer[j]);
  60.         if(temp < min_loc)
  61.         {
  62.         min_loc = temp;
  63.         pointer = j;
  64.         }
  65.         }
  66.         }
  67.         }
  68.         buffer[pointer] = reference[i];
  69.         fault++;
  70.         pointer++;
  71.         if(pointer == frames)
  72.         {
  73.         pointer = 0;
  74.         isFull = true;
  75.         }
  76.         }
  77.         for(int j = 0; j < frames; j++)
  78.         mem_layout[i][j] = buffer[j];
  79.         }        
  80.         for(int i = 0; i < frames; i++)
  81.         {
  82.         for(int j = 0; j < ref_len; j++)
  83.         System.out.printf("%3d ",mem_layout[j][i]);
  84.         System.out.println();
  85.         }
  86.         System.out.println("The number of Hits: " + hit);
  87.         System.out.println("Hit Ratio: " + (float)((float)hit/ref_len));
  88.         System.out.println("The number of Faults: " + fault);
  89.     }
  90. }
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement