Class SingleQueueStrategy
java.lang.Object
edu.kit.ipd.sdq.pcm.simulation.scheduler.exact.queueing.strategies.SingleQueueStrategy
- All Implemented Interfaces:
IQueueingStrategy
-
Constructor Summary
ConstructorDescriptionSingleQueueStrategy
(IRunQueue runQueue, IProcessSelector processSelector, IInstanceSelector idealInstanceSelector) -
Method Summary
Modifier and TypeMethodDescriptionvoid
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) getNextProcessFor
(IResourceInstance instance) Returns the next executable process for the given instance.int
getQueueLengthFor
(SimResourceInstance simResourceInstance) 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
runningOn
(IActiveProcess process) void
setRunningOn
(IActiveProcess process, IResourceInstance instance) Sets the process as executing on the given instance.void
terminateProcess
(IActiveProcess process)
-
Constructor Details
-
SingleQueueStrategy
public SingleQueueStrategy(IRunQueue runQueue, IProcessSelector processSelector, IInstanceSelector idealInstanceSelector)
-
-
Method Details
-
getNextProcessFor
Description copied from interface:IQueueingStrategy
Returns the next executable process for the given instance.- Specified by:
getNextProcessFor
in interfaceIQueueingStrategy
-
registerProcess
- Specified by:
registerProcess
in interfaceIQueueingStrategy
-
addProcess
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
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
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
- Specified by:
containsPending
in interfaceIQueueingStrategy
- Parameters:
process
- Process looked for.- Returns:
- True, if the process is in a pending queue of the strategy.
-
removeRunning
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
- 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
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
Description copied from interface:IQueueingStrategy
True, if the given resource has no running or pending jobs, otherwise false.- Specified by:
isIdle
in interfaceIQueueingStrategy
-
forkProcess
- Specified by:
forkProcess
in interfaceIQueueingStrategy
-
fromRunningToWaiting
- Specified by:
fromRunningToWaiting
in interfaceIQueueingStrategy
-
fromWaitingToReady
public void fromWaitingToReady(IActiveProcess process, IResourceInstance current, boolean in_front_after_waiting) - Specified by:
fromWaitingToReady
in interfaceIQueueingStrategy
-
terminateProcess
- Specified by:
terminateProcess
in interfaceIQueueingStrategy
-
onSleep
- 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
- Specified by:
getQueueLengthFor
in interfaceIQueueingStrategy
-