WG02: CoreProcessScheduler: The Application Processor System.
Abstract
NeKernel targets multiple cores, thus the need of an Application Processors Subsystem.
Methodology: The APS architecture.
A few possibilites with that architecture:
- Map cores to a HW Thread structure, A C++ structure.
- Make it run our task when it is registered by
mp_register_task - We keep the thread ID from the HTS (HardwareThreadScheduler) inside the HW Thread.
- And we plug that into the higher level of the scheduler architecture.
This way the design is modular, easy to extend, and easily debuggable.
Implementation: mp_register_task C++ function.
EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ProcessID thrdid);
Rationale: Meta-scheduling.
Meta-scheduling governs how scheduling backends run tasks using a common protocol shared among them. In this case CPS shares the protocol for UPS and KTS.
The APS makes task scheduling and affinity much easier to implement, thanks to Kernel C++ as well, we can make it safer and more maintable in the long run.