sima System Description
sima is an execution environment, providing the ARINC 653 Application Programming Interface (API) and robust partitioning to operating systems that do not support these features by themselves.
ARINC 653 defines support for robust partitioning in on-board systems, in such a way that one processing unit, usually called a module, is able to host one or more avionics applications and to execute these applications independently. This can be achieved if the underlying system, often called the Module Operating System (MOS), provides separation of the avionics applications, so that:
- Each partitioned function has guaranteed access to the processor. The guarantees shall reflect the frequency as well as the execution time of the specific application;
- A failure in one partitioned function cannot cause a failure in another partitioned function.
In consequence, the partitioning approach allows reducing on-board hardware and, at the same time, facilitates verification, validation and certification.
ARINC 653 services to hosted application are provided with the Partition Operating System (POS) library implementing:
- ARINC 653 services of ARINC 653 Part 1 “Required Services”: Partition Management, Process Management, Time Management, Inter- Partition and Intra-Partition Communications, Health Monitor Services.
- A subset of ARINC 653 Part 2 “Extended Services”: Logbook System.
In sima, ARINC 653 partitions are mapped to POSIX processes and ARINC 653 processes are mapped to POSIX threads. Each sima application is, hence, linked to a single POSIX program, containing user code and data, the APEX code and data and, finally, the platform execution environment, i.e. the NPTL for Linux.
sima is designed to support real-time applications. They use the real-time programming interfaces of the POSIX thread library, like FIFO scheduling and thread priorities. Additionally, all memory used during execution is created during initialization and locked in RAM, avoiding paging and the latency penalties.