70 [[nodiscard]] std::
size_t laneCount() const noexcept override;
91 [[nodiscard]] std::string_view
policyName() const noexcept override;
Abstract clock interface for simulation time.
Scheduler abstraction managing process state queues.
Strategy interface for scheduling algorithms.
Tracer interface used by kernel subsystems.
Process Control Block — stores all metadata for a single process.
A result type that holds either a success value of type T or an ErrorCode.
Scheduler & operator=(const Scheduler &)=delete
Copy assignment is disabled.
std::vector< ProcessId > getBlockedSnapshot() const override
Snapshot of blocked queue process IDs.
Result< void > enqueueToLane(PCB &pcb, std::size_t laneIndex, Tick currentTick) override
Enqueues process into a specific lane.
Result< void > blockRunning(Tick currentTick) override
Moves running process to blocked state.
Scheduler(Scheduler &&) noexcept
Move-constructs scheduler state.
Scheduler(const Scheduler &)=delete
Copy construction is disabled.
Result< void > dequeue(ProcessId pid) override
Removes process from scheduler tracking.
std::size_t laneCount() const noexcept override
Configured scheduler lane count.
Scheduler(std::unique_ptr< ISchedulingPolicy > policy, ITracer &tracer)
Constructs scheduler with initial policy.
Result< ProcessId > selectNext(const IClock &clock) override
Selects next process according to active policy.
std::unique_ptr< Impl > impl_
std::vector< ProcessId > getQueueSnapshot() const override
Snapshot of ready queue process IDs.
Result< ProcessId > stealNextForLane(std::size_t thiefLane, const IClock &clock) override
Steals work for thief lane and selects next process there.
Result< void > blockProcess(ProcessId pid, Tick currentTick) override
Moves a specific process to blocked state.
Result< ProcessId > selectNextForLane(std::size_t laneIndex, const IClock &clock) override
Selects next process for a specific lane.
std::string_view policyName() const noexcept override
Returns active policy name.
~Scheduler() override
Destroys scheduler.
std::vector< std::vector< ProcessId > > getPerLaneQueueSnapshot() const override
Snapshot of ready queues per lane.
Result< void > terminate(ProcessId pid, Tick currentTick) override
Terminates process and removes it from scheduler state.
Result< void > configureLanes(std::size_t laneCount) override
Configures per-core lane count for ready queues.
Result< void > setPolicy(std::unique_ptr< ISchedulingPolicy > policy) override
Replaces the active scheduling policy.
Result< void > unblock(ProcessId pid, Tick currentTick) override
Moves blocked process back to ready queue.
Result< void > enqueue(PCB &pcb, Tick currentTick) override
Enqueues process into ready queue.
std::vector< ProcessId > runningProcesses() const override
Currently running process IDs across scheduler lanes.
std::uint64_t Tick
Simulation clock tick counter.
std::uint32_t ProcessId
Unique identifier for a process.