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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!