Class RoundRobinScheduler
public final class RoundRobinScheduler extends CPUProcessScheduler
Algorithm developed by Ram Matarneh: Self-Adjustment Time Quantum in Round Robin Algorithm Depending on Burst Time of the Now Running Processes
Executes a round robin scheduling where the assigned work quantum is the median of all current left over work demands of all entered processes. The quantum is updated each time a new processes enters or all processes had a round with the current quantum. This provides a shorter average waiting and turn-around time than the fixed quantum round robin. Further, this round robin scheduler adjust dynamically to demand sizes that can heavily vary between experiments/architecture descriptions.
Keeps processes in order (first come first serve). And ensures fairness.
- Author:
- Lion Wagner
- See Also:
- SARR algorithm
-
Field Summary
Fields inherited from class de.rss.fachstudie.MiSim.resources.cpu.scheduling.CPUProcessScheduler
reporter -
Constructor Summary
Constructors Constructor Description RoundRobinScheduler(String name) -
Method Summary
Modifier and Type Method Description voidclear()Clears all current processes from the schedulervoidenterProcess(CPUProcess process)Enters the process into the scheduling queue.intgetTotalWorkDemand()booleanhasThreadsToSchedule()org.javatuples.Pair<CPUProcess,Integer>retrieveNextProcess()Pulls the next Process to handle and its assigned time/work quantum.org.javatuples.Pair<CPUProcess,Integer>retrieveNextProcessNoReschedule()Interface used by Multi Level Feedback queues.intsize()
-
Constructor Details
-
RoundRobinScheduler
-
-
Method Details
-
enterProcess
Enters the process into the scheduling queue.- Specified by:
enterProcessin classCPUProcessScheduler- Parameters:
process- Process that is to be scheduled- See Also:
CPUProcess
-
retrieveNextProcess
Pulls the next Process to handle and its assigned time/work quantum.- Specified by:
retrieveNextProcessin classCPUProcessScheduler- Returns:
- a pair containing the next process to handle and its assigned time/work quantum.
- See Also:
CPUProcess
-
retrieveNextProcessNoReschedule
Interface used by Multi Level Feedback queues.Does not put the process back into the Queue.
- Specified by:
retrieveNextProcessNoReschedulein classCPUProcessScheduler- Returns:
- a pair containing the next process to handle and its assigned time quantum.
- See Also:
CPUProcess
-
hasThreadsToSchedule
public boolean hasThreadsToSchedule()- Specified by:
hasThreadsToSchedulein classCPUProcessScheduler- Returns:
- true if there is a thread ready to schedule, false otherwise
-
getTotalWorkDemand
public int getTotalWorkDemand()- Specified by:
getTotalWorkDemandin classCPUProcessScheduler- Returns:
- the sum of the demand remainder of all processes that are currently in queue.
-
clear
public void clear()Clears all current processes from the scheduler- Specified by:
clearin classCPUProcessScheduler
-
size
public int size()- Specified by:
sizein classCPUProcessScheduler
-