Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

This code only provides the basic structure for the virtual memory manager. You'll need to fill in the methods handlePageFault , updateTLB , and searchTLB

This code only provides the basic structure for the virtual memory manager. You'll need to fill in the methods handlePageFault, updateTLB, and searchTLB to implement the page fault handling, TLB updating, and TLB searching, respectively.

Note that in this code, the backing store is represented by the file BACKING_STORE.bin. To read from the backing store, you'll need to use RandomAccessFile in Java.

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;

public class VirtualMemory {

private static final int PAGE_SIZE = 256;

private static final int NUM_PAGES = 256;

private static final int TLB_SIZE = 16;

private static final int PAGE_TABLE_SIZE = 256;

private static final int PHYSICAL_MEMORY_SIZE = 65536;

private static int[] pageTable = new int[PAGE_TABLE_SIZE];

private static TLBEntry[] TLB = new TLBEntry[TLB_SIZE];

private static byte[] physicalMemory = new byte[PHYSICAL_MEMORY_SIZE];

public static void main(String[] args) {

if (args.length != 1) {

System.out.println("Usage: java VirtualMemory [file name]");

System.exit(1);

}

try {

Scanner input = new Scanner(new File(args[0]));

while (input.hasNextInt()) {

int logicalAddress = input.nextInt();

int pageNumber = logicalAddress >> 8;

int offset = logicalAddress & 0xff;

int frameNumber = searchTLB(pageNumber);

if (frameNumber == -1) {

frameNumber = pageTable[pageNumber];

if (frameNumber == -1) {

frameNumber = handlePageFault(pageNumber);

}

updateTLB(pageNumber, frameNumber);

}

int physicalAddress = (frameNumber << 8) + offset;

byte value = physicalMemory[physicalAddress];

System.out.println("Logical address: " + logicalAddress + " Physical address: " + physicalAddress

+ " Value: " + value);

}

input.close();

} catch (FileNotFoundException e) {

System.out.println("File not found");

System.exit(1);

}

}

private static int handlePageFault(int pageNumber) {

// code to handle page fault

return 0;

}

private static void updateTLB(int pageNumber, int frameNumber) {

// code to update TLB

}

private static int searchTLB(int pageNumber) {

// code to search TLB

return -1;

}

private static class TLBEntry {

int pageNumber;

int frameNumber;

public TLBEntry(int pageNumber, int frameNumber) {

this.pageNumber = pageNumber;

this.frameNumber = frameNumber;

}

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Automating Access Databases With Macros

Authors: Fish Davis

1st Edition

1797816349, 978-1797816340

More Books

Students also viewed these Databases questions