Class RoundRobinScheduler
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:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Clears all current processes from the scheduler.void
enterProcess
(CPUProcess process) Enters the process into the scheduling queue.int
Calculates the sum of all scheduled process's demand remainders.boolean
Checks whether this scheduler currently has processes ready to be retrieved from scheduling.org.javatuples.Pair<CPUProcess,
Integer> Pulls the next Process to handle and its assigned time/work quantum.org.javatuples.Pair<CPUProcess,
Integer> Interface used by Multi Level Feedback queues.int
size()
Counts the amount of processes that are currently scheduled.
-
Constructor Details
-
RoundRobinScheduler
-
-
Method Details
-
enterProcess
Enters the process into the scheduling queue.- Specified by:
enterProcess
in classCPUProcessScheduler
- Parameters:
process
- Process that is to be scheduled- See Also:
-
retrieveNextProcess
Pulls the next Process to handle and its assigned time/work quantum.- Specified by:
retrieveNextProcess
in classCPUProcessScheduler
- Returns:
- a pair containing the next process to handle and its assigned time/work quantum.
- See Also:
-
retrieveNextProcessNoReschedule
Interface used by Multi Level Feedback queues.Does not put the process back into the Queue.
- Specified by:
retrieveNextProcessNoReschedule
in classCPUProcessScheduler
- Returns:
- a pair containing the next process to handle and its assigned time quantum.
- See Also:
-
hasProcessesToSchedule
public boolean hasProcessesToSchedule()Checks whether this scheduler currently has processes ready to be retrieved from scheduling.- Specified by:
hasProcessesToSchedule
in classCPUProcessScheduler
- Returns:
- true if there is a process ready to schedule, false otherwise
-
getTotalWorkDemand
public int getTotalWorkDemand()Calculates the sum of all scheduled process's demand remainders.- Specified by:
getTotalWorkDemand
in 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:
clear
in classCPUProcessScheduler
-
size
public int size()Counts the amount of processes that are currently scheduled.- Specified by:
size
in classCPUProcessScheduler
- Returns:
- the amount of processes that are currently scheduled.
-