Hypervisor-based approach at XANDAR
A common situation in the systems development process is to have a plenty of different applications with their own safety and security requirements. In the same way, the application integration with various critical levels is not an unusual case. The issue in both cases is the same, the error propagation, it’s important to ensure that an unsafe part of the system doesn’t spread any kind of error to the critical zone. The approach to avoid those problems is the time-space partitioning.
The mixed criticality systems (the systems with different levels of criticality) have to separate the different parts in order to ensure the isolation between them over the same platform. Virtualization is the mechanism to achieve such separation. The hypervisor is the solution that implements the partitioning system and ensures the isolation.
- Spatial isolation: refers to the definition of memory areas in order to control the applications access to it, by this way the hypervisor ensures that any memory error doesn’t propagate to the other memory areas.
- Temporal isolation: means that the execution time is managed to change between the applications in a safe way switching between their contexts.
XtratuM Next Generation (XNG) hypervisor provides a partitioned solution, using para-virtualization. XNG allows mixed criticality implementations through MMU/MPU mechanisms, to the spatial isolation, and a fixed cyclic scheduler to the temporal isolation. Also it provides ARINC-653-like health monitoring services, which detects failures and implements mechanisms for fault containment and inter-partition communication. The applications can be implemented over XNG as bare-metal with XRE (minimal execution environment) and the supported GuestOS; in any case, the strong time-space isolation is ensured by XNG.
A hypervisor-based approach is essential to the XANDAR toolchain. Apart from the mixed criticality implementation explained above, the partition-based systems help to define common patterns in the development process. The virtualization, implemented at the hypervisor, works as an abstraction layer between the platform hardware and the high-level software, simplifying the software development process.