The modern approach to the development of critical applications (for example, in aerospace) follows the Integrated Modular Avionics (IMA) paradigm. The main tenet of IMA is to “integrate” software components, so that different functionalities can share the same hardware resources, in a manner that tightly controls the sources of interference among them, thereby ensuring adequate levels of isolation.
Isolation concerns arise from three complementary dimensions: temporal, spatial and fault.
In modern aerospace applications, such isolation is achieved through partitioning, using static resource allocation, with an architecture known as Time-and-Space Partitioning (TSP).
TSP systems frequently suffer from low utilization arising from the need (or the prevalent practice) to add cautionary margins to partitions’ budgets.
In real-world applications, these margins can reach up to 50% of the estimated execution time of the tasks within partitions.
Alternative approaches to TSP, known as Mixed-Criticality Systems (MCS), therefore arose to attain higher schedulable utilization.
The MCS model allows tasks at different criticality levels to be executed without strict partitioning, while granting that, on the occurrence of transient overloads, high-criticality tasks will be granted privileged (and assured) status over and above low-criticality tasks.
State-of-the-art MCS scheduling policies, such as Adaptive Mixed Criticality (AMC), employ a runtime monitor to detect the occurrence of an overload situation, and trigger a CPU mode change, where only high-criticality tasks are allowed to use the CPU.
Current MCS solutions do not address space isolation, which is an essential requirement for safety-critical applications. Without that capability, MCS will be unable to supplant TSP.
[Bottaro & Vardanega, 2022] provided a runtime library for the Ada programming language adapted to support a dual-core semi-partitioned variant of the AMC MCS scheduler for use with Ada Ravenscar applications running on multicore processor targets.
The cited work shows the ability to yield a higher schedulable and guaranteed utilization than a functionally equivalent TSP implementation.
As per the practice in MCS research, that work focused exclusively on temporal isolation, ignoring spatial isolation.
In the work presented in this paper, we extended Bottaro’s runtime with mechanisms that cater for spatial isolation.
Our extended runtime provides three fundamental features in the regard of space isolation:
(1) An ownership mechanism similar to the Rust programming language, which allows using dynamic memory safely for inter-partition communications.
(2) Disciplined use of Ada packages and idiomatic programming to restrict visibility in a way that yields an equivalent of TSP partitioning, so that space isolation can be asserted statically, at compile time.
(3) An improved runtime scheduler that causes deferred suspension for low-criticality tasks that should be frozen on a mode change, when they still had to commit an exclusive write or read an inter-partition message.
We explored the behavior of our extended runtime against synthetically-generated tasksets, to confirm its ability to preserve time and space isolation, and to measure the runtime overhead of the associated mechanisms.
This work demonstrates that MCS runtimes can support both spatial and temporal isolation, providing sufficient guarantees for use in real-world aerospatial applications.
Future work along this line of research may investigate two further directions: (1) the provision of fault-handling capabilities; (2) the exploration of inter-partition communication mechanisms and patterns that extend across cores.