SPP Tool Chain
4.3 Software Implementation

The microkernel has been developed to require a minimal memory footprint, with minimal overhead. Simplicity in development, porting, and debugging have been principal factors in its design. To maintain this simplicity, we have chosen to implement a non-preemptive scheduler. All multitasking is cooperative, with the exception of communications functions. Communications are DMA and interrupt driven, to maintain maximal overlapping of communications and computation.

The kernel is responsible for three main functions:

  1. Scheduling of computations.
  2. Communications within a processor and across processors.
  3. Memory management.

The tight integration of these functions is vital to performance. One major factor in performance is communications and memory management. Communication of a buffer must not mandate a buffer copy. The kernel has been designed to obviate this need.

These three functions of the kernel will be discussed in the following sections.

Next Up: 4.3.1 Scheduling