Question: public void runScheduler() { int currentTime = 0; int totalWaitingTime = 0; int totalTurnaroundTime = 0; int numOfProcesses = processes.size(); while (!processes.isEmpty()) { ProcessControlBlock currentProcess
public void runScheduler() { int currentTime = 0; int totalWaitingTime = 0; int totalTurnaroundTime = 0; int numOfProcesses = processes.size();
while (!processes.isEmpty()) { ProcessControlBlock currentProcess = processes.remove(0); currentTime = Math.max(currentTime, currentProcess.arrivalTime);
if (currentProcess.remainingTime <= QUANTUM_Q0) { currentTime += currentProcess.remainingTime; currentProcess.remainingTime = 0; } else { currentTime += QUANTUM_Q0; currentProcess.remainingTime -= QUANTUM_Q0; queues.get(1).offer(currentProcess); } for (ProcessControlBlock process : processes) { process.waitingTime = currentTime - process.arrivalTime - process.burstTime; totalWaitingTime += process.waitingTime; } while (!queues.get(1).isEmpty()) { currentProcess = queues.get(1).poll();
if (currentProcess.remainingTime <= QUANTUM_Q1) { currentTime += currentProcess.remainingTime; currentProcess.remainingTime = 0; } else { currentTime += QUANTUM_Q1; currentProcess.remainingTime -= QUANTUM_Q1; queues.get(2).offer(currentProcess); } for (ProcessControlBlock process : processes) { process.waitingTime = currentTime - process.arrivalTime - process.burstTime; totalWaitingTime += process.waitingTime; } } while (!queues.get(2).isEmpty()) { currentProcess = queues.get(2).poll(); currentTime += currentProcess.remainingTime; currentProcess.remainingTime = 0; currentProcess.turnaroundTime = currentTime - currentProcess.arrivalTime; totalTurnaroundTime += currentProcess.turnaroundTime; } }
float averageWaitingTime = (float) totalWaitingTime / numOfProcesses; float averageTurnaroundTime = (float) totalTurnaroundTime / numOfProcesses;
System.out.println("Response time: " + currentTime + " milliseconds"); System.out.println("Throughput: " + (float) numOfProcesses / currentTime * 1000 + " processes/second"); System.out.println("Average waiting time: " + averageWaitingTime + " milliseconds"); System.out.println("Average turnaround time: " + averageTurnaroundTime + " milliseconds"); }
please can you explain this function step by step
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
