Everyman kernel
The Everyman kernel is a minimalistic kernel designed to support hard real-time applications. The kernel is built from three parts: scheduling, resource access, and communication. Each part is implemented with an algorithm that does not lead to blocking. The removal of any blocking leads to predictable execution times and it is this which makes the kernel suitable for hard real-time systems development.
Scheduling is implemented with either the Earliest Deadline First or the Deadline Monotonic algorithms. Resource access, or Concurrency control, is achieved with the Stack Resource Policy which eliminates any form of run-time unbounded blocking including deadlock and livelock. Furthermore, the use of this algorithm also means that all of the processes can share the same stack which reduces the system's memory footprint. Inter-process communication is implemented with Cyclical Asynchronous Buffers - a one-to-many communications mechanism which never blocks.
The kernel is designed to be simple enough that a single programmer can understand the entire system. The kernel is effectively one file containing 22 C functions. Most kernel code is written in C and is in places 32-bit specific. To port the kernel to a new platform requires the implementation of at least five functions in assembly language. The Everyman kernel can be run in Unix user space and, along with POSIX.1b real-time scheduling, the kernel can be used to implement a real-time threads package.
See also
- Real-time operating system
External links
- The Everyman kernel official announcement