Optimal Page Replacement in Java

Optimal Page Replacement in JAVA

Optimal Page Replacement

The memory in an operating system is divided into pages. These pages are brought into the primary memory from the secondary memory as the CPU demands them. Pages that contain such critical data and information are swapped between different memory locations on the basis of their demand.  The concept is also known as the Optimal Page Replacement technique.

Optimal Page replacement program in JAVA

Run
// importing packages to use classes in the page replacement program
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class OptimalReplacement
{

// creation of the main class to implement Optimal page replacement algorithm
  public static void main (pagestring[]args) throws IOException
  {
    Countbuffer bfr = new Countbuffer (new InputStreamReader (System.in));
    int frames, pointer = 0, hit = 0, fault = 0, strng_size;
    boolean isFull = false;
    int buffer[];
    int ref[];
    int mem_layout[][];

//Entering the number of frames
      System.out.println (" Enter the total number of Frames: ");
      frames = Integer.parseInt (br.readLine ());

//Entering the string size of the reference
      System.out.println (" Enter the reference string size:");
      strng_size = Integer.parseInt (br.readLine ());

      ref = new int[ref_len];
      mem_layout = new int[strng_size][frames];
      buffer = new int[frames];
    for (int j = 0; j < frames; j++)
        buffer[j] = -1;

//code to enter the reference string to carry out optimal page replacement
      System.out.println (" Enter the reference string: ");
    for (int i = 0; i < strng_size; i++)
      {
	ref[i] = Integer.parseInt (br.readLine ());
      }

    System.out.println ();
    for (int i = 0; i < strng_size; i++)
      {
	int search = -1;
	for (int j = 0; j < frames; j++)
	  {
	    if (buffer[j] == ref[i])
	      {
		search = j;
		hit++;
		break;
	      }
	  }
// code to update the stack checking its capacity
	if (search == -1)
	  {
	    if (isFull)
	      {
		int index[] = new int[frames];
		boolean index_flag[] = new boolean[frames];
		for (int j = i + 1; j < ref_len; j++)
		  {
		    for (int k = 0; k < frames; k++)
		      {
			if ((ref[j] == buffer[k]) && (index_flag[k] == false))
			  {
			    index[k] = j;
			    index_flag[k] = true;
			    break;
			  }
		      }
		  }

//updating pointer to the correct memory location after checking capacity
		buffer[pointer] = ref[i];
		fault++;
		if (!isFull)
		  {
		    pointer++;
		    if (pointer == frames)
		      {
			pointer = 0;
			isFull = true;
		      }
		  }
	      }
	    for (int j = 0; j < frames; j++)
	      mem_layout[i][j] = buffer[j];
	  }

// code to display the number strings
	for (int i = 0; i < frames; i++)
	  {
	    for (int j = 0; j < ref_len; j++)
	      System.out.printf ("%3d ", mem_layout[j][i]);
	    System.out.println ();
	  }

	System.out.println ("Hits: " + hit);
	System.out.println ("Hit Ratio: " + (float) ((float) hit / str_len));
	System.out.println ("Faults: " + fault);
      }

  }

Output

Enter the total number of Frames:
3
Enter the reference string size:
20
Enter the reference string:
1
2
3
2
1
5
2
1
6
2
5
6
3
1
3
6
1
2
4
3

1 1 1 1 1 1 1 1 6 6 6 6 6 6 6 6 6 2 4 4
-1 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1
-1 -1 3 3 3 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3
Hits: 11
Hit Ratio: 0.55
Faults: 9

Prime Course Trailer

Related Banners

Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription

Get over 200+ course One Subscription

Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Checkout list of all the video courses in PrepInsta Prime Subscription

Checkout list of all the video courses in PrepInsta Prime Subscription