Advertisement
bunny007

code11

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