25 [[nodiscard]] std::string_view
name() const noexcept override;
Abstract clock interface for simulation time.
Strategy interface for scheduling algorithms.
bool shouldPreempt(const SchedulingProcessSnapshot &running, const SchedulingProcessSnapshot &candidate, const IClock &clock) const override
Returns true when running process should be preempted.
MlfqPolicy(std::vector< std::size_t > levelTimeSlices={1, 2, 4})
Constructs MLFQ policy.
const std::vector< std::size_t > & levelTimeSlices() const noexcept
Configured level time slices.
std::vector< std::size_t > levelTimeSlices_
std::string_view name() const noexcept override
Policy name.
ProcessId selectNext(const std::vector< SchedulingProcessSnapshot > &readyQueue, const IClock &clock) const override
Selects next process according to MLFQ level ordering.
ISchedulingPolicy interface for pluggable scheduling algorithms.
std::uint32_t ProcessId
Unique identifier for a process.
Immutable process view consumed by scheduling policies.