Class SingleQueueStrategy
- java.lang.Object
-
- edu.kit.ipd.sdq.pcm.simulation.scheduler.exact.queueing.strategies.SingleQueueStrategy
-
- All Implemented Interfaces:
IQueueingStrategy
public class SingleQueueStrategy extends Object implements IQueueingStrategy
-
-
Constructor Summary
Constructors Constructor Description SingleQueueStrategy(IRunQueue runQueue, IProcessSelector processSelector, IInstanceSelector idealInstanceSelector)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activelyBalance(IResourceInstance instance)
Depending on the underlying implementation the load is balanced between the resource instances.void
addProcess(IActiveProcess process, IResourceInstance current, boolean inFront)
Adds a process to the queue(s).boolean
containsPending(IActiveProcess process)
void
forkProcess(IActiveProcess process, IResourceInstance current, boolean inFront)
void
fromRunningToWaiting(IActiveProcess process)
void
fromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting)
IActiveProcess
getNextProcessFor(IResourceInstance instance)
Returns the next executable process for the given instance.int
getQueueLengthFor(SimResourceInstance simResourceInstance)
List<IActiveProcess>
getStarvingProcesses(IResourceInstance instance, double starvationLimit)
boolean
isIdle(IResourceInstance instance)
True, if the given resource has no running or pending jobs, otherwise false.void
onSleep(IResourceInstance lastInstance)
void
registerProcess(IActiveProcess process, IResourceInstance current)
boolean
removePendingProcess(IActiveProcess process)
Removes at the pending queues of the queuing strategy and tries to remove the process there.void
removeRunning(IActiveProcess process)
Removes a process from the running list of the instance.void
resetStarvationInfo()
IResourceInstance
runningOn(IActiveProcess process)
void
setRunningOn(IActiveProcess process, IResourceInstance instance)
Sets the process as executing on the given instance.void
terminateProcess(IActiveProcess process)
-
-
-
Constructor Detail
-
SingleQueueStrategy
public SingleQueueStrategy(IRunQueue runQueue, IProcessSelector processSelector, IInstanceSelector idealInstanceSelector)
-
-
Method Detail
-
getNextProcessFor
public IActiveProcess getNextProcessFor(IResourceInstance instance)
Description copied from interface:IQueueingStrategy
Returns the next executable process for the given instance.- Specified by:
getNextProcessFor
in interfaceIQueueingStrategy
-
registerProcess
public void registerProcess(IActiveProcess process, IResourceInstance current)
- Specified by:
registerProcess
in interfaceIQueueingStrategy
-
addProcess
public void addProcess(IActiveProcess process, IResourceInstance current, boolean inFront)
Description copied from interface:IQueueingStrategy
Adds a process to the queue(s).- Specified by:
addProcess
in interfaceIQueueingStrategy
inFront
- If true, the process is added at the beginning of its queue, otherwise at its end.
-
activelyBalance
public void activelyBalance(IResourceInstance instance)
Description copied from interface:IQueueingStrategy
Depending on the underlying implementation the load is balanced between the resource instances.- Specified by:
activelyBalance
in interfaceIQueueingStrategy
- Parameters:
instance
- Instance initiating the load balance.
-
removePendingProcess
public boolean removePendingProcess(IActiveProcess process)
Description copied from interface:IQueueingStrategy
Removes at the pending queues of the queuing strategy and tries to remove the process there.- Specified by:
removePendingProcess
in interfaceIQueueingStrategy
- Parameters:
process
- Process that should be removed.- Returns:
- True, if the process was successfully removed. False, if the process was not found in the pending queues.
-
containsPending
public boolean containsPending(IActiveProcess process)
- Specified by:
containsPending
in interfaceIQueueingStrategy
- Parameters:
process
- Process looked for.- Returns:
- True, if the process is in a pending queue of the strategy.
-
removeRunning
public void removeRunning(IActiveProcess process)
Description copied from interface:IQueueingStrategy
Removes a process from the running list of the instance.- Specified by:
removeRunning
in interfaceIQueueingStrategy
- Parameters:
process
- Process of interest.
-
runningOn
public IResourceInstance runningOn(IActiveProcess process)
- Specified by:
runningOn
in interfaceIQueueingStrategy
- Parameters:
process
- Process of interest.- Returns:
- Returns the resource instance the process is currently running on. NULL if the process is not assigned to a resource.
-
setRunningOn
public void setRunningOn(IActiveProcess process, IResourceInstance instance)
Description copied from interface:IQueueingStrategy
Sets the process as executing on the given instance. In order for this operation to be successful, the process must be in ready state and in the a pending queue of the strategy.- Specified by:
setRunningOn
in interfaceIQueueingStrategy
- Parameters:
process
- Process that shall be executed.instance
- Target instance for the process.
-
isIdle
public boolean isIdle(IResourceInstance instance)
Description copied from interface:IQueueingStrategy
True, if the given resource has no running or pending jobs, otherwise false.- Specified by:
isIdle
in interfaceIQueueingStrategy
-
forkProcess
public void forkProcess(IActiveProcess process, IResourceInstance current, boolean inFront)
- Specified by:
forkProcess
in interfaceIQueueingStrategy
-
fromRunningToWaiting
public void fromRunningToWaiting(IActiveProcess process)
- Specified by:
fromRunningToWaiting
in interfaceIQueueingStrategy
-
fromWaitingToReady
public void fromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting)
- Specified by:
fromWaitingToReady
in interfaceIQueueingStrategy
-
terminateProcess
public void terminateProcess(IActiveProcess process)
- Specified by:
terminateProcess
in interfaceIQueueingStrategy
-
onSleep
public void onSleep(IResourceInstance lastInstance)
- Specified by:
onSleep
in interfaceIQueueingStrategy
-
getStarvingProcesses
public List<IActiveProcess> getStarvingProcesses(IResourceInstance instance, double starvationLimit)
- Specified by:
getStarvingProcesses
in interfaceIQueueingStrategy
-
resetStarvationInfo
public void resetStarvationInfo()
- Specified by:
resetStarvationInfo
in interfaceIQueueingStrategy
-
getQueueLengthFor
public int getQueueLengthFor(SimResourceInstance simResourceInstance)
- Specified by:
getQueueLengthFor
in interfaceIQueueingStrategy
-
-