package A1 (1)
package A1 (1)
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import A1.LitTuple;
import A1.SymTuple;
import A1.Tuple;
class Tuple {
int length;
Tuple() {}
Tuple(String s1, String s2, String s3, String s4) {
mnemonic = s1;
m_class = s2;
opcode = s3;
length = Integer.parseInt(s4);
class SymTuple {
int length;
symbol = s1;
address = s2;
length = i1;
class LitTuple {
int length;
LitTuple() {}
LitTuple(String s1, String s2, int i1) {
literal = s1;
address = s2;
length = i1;
initializeTables();
pass1();
}
String s;
lc=0;
s_arr[i] = st.nextToken();
if(s_arr.length == 0){
continue;
int curIndex = 0;
if(s_arr.length == 3){
insertIntoSymTab(label,lc+"");
curIndex = 1;
String intermediateStr="";
if(curTuple.m_class.equalsIgnoreCase("IS")){
lc += curTuple.length;
intermediateStr += processOperands(s_arr[curIndex+1]);
else if(curTuple.m_class.equalsIgnoreCase("AD")){
if(curTuple.mnemonic.equalsIgnoreCase("START")){
lc = Integer.parseInt(s_arr[curIndex+1]);
else if(curTuple.mnemonic.equalsIgnoreCase("LTORG")){
intermediateStr +=processLTORG();
else if(curTuple.mnemonic.equalsIgnoreCase("END")){
intermediateStr +=processLTORG();
//break;
else if(curTuple.m_class.equalsIgnoreCase("DL")){
if(curTuple.mnemonic.equalsIgnoreCase("DS")){
lc += Integer.parseInt(s_arr[curIndex+1]);
else if(curTuple.mnemonic.equalsIgnoreCase("DC")){
lc += curTuple.length;
System.out.println(intermediateStr);
out_pass1.println(intermediateStr);
out_pass1.flush();
out_pass1.close();
SymTuple tuple;
Iterator<SymTuple> it = symtable.values().iterator();
String tableEntry;
while(it.hasNext()){
tuple = it.next();
out_symtable.println(tableEntry);
System.out.println(tableEntry);
out_symtable.flush();
out_symtable.close();
LitTuple litTuple;
tableEntry = "";
litTuple = littable.get(i);
out_littable.println(tableEntry);
System.out.println(tableEntry);
out_littable.flush();
out_littable.close();
//Process literal table and assign addresses to every literal in the table
LitTuple litTuple;
litTuple = littable.get(i);
litTuple.address = lc+"";
lc++;
poolTable[iPoolTabPtr] = iLitTabPtr;
iPoolTabPtr++;
return intermediateStr;
s_arr[i] = st.nextToken();
curToken = s_arr[i];
if(curToken.startsWith("=")){
//Operand is a literal
tokens[j] = str.nextToken();
insertIntoLitTab(literal,"");
else if(regAddressTable.containsKey(curToken)){
else{
//Operand is a symbol
insertIntoSymTab(curToken,"");
return intermediateStr;
if(symtable.containsKey(symbol)== true){
SymTuple s = symtable.get(symbol);
s.address = address;
}
else{
//If symbol is not present in the symbol table, create a new entry
iSymTabPtr++;
//If label is not present in the literal table, create a new entry
iLitTabPtr++;
String s,mnemonic;
BufferedReader br;
mnemonic = st.nextToken();
br.close();
regAddressTable.put("AREG", "1");
regAddressTable.put("BREG", "2");
regAddressTable.put("CREG", "3");
regAddressTable.put("DREG", "4");
poolTable[iPoolTabPtr] = iLitTabPtr;
iPoolTabPtr++;
Output:
package A2;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.StringTokenizer;
import A2.Tuple;
import A2.SymTuple;
import A2.LitTuple;
class Tuple {
int length;
Tuple() {}
mnemonic = s1;
m_class = s2;
opcode = s3;
length = Integer.parseInt(s4);
class SymTuple {
symbol = s1;
address = s2;
length = i1;
class LitTuple {
LitTuple() {}
literal = s1;
address = s2;
length = i1;
}
public class Assembler_PassTwo {
String s;
BufferedReader br;
br.close();
br = new BufferedReader(new InputStreamReader(new
FileInputStream("src/A2/littable.txt")));
br.close();
regAddressTable.put("AREG", "1");
regAddressTable.put("BREG", "2");
regAddressTable.put("CREG", "3");
regAddressTable.put("DREG", "4");
String s;
continue;
if(m_tokens[0].equalsIgnoreCase("IS")){
String opr_tokens[];
if(opr_tokens[0].equalsIgnoreCase("RG")){
else if(opr_tokens[0].equalsIgnoreCase("S")){
output_str += symtable.get(index).address +
" ";
}
else if(opr_tokens[0].equalsIgnoreCase("L")){
else if(m_tokens[0].equalsIgnoreCase("DL")){
if(m_tokens[1].equalsIgnoreCase("02")){
System.out.println(output_str);
out_pass2.println(output_str);
s_arr[i] = st.nextToken();
return s_arr;
initiallizeTables();
pass2();
Output:
package A3;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
try{
pass1();
ex.printStackTrace();
String s;
if(curToken.equalsIgnoreCase("MACRO")){
processingMacroDefinition = true;
processMacroName = true;
if(curToken.equalsIgnoreCase("MEND")){
MDT.add(mdtPtr++, s);
processingMacroDefinition = false;
continue;
if(processMacroName == true){
MNT.put(curToken, mdtPtr+"");
mntPtr++;
processMacroName = false;
processArgumentList(s_arr[1]);
MDT.add(mdtPtr,s);
mdtPtr++;
continue;
else{
System.out.println(s);
out_pass1.println(s);
input.close();
//Print MNT
while(itMNT.hasNext()){
key = (String)itMNT.next();
System.out.println(mntRow);
out_mnt.println(mntRow);
//Print MDT
System.out.println(mdtRow);
out_mdt.println(mdtRow);
}
out_pass1.close();
out_mnt.close();
out_mdt.close();
ALA.clear();
String curArg;
curArg = st.nextToken();
if(curArg.contains("=")){
curArg = curArg.substring(0,curArg.indexOf("="));
ALA.put(curArg, "#"+i);
curArg = st.nextToken();
argIndexed = ALA.get(curArg);
return argList;
s_arr[i] = st.nextToken();
return s_arr;
}
Output:
package A4;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
try{
initiallizeTables();
pass2();
}catch(Exception ex){
ex.printStackTrace();
String s;
if(MNT.containsKey(s_arr[0])){
String param;
actualParams.clear();
param = actual_params[i];
if(param.contains("=")){
param =
param.substring(param.indexOf("=")+1, param.length());
}
actualParams.add(param);
mdtPtr = Integer.parseInt(MNT.get(s_arr[0]));
String macroDef;
while(true){
macroDef = MDT.get(mdtPtr);
if(createParamArray == true){
createFormalParamList(macroDef);
createParamArray = false;
else{
if(def_tokens[0].equalsIgnoreCase("MEND")){
break;
else{
paramStr =
replaceFormalParams(def_tokens[1]);
}
System.out.println(printStr);
out_pass2.println(printStr);
mdtPtr++;
else{
System.out.println(s);
out_pass2.println(s);
input.close();
out_pass2.close();
int index;
String actualParam;
//For every parameter in the formal parameter list
index = Integer.parseInt(param_array[i]);
actualParam = actualParams.get(index-1);
else{
actualParam = formalParams.get(index-1);
return returnStr;
//First array element will be macro name and second will be argument list
argList = s_arr[1];
String param;
formalParams.clear();
for(int i=0; i <arg_array.length; i++){
param = arg_array[i];
if(param.contains("=")){
param = param.substring(param.indexOf("=")+1,
param.length());
formalParams.add(param);
BufferedReader br;
String s;
MNT.put(st.nextToken(), st.nextToken());
br.close();
//Read contents of MDT.txt and create internal data structure
if(s_arr.length == 0){
continue;
if(s_arr.length == 2){
MDT.add(index, s_arr[1]);
br.close();
s_arr[i] = st.nextToken();
}
return s_arr;
Output:
package C1;
import java.io.Closeable;
import java.util.Scanner;
class Process{
int pid;
int waitingTime;
int arrivalTime;
int burstTime;
int turnAroundTime;
int timeToComplete;
int completionTime = 0;
int priority;
this.pid = pid;
this.arrivalTime = sub;
this.burstTime = bur;
this.timeToComplete = burstTime;
this.pid = pid;
this.arrivalTime = sub;
this.burstTime = bur;
this.priority = priority;
this.timeToComplete = burstTime;
}
int n = s.nextInt();
for(int i=0;i<n;i++){
System.out.println("1. FCFS");
System.out.println("5. Exit");
case 1:
FCFS(myProcess);
break;
case 2:
SJF(myProcess);
break;
case 3:
PriorityScheduling(myProcess);
break;
case 4:
RoundRobin(myProcess);
break;
case 5:
s.close();
System.exit(1);
break;
default:
System.out.println("Incorrect Choice");
break;
s.close();
int x=0;
//Arrange processes according to their arrival time in the ascending order
Process temp;
temp = myProcess[j];
myProcess[j] = myProcess[i];
myProcess[i] = temp;
for(int i=0;i<myProcess.length;i++){
x = x+myProcess[i].burstTime;
myProcess[i].completionTime = x;
myProcess[i].turnAroundTime = myProcess[i].completionTime -
myProcess[i].arrivalTime;
myProcess[i].waitingTime = myProcess[i].turnAroundTime -
myProcess[i].burstTime;
System.out.println("turnAroundTime\tCompletion\twaitingTimeing");
System.out.println(myProcess[i].turnAroundTime+"\t\t\t"+myProcess[i].comple
tionTime+"\t\t"+myProcess[i].waitingTime);
Process curProcess;
curProcess = myProcess[0];
curProcess = myProcess[i];
break;
//Find process with minimum remaining time at every single time lap
continue;
curProcess = myProcess[i];
curProcess.timeToComplete -= 1;
completedProcesses++;
curTimeInterval++;
for(int i=0;i<myProcess.length;i++){
myProcess[i].waitingTime = myProcess[i].completionTime -
myProcess[i].arrivalTime - myProcess[i].burstTime;
myProcess[i].turnAroundTime = myProcess[i].waitingTime +
myProcess[i].burstTime;
System.out.println("turnAroundTime\tCompletion\twaitingTimeing");
System.out.println(myProcess[i].turnAroundTime+"\t\t\t"+myProcess[i].comple
tionTime+"\t\t"+myProcess[i].waitingTime);
Process temp;
temp = myProcess[j];
myProcess[j] = myProcess[i];
myProcess[i] = temp;
int x = 0;
for(int i=0;i<myProcess.length;i++){
x = x+myProcess[i].burstTime;
myProcess[i].completionTime = x;
myProcess[i].turnAroundTime = myProcess[i].completionTime -
myProcess[i].arrivalTime;
myProcess[i].waitingTime = myProcess[i].turnAroundTime -
myProcess[i].burstTime;
System.out.println("turnAroundTime\tCompletion\twaitingTimeing");
System.out.println(myProcess[i].turnAroundTime+"\t\t\t"+myProcess[i].comple
tionTime+"\t\t"+myProcess[i].waitingTime);
}
static void RoundRobin(Process myProcess[]){
// int quantum = 4;
curTimeInterval += quantum;
myProcess[i].timeToComplete -= quantum;
else{
curTimeInterval +=
myProcess[i].timeToComplete;
myProcess[i].timeToComplete = 0;
myProcess[i].completionTime =
curTimeInterval;
myProcess[i].turnAroundTime =
myProcess[i].completionTime - myProcess[i].arrivalTime;
myProcess[i].waitingTime =
myProcess[i].turnAroundTime - myProcess[i].burstTime;
completedProcesses++;
System.out.println("turnAroundTime\tCompletion\twaitingTimeing");
System.out.println(myProcess[i].turnAroundTime+"\t\t\t"+myProcess[i].comple
tionTime+"\t\t"+myProcess[i].waitingTime);
}
Output:
package A6;
import java.util.*;
allocation[i] = -1;
allocation[i] = j;
blockSize[j] -= processSize[i];
break;
}
}
if (allocation[i] != -1)
System.out.print(allocation[i] + 1);
else
System.out.print("Not Allocated");
System.out.println();
// process
allocation[i] = -1;
if (wstIdx == -1)
wstIdx = j;
wstIdx = j;
if (wstIdx != -1) {
allocation[i] = wstIdx;
blockSize[wstIdx] -= processSize[i];
if (allocation[i] != -1)
System.out.print(allocation[i] + 1);
else
System.out.print("Not Allocated");
System.out.println();
// process
Arrays.fill(allocation, -1);
while (j < m) {
allocation[i] = j;
blockSize[j] -= processSize[i];
// sets a new end point
t = (j - 1) % m;
break;
if (t == j) {
t = (j - 1) % m;
break;
j = (j + 1) % m;
if (allocation[i] != -1) {
System.out.print(allocation[i] + 1);
} else {
System.out.print("Not Allocated");
}
System.out.println("");
// process
allocation[i] = -1;
if (bestIdx == -1)
bestIdx = j;
bestIdx = j;
}
// If we could find a block for current process
if (bestIdx != -1) {
allocation[i] = bestIdx;
blockSize[bestIdx] -= processSize[i];
if (allocation[i] != -1)
System.out.print(allocation[i] + 1);
else
System.out.print("Not Allocated");
System.out.println();
while(true) {
for(int i=0;i<n;i++){
processSize[i] = priority;
int m = s.nextInt();
for(int i=0;i<m;i++){
blockSize[i] = priority;
System.out.println("5. Exit");
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
s.close();
System.out.println("successfully exit");
System.exit(1);
break;
default:
System.out.println("Incorrect Choice");
break;
// s.close();
}
Output:
package D;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.ArrayList;
//This array list will contain all the pages that are currently in memory
// This hashmap will store least recently used indexes of the pages
curPage = referenceString[i];
if (!pages.contains(curPage))
pages.add(curPage);
page_faults++;
displayPageFrames(pages, page_faults);
indexes.put(curPage, i);
// The page that is selected for replacement is the least recently used page
else
if (!pages.contains(curPage))
// The page having the lowest value of associated index will be the
least recently used page
int temp;
for(int j = 0; j < pages.size(); j++){
temp = pages.get(j);
lru = indexes.get(temp);
pageToBeReplaced = j;
indexes.remove(pages.get(pageToBeReplaced));
pages.set(pageToBeReplaced, curPage);
page_faults++;
displayPageFrames(pages, page_faults);
indexes.put(curPage, i);
return page_faults;
//This array list will contain all the pages that are currently in memory
ArrayList<Integer> pages = new ArrayList<Integer>(pageFrames);
// This hashmap will store least recently used indexes of the pages
curPage = referenceString[i];
if (!pages.contains(curPage))
pages.add(curPage);
page_faults++;
displayPageFrames(pages, page_faults);
}
// If the set is full then need to select a page to be replaced
// The page that is selected for replacement is the one that will not be
used for the longest period of time
else
if (!pages.contains(curPage))
int temp;
temp = pages.get(j);
optimal = indexes.get(temp);
pageToBeReplaced = j;
indexes.remove(pages.get(pageToBeReplaced));
pages.set(pageToBeReplaced, curPage);
page_faults++;
displayPageFrames(pages, page_faults);
return page_faults;
//Starting at the current index find the index of future use of the page
int i;
if(pages[i] == curPage){
break;
return i;
System.out.print("\n");
}
// Driver method
pageFrames = 3;
int pageFaults;
pageFaults = lru(pages);
System.out.print("\n");
pageFaults = optimal(pages);
}
Output: