Dispatcher(Dispatcher &&) noexcept
Move-constructs dispatcher state.
void tick() override
Advances dispatcher clock by one tick.
~Dispatcher() override
Destroys dispatcher.
std::unique_ptr< Impl > impl_
bool hasProcess(ProcessId pid) const noexcept override
Checks whether process id is currently managed.
Dispatcher & operator=(const Dispatcher &)=delete
Copy assignment is disabled.
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(IScheduler &scheduler, IExecutionEngine &engine, IVirtualMemory &virtualMemory, IClock &clock, ITracer &tracer, SyscallTable &syscallTable)
Constructs dispatcher from subsystem references.
Dispatcher(const Dispatcher &)=delete
Copy construction is disabled.
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.
Tracer interface used by kernel subsystems.
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.
Dispatch table mapping SyscallId to handler functions.
IDispatcher interface for process lifecycle orchestration.
std::uint64_t Tick
Simulation clock tick counter.
std::uint32_t ProcessId
Unique identifier for a process.