Dispatcher(Dispatcher &&) noexcept
void tick() override
Advances dispatcher clock by one tick.
std::unique_ptr< Impl > impl_
bool hasProcess(ProcessId pid) const noexcept override
Checks whether process id is currently managed.
Dispatcher(IScheduler &scheduler, IExecutionEngine &engine, IVirtualMemory &virtualMemory, IClock &clock)
Constructs dispatcher from subsystem references.
Dispatcher & operator=(const Dispatcher &)=delete
Result< void > createProcess(std::unique_ptr< ProcessImage > process, Tick currentTick) override
Admits process and initializes memory/scheduler state.
Result< void > dispatch(std::size_t tickBudget) override
Executes one dispatch cycle for selected process.
std::size_t processCount() const noexcept override
Number of managed processes.
Dispatcher(const Dispatcher &)=delete
Result< void > terminateProcess(ProcessId pid, Tick currentTick) override
Terminates a process and reclaims associated resources.
Abstract clock interface for simulation time.
Interface for process lifecycle dispatch orchestration.
Abstract execution engine interface.
Scheduler abstraction managing process state queues.
Abstract interface for virtual memory management.
Full in-memory representation of a process.
A result type that holds either a success value of type T or an ErrorCode.
IDispatcher interface for process lifecycle orchestration.
std::uint64_t Tick
Simulation clock tick counter.
std::uint32_t ProcessId
Unique identifier for a process.