The Kernel

AMP Scheduler,
CAS Queues, CPS Tasks

Features

Asymmetric Multiprocessing

The Kernel uses AMP approach for schedulers setup. It has dedicated core for Console and WebSocket maintenance channels, dedicated IO CPU cores for data transfer and other cores for task processing. You may statically bind the range of tasks to specific cores, completely avoiding CPU context switching in runtime. The Kernel comes with configuration language where you specify CPU-task affinity during boot.

Low-latency

All tasks or reactors should strive to use limited range of addresses (L1/L2 size when possible) for data cache saturation. To avoid cache collision between core threads the Kernel could be configured to parallel processing non-intersected address ranges.

Multicursor

The heart of the zero-copy low-latency transport system is the set of continuous preallocated ring buffers (called sectors). By the direction there are multi-reader cursor and multi-writer cursor, selecting the direction of data flow. One can specify that cursors should not intersect or be beyond limits of predefined sectors. That is how we allow providing multiple access for several consumers without actual copying the message and using only CAS cursor shifting.

Ractors

Each CPU core can run one of three type of reactors that run Task, Timer, and IO loopers. There are priority queues for Task reactor and interval trees of Timer reactor. The common way to interact with tasks is to use queues that are implemented as circular buffers with CAS cursors. But it is also possible to direct communication with any given reactor by sending InterCore Bus system messages. Such messages are spawn and timer events. You can extend InterCore bus protocol to send reactor-wide events applying custom filters to schedulable streams.

IO Reactor

The network server is an IO reactor that can handle multiple connections and based on Linux/BSD/Windows polling flavors.

Timer Reactor

Different types of schedulable entities like Timers, Tasks, and IO events has a different type of selectors that provides prescheduled selection of poll-able sequence.

Task Reactor

Task reactor is able to run Rust and O-CPS Tasks. O-CPS Task can be two types: Infinite and Finite. The sample of an inifinite task is a zero task spawned during Boot. It configures the Host VM and is always available from both WebSockets and Console.