SPOS - Least Recently Used [LRU] Program

 LRU Program

Code :

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
class lru
{
static int pageFaults(int pages[], int n, int frame)
{
HashSet<Integer> s = new HashSet<>(frame);
HashMap<Integer, Integer> indexes = new HashMap<>();
int page_faults = 0;
for (int i=0; i<n; i++)
{
if (s.size() < frame)
{
if (!s.contains(pages[i]))
{
s.add(pages[i]);
page_faults++;
}
indexes.put(pages[i], i);
}
else
{
if (!s.contains(pages[i]))
{
int lru = Integer.MAX_VALUE, val=Integer.MIN_VALUE;
Iterator<Integer> itr = s.iterator();
while (itr.hasNext()) {
int temp = itr.next();
if (indexes.get(temp) < lru)
{
lru = indexes.get(temp);
val = temp;
}
}
s.remove(val);
indexes.remove(val);
s.add(pages[i]);
page_faults++;
}
indexes.put(pages[i], i);
}
}
return page_faults;
}
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter Number Of Reference: ");
int nr = sc.nextInt();
System.out.println("Enter Number Of Frames: ");
int frame = sc.nextInt();
int pages [] = new int[nr];
System.out.println("Enter Reference:");
for(int i=0 ; i<nr ; i++){
pages[i] = sc.nextInt();
}
// 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2
//f= 6 & h=7
System.out.println("Page Fault is : " + pageFaults(pages, pages.length, frame));
System.out.println("Page Hit is: " +(nr - pageFaults(pages, pages.length, frame)));
sc.close();
}
}

Output :



Your review for this post?