Class ShortestJobNextScheduler

java.lang.Object
cambio.simulator.resources.cpu.scheduling.CPUProcessScheduler
cambio.simulator.resources.cpu.scheduling.ShortestJobNextScheduler

public class ShortestJobNextScheduler extends CPUProcessScheduler
Scheduler, that schedules all entered processes by their left over work unit demand. Always retrieves the process that hast he least work left first. Always assigns the full work demand needed for a processes.
Author:
Lion Wagner
  • Constructor Details

    • ShortestJobNextScheduler

      public ShortestJobNextScheduler(String name)
  • Method Details

    • enterProcess

      public void enterProcess(CPUProcess process)
      Enters the process into the scheduling queue.
      Specified by:
      enterProcess in class CPUProcessScheduler
      Parameters:
      process - CPUProcess that is to be scheduled
      See Also:
    • retrieveNextProcess

      public org.javatuples.Pair<CPUProcess,Integer> retrieveNextProcess()
      Pulls the next CPUProcess to handle and its assigned time/work quantum.
      Specified by:
      retrieveNextProcess in class CPUProcessScheduler
      Returns:
      a pair containing the next CPUProcess to handle and its assigned time/work quantum.
      See Also:
    • retrieveNextProcessNoReschedule

      public org.javatuples.Pair<CPUProcess,Integer> retrieveNextProcessNoReschedule()
      Pulls the next CPUProcess to handle and its assigned time/work quantum.
      Prevents automatic rescheduling of the process like in round-robin scheduling.

      This method is used to offer scheduling for multithreading. But requires manual rescheduling of unfinished processes.

      Specified by:
      retrieveNextProcessNoReschedule in class CPUProcessScheduler
      Returns:
      a pair containing the next CPUProcess 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 class CPUProcessScheduler
      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 class CPUProcessScheduler
      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 class CPUProcessScheduler
    • size

      public int size()
      Counts the amount of processes that are currently scheduled.
      Specified by:
      size in class CPUProcessScheduler
      Returns:
      the amount of processes that are currently scheduled.