![]() |
Contur 2
Educational OS kernel simulator
|
Uniprocessor dispatcher implementation. More...
#include <dispatcher.h>
Public Member Functions | |
| Dispatcher (IScheduler &scheduler, IExecutionEngine &engine, IVirtualMemory &virtualMemory, IClock &clock, ITracer &tracer, SyscallTable &syscallTable) | |
| Constructs dispatcher from subsystem references. | |
| ~Dispatcher () override | |
| Destroys dispatcher. | |
| Dispatcher (const Dispatcher &)=delete | |
| Copy construction is disabled. | |
| Dispatcher & | operator= (const Dispatcher &)=delete |
| Copy assignment is disabled. | |
| Dispatcher (Dispatcher &&) noexcept | |
| Move-constructs dispatcher state. | |
| Dispatcher & | operator= (Dispatcher &&) noexcept |
| Move-assigns dispatcher state. | |
| 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. | |
| Result< void > | terminateProcess (ProcessId pid, Tick currentTick) override |
| Terminates a process and reclaims associated resources. | |
| void | tick () override |
| Advances dispatcher clock by one tick. | |
| std::size_t | processCount () const noexcept override |
| Number of managed processes. | |
| bool | hasProcess (ProcessId pid) const noexcept override |
| Checks whether process id is currently managed. | |
| Public Member Functions inherited from contur::IDispatcher | |
| virtual | ~IDispatcher ()=default |
Private Attributes | |
| std::unique_ptr< Impl > | impl_ |
Uniprocessor dispatcher implementation.
Coordinates scheduler selection, execution engine runs, and virtual-memory lifecycle for active processes.
Definition at line 23 of file dispatcher.h.
| contur::Dispatcher::Dispatcher | ( | IScheduler & | scheduler, |
| IExecutionEngine & | engine, | ||
| IVirtualMemory & | virtualMemory, | ||
| IClock & | clock, | ||
| ITracer & | tracer, | ||
| SyscallTable & | syscallTable ) |
Constructs dispatcher from subsystem references.
Referenced by Dispatcher(), Dispatcher(), operator=(), and operator=().
|
override |
Destroys dispatcher.
|
delete |
Copy construction is disabled.
References Dispatcher().
|
noexcept |
Move-constructs dispatcher state.
References Dispatcher().
|
nodiscardoverridevirtual |
Admits process and initializes memory/scheduler state.
Implements contur::IDispatcher.
References createProcess().
Referenced by createProcess().
|
nodiscardoverridevirtual |
Executes one dispatch cycle for selected process.
Implements contur::IDispatcher.
References dispatch().
Referenced by dispatch().
|
nodiscardoverridevirtualnoexcept |
Checks whether process id is currently managed.
Implements contur::IDispatcher.
References hasProcess().
Referenced by hasProcess().
|
delete |
Copy assignment is disabled.
References Dispatcher().
|
noexcept |
Move-assigns dispatcher state.
References Dispatcher().
|
nodiscardoverridevirtualnoexcept |
Number of managed processes.
Implements contur::IDispatcher.
References processCount().
Referenced by processCount().
|
nodiscardoverridevirtual |
Terminates a process and reclaims associated resources.
Implements contur::IDispatcher.
References terminateProcess().
Referenced by terminateProcess().
|
overridevirtual |
Advances dispatcher clock by one tick.
Implements contur::IDispatcher.
References tick().
Referenced by tick().
|
private |
Definition at line 70 of file dispatcher.h.