import java.util.LinkedList; public class FCFS { private int timeStep = 0; private int current = 0; private int disp; private int timeLastDisp = -1; LinkedList processList = new LinkedList<>(); LinkedList waitingQueue = new LinkedList<>(); LinkedList newProcesses = new LinkedList<>(); //Constructors public FCFS(int dispInput, LinkedList processListInput) { disp = dispInput; processList = processListInput; } private void checkForArrivals() { for(int i = 0; i< processList.size(); i++) { if((processList.get(i).getArrive()<=timeStep) && (processList.get(i).getArrive() > timeLastDisp)) { newProcesses.add(processList.get(i)); } else { } } for(int i =0; i < newProcesses.size(); i++) { waitingQueue.add(newProcesses.get(i)); } newProcesses.clear(); } public void runDispatch() { System.out.println("FCFS:"); do { timeStep+=disp; checkForArrivals(); timeLastDisp = timeStep; runProcess(waitingQueue.removeFirst()); }while(waitingQueue.size()!=0); //... printResults(); } private void runProcess(Process input) { int startTime = timeStep; int endTime = -1; System.out.println("T"+startTime+": "+input.getId()); for(int i = 0; i < input.getExecSize(); i++) { timeStep++; } endTime = timeStep; input.saveTurnTime(endTime-input.getArrive()); input.saveWaitTime(startTime-input.getArrive()); } public void printResults() { System.out.println("\nProcess \tTurnaround Time \tWaiting Time"); for (int i = 0; i < processList.size(); i++) { System.out.print(processList.get(i).getId()+"\t\t"); System.out.print(processList.get(i).getTurnTime()+"\t\t\t"); System.out.print(processList.get(i).getWaitTime()+"\n"); } } }