![]() |
Contur 2
Educational OS kernel simulator
|
Scheduler host that manages process queues and policy decisions. More...
#include <scheduler.h>
Public Member Functions | |
| Scheduler (std::unique_ptr< ISchedulingPolicy > policy, ITracer &tracer) | |
| Constructs scheduler with initial policy. | |
| ~Scheduler () override | |
| Destroys scheduler. | |
| Scheduler (const Scheduler &)=delete | |
| Copy construction is disabled. | |
| Scheduler & | operator= (const Scheduler &)=delete |
| Copy assignment is disabled. | |
| Scheduler (Scheduler &&) noexcept | |
| Move-constructs scheduler state. | |
| Scheduler & | operator= (Scheduler &&) noexcept |
| Move-assigns scheduler state. | |
| Result< void > | enqueue (PCB &pcb, Tick currentTick) override |
| Enqueues process into ready queue. | |
| Result< void > | dequeue (ProcessId pid) override |
| Removes process from scheduler tracking. | |
| Result< ProcessId > | selectNext (const IClock &clock) override |
| Selects next process according to active policy. | |
| Result< void > | blockRunning (Tick currentTick) override |
| Moves running process to blocked state. | |
| Result< void > | blockProcess (ProcessId pid, Tick currentTick) override |
| Moves a specific process to blocked state. | |
| Result< void > | unblock (ProcessId pid, Tick currentTick) override |
| Moves blocked process back to ready queue. | |
| Result< void > | terminate (ProcessId pid, Tick currentTick) override |
| Terminates process and removes it from scheduler state. | |
| std::vector< ProcessId > | getQueueSnapshot () const override |
| Snapshot of ready queue process IDs. | |
| std::vector< ProcessId > | getBlockedSnapshot () const override |
| Snapshot of blocked queue process IDs. | |
| Result< void > | configureLanes (std::size_t laneCount) override |
| Configures per-core lane count for ready queues. | |
| std::size_t | laneCount () const noexcept override |
| Configured scheduler lane count. | |
| Result< void > | enqueueToLane (PCB &pcb, std::size_t laneIndex, Tick currentTick) override |
| Enqueues process into a specific lane. | |
| Result< ProcessId > | selectNextForLane (std::size_t laneIndex, const IClock &clock) override |
| Selects next process for a specific lane. | |
| Result< ProcessId > | stealNextForLane (std::size_t thiefLane, const IClock &clock) override |
| Steals work for thief lane and selects next process there. | |
| std::vector< std::vector< ProcessId > > | getPerLaneQueueSnapshot () const override |
| Snapshot of ready queues per lane. | |
| std::vector< ProcessId > | runningProcesses () const override |
| Currently running process IDs across scheduler lanes. | |
| Result< void > | setPolicy (std::unique_ptr< ISchedulingPolicy > policy) override |
| Replaces the active scheduling policy. | |
| std::string_view | policyName () const noexcept override |
| Returns active policy name. | |
| Public Member Functions inherited from contur::IScheduler | |
| virtual | ~IScheduler ()=default |
Private Attributes | |
| std::unique_ptr< Impl > | impl_ |
Scheduler host that manages process queues and policy decisions.
Scheduler owns queue state and delegates ordering/preemption logic to the active ISchedulingPolicy implementation.
Definition at line 18 of file scheduler.h.
|
explicit |
Constructs scheduler with initial policy.
| policy | Initial scheduling policy. Null policy leaves scheduler unconfigured. |
Referenced by operator=(), operator=(), Scheduler(), and Scheduler().
|
override |
Destroys scheduler.
|
delete |
Copy construction is disabled.
References Scheduler().
|
noexcept |
Move-constructs scheduler state.
References Scheduler().
|
nodiscardoverridevirtual |
Moves a specific process to blocked state.
Implements contur::IScheduler.
References blockProcess().
Referenced by blockProcess().
Moves running process to blocked state.
Implements contur::IScheduler.
References blockRunning().
Referenced by blockRunning().
|
nodiscardoverridevirtual |
Configures per-core lane count for ready queues.
Implements contur::IScheduler.
References configureLanes(), and laneCount().
Referenced by configureLanes().
Removes process from scheduler tracking.
Implements contur::IScheduler.
References dequeue().
Referenced by dequeue().
Enqueues process into ready queue.
Implements contur::IScheduler.
References enqueue().
Referenced by enqueue().
|
nodiscardoverridevirtual |
Enqueues process into a specific lane.
Implements contur::IScheduler.
References enqueueToLane().
Referenced by enqueueToLane().
|
nodiscardoverridevirtual |
Snapshot of blocked queue process IDs.
Implements contur::IScheduler.
References getBlockedSnapshot().
Referenced by getBlockedSnapshot().
|
nodiscardoverridevirtual |
Snapshot of ready queues per lane.
Implements contur::IScheduler.
References getPerLaneQueueSnapshot().
Referenced by getPerLaneQueueSnapshot().
|
nodiscardoverridevirtual |
Snapshot of ready queue process IDs.
Implements contur::IScheduler.
References getQueueSnapshot().
Referenced by getQueueSnapshot().
|
nodiscardoverridevirtualnoexcept |
Configured scheduler lane count.
Implements contur::IScheduler.
References laneCount().
Referenced by configureLanes(), and laneCount().
Copy assignment is disabled.
References Scheduler().
Move-assigns scheduler state.
References Scheduler().
|
nodiscardoverridevirtualnoexcept |
Returns active policy name.
Implements contur::IScheduler.
References policyName().
Referenced by policyName().
|
nodiscardoverridevirtual |
Currently running process IDs across scheduler lanes.
Implements contur::IScheduler.
References runningProcesses().
Referenced by runningProcesses().
Selects next process according to active policy.
Implements contur::IScheduler.
References selectNext().
Referenced by selectNext().
|
nodiscardoverridevirtual |
Selects next process for a specific lane.
Implements contur::IScheduler.
References selectNextForLane().
Referenced by selectNextForLane().
|
nodiscardoverridevirtual |
Replaces the active scheduling policy.
Implements contur::IScheduler.
References setPolicy().
Referenced by setPolicy().
|
nodiscardoverridevirtual |
Steals work for thief lane and selects next process there.
Implements contur::IScheduler.
References stealNextForLane().
Referenced by stealNextForLane().
|
nodiscardoverridevirtual |
Terminates process and removes it from scheduler state.
Implements contur::IScheduler.
References terminate().
Referenced by terminate().
|
nodiscardoverridevirtual |
Moves blocked process back to ready queue.
Implements contur::IScheduler.
References unblock().
Referenced by unblock().
|
private |
Definition at line 95 of file scheduler.h.