Can someone please convert C language into C++ or Java. Thanksin advance.
#include <stdio.h>
#include <stdlib.h>
/* Define page table as dynamic structure containing virtualpage and page frame
and initialize variable as pointer to structure */
struct node{
int virtual_page;
int page_frame;
} *page_table = NULL;
typedef struct node entry;
/* Declare global var’s */
int num_entries, main_memory_size, page_size,replacement_policy;
/**************************************************************/
void set_params() {
printf(“nEnter memory size(words): “);
scanf(“%d”, &main_memory_size);
printf(“nEnter the page size (words/page): “);
scanf(“%d”, &page_size);
printf(“nEnter the replacement policy (0 = LRU, 1 = FIFO):”);
scanf(“%d”, &replacement_policy);
num_entries = main_memory_size / page_size;
page_table = (entry*) malloc (num_entries * sizeof(entry));
for (int i = 0; i < num_entries; i++) {
page_table[i].virtual_page = -1;
page_table[i].page_frame = i;
}
return;
}
void mapping() {
int virtual_address, virtual_page, offset, real_address;
int array_index = 0;
printf(“n”
“Enter virtual address to access: “);
scanf(“%d”, &virtual_address);
virtual_page = virtual_address / page_size;
offset = virtual_address % page_size;
while ((array_index < num_entries) &&(page_table[array_index].virtual_page != -1) &&(page_table[array_index].virtual_page != virtual_page))
array_index++;
if (array_index == num_entries) {
int page_frame_original = page_table[0].page_frame;
for (int i = 0; i < num_entries – 1; i++) {
page_table[i].virtual_page = page_table[i + 1].virtual_page;
page_table[i].page_frame = page_table[i + 1].page_frame;
}
page_table[num_entries – 1].virtual_page = virtual_page;
page_table[num_entries – 1].page_frame = page_frame_original;
printf(“Page Faultn”);
}
else if (page_table[array_index].virtual_page == -1) {
page_table[array_index].virtual_page = virtual_page;
page_table[array_index].page_frame = array_index;
printf(“Page Faultn”);
}
else {
if (replacement_policy == 0) {
int virtual_page_current =page_table[array_index].virtual_page;
int page_frame_current = page_table[array_index].page_frame;
int last_valid_entry = 0;
for (int i = array_index; i < num_entries – 1; i++) {
if (page_table[i + 1].page_frame == -1)
break;
page_table[i].virtual_page = page_table[i + 1].virtual_page;
page_table[i].page_frame = page_table[i + 1].page_frame;
last_valid_entry++;
}
page_table[last_valid_entry].virtual_page =virtual_page_current;
page_table[last_valid_entry].page_frame = page_frame_current;
real_address = page_table[last_valid_entry].page_frame * page_size+ offset;
}
else real_address = page_table[array_index].page_frame * page_size+ offset;
printf(“n”
“Virtual address %d maps to physical address %dn”,virtual_address, real_address);
}
}
void print_table() {
printf(“nn———————————n”
“|t” “VP” “t|t” “PF” “t|”);
for (int i = 0; i < num_entries; i++)
if(page_table[i].virtual_page != -1)
printf(“n———————————n”
“|t” “%d” “t|t” “%d” “t|”, page_table[i].virtual_page,page_table[i].page_frame);
printf(“n———————————n”);
}
/**************************************************************/
int main()
{
/* Declare local var’s */
int input = 0;
/* Until user quits */
/* print menu of options, prompt for user input, andselect appropriate option */
while(input != 4){
printf(“Virtual memory to Main memorymappingn———————————-n”);
printf(“1) Enter parametersn2) Map virtual address to physicaladdressn3) Print page tablen4) QuitnnEnter selection: “);
scanf(“%d”, &input);
if(input == 1){
set_params();
}
if(input == 2){
mapping();
}
if(input == 3){
print_table();
}
if(input == 4){
printf(“You have successfully quit the programn”);
break;
}
}
return 1;
}
Expert Answer
Answer to Can someone please convert C language into C++ or Java. Thanks in advance. #include #include /* Define page table as dyn…