24 [[nodiscard]] std::string_view
name() const noexcept override;
28 const std::vector<std::reference_wrapper<const
PCB>> &readyQueue, const
IClock &clock
35 [[nodiscard]] std::
size_t timeSlice() const noexcept;
Abstract clock interface for simulation time.
Strategy interface for scheduling algorithms.
Process Control Block — stores all metadata for a single process.
std::string_view name() const noexcept override
Policy name.
ProcessId selectNext(const std::vector< std::reference_wrapper< const PCB > > &readyQueue, const IClock &clock) const override
Selects the next process in round-robin queue order.
std::size_t timeSlice() const noexcept
Configured time slice.
RoundRobinPolicy(std::size_t timeSlice)
Constructs Round Robin policy.
bool shouldPreempt(const PCB &running, const PCB &candidate, const IClock &clock) const override
Returns true if running process exhausted its slice.
ISchedulingPolicy interface for pluggable scheduling algorithms.
std::uint32_t ProcessId
Unique identifier for a process.