contur2
Loading...
Searching...
No Matches
contur::ISchedulingPolicy Class Referenceabstract

Strategy interface for scheduling algorithms. More...

#include <i_scheduling_policy.h>

Inheritance diagram for contur::ISchedulingPolicy:

Public Member Functions

virtual ~ISchedulingPolicy ()=default
virtual std::string_view name () const noexcept=0
 Human-readable policy name.
virtual ProcessId selectNext (const std::vector< std::reference_wrapper< const PCB > > &readyQueue, const IClock &clock) const =0
 Selects the next process ID from the ready queue.
virtual bool shouldPreempt (const PCB &running, const PCB &candidate, const IClock &clock) const =0
 Decides whether the current running process should be preempted.

Detailed Description

Strategy interface for scheduling algorithms.

Definition at line 18 of file i_scheduling_policy.h.

Constructor & Destructor Documentation

◆ ~ISchedulingPolicy()

virtual contur::ISchedulingPolicy::~ISchedulingPolicy ( )
virtualdefault

Member Function Documentation

◆ name()

virtual std::string_view contur::ISchedulingPolicy::name ( ) const
nodiscardpure virtualnoexcept

◆ selectNext()

virtual ProcessId contur::ISchedulingPolicy::selectNext ( const std::vector< std::reference_wrapper< const PCB > > & readyQueue,
const IClock & clock ) const
nodiscardpure virtual

Selects the next process ID from the ready queue.

Parameters
readyQueueNon-owning references to ready PCBs.
clockSimulation clock.
Returns
Selected process ID, or INVALID_PID if queue is empty.

Implemented in contur::FcfsPolicy, contur::HrrnPolicy, contur::MlfqPolicy, contur::PriorityPolicy, contur::RoundRobinPolicy, contur::SpnPolicy, and contur::SrtPolicy.

◆ shouldPreempt()

virtual bool contur::ISchedulingPolicy::shouldPreempt ( const PCB & running,
const PCB & candidate,
const IClock & clock ) const
nodiscardpure virtual

Decides whether the current running process should be preempted.

Parameters
runningCurrently running process.
candidateCandidate ready process chosen by selectNext().
clockSimulation clock.

Implemented in contur::FcfsPolicy, contur::HrrnPolicy, contur::MlfqPolicy, contur::PriorityPolicy, contur::RoundRobinPolicy, contur::SpnPolicy, and contur::SrtPolicy.


The documentation for this class was generated from the following file: