HyperSSE: Cross-Domain Static Analysis of Partitioned Real-Time Hypervisor Systems
Abstract
Timing analysis for embedded real-time systems is crucial to guarantee the correct behavior and to calculate the Worst-Case Response Time (WCRT) of safety-critical applications. With the increasing requirements of such systems in automotive, industrial or avionic industries, consolidation of multiple real-time and general-purpose operating systems on a single high-performance Multiprocessor System-on-Chip (MPSoC) platform using Static Partitioning Hypervisors is becoming more prevalent. Although the strong separation is well suited to reduce interference between isolated domains in such mixed-criticality systems, cross-domain interactions must still be considered in real-time analysis. Previous work has focused on dynamic monitoring and enforcement of timing constraints in virtualized environments.
In this paper, we present HyperSSE, the first approach for the static analysis of cross-domain interactions in hypervisor-based real-time systems. By hierarchically combining existing domain-local static analyses, and synchronizing the control flow at cross-domain interactions, we enable control-flow–sensitive whole-platform analysis including multiple real-time domains. Using abstract task models, this approach can integrate a coarser analysis of general-purpose operating systems, accelerators, and coprocessors with the precise timing analysis. We demonstrate the applicability of HyperSSE in an automotive case study with mixed-criticality software stacks running on Xen in a static partitioning configuration. The resulting Hypervisor State Transition Graph (HSTG) exposes deep knowledge about the platform interactions, enabling cross-domain timing analysis with reduction of pessimistic WCRT calculations. Additionally, HyperSSE can be used for placement optimizations for better predictability, verification of critical interaction paths, and is the foundation for further platform-level analyses, such as analysis of implicit interactions through transparent resource sharing.
Keywords and phrases:
Static Analysis, Hypervisor, Real-Time Operating System, Cross-DomainCopyright and License:
and Daniel Lohmann; licensed under Creative Commons License CC-BY 4.0
2012 ACM Subject Classification:
Computer systems organization Real-time operating systems ; Software and its engineering Automated static analysisAcknowledgements:
We want to thank the reviewers and the shepherd for their valuable feedback and suggestions to this paper.Funding:
This work was partly supported by the German Research Foundation (DFG) under grant no. LO 1719/4-1Supplementary Material:
Software (ECRTS 2026 Artifact Evaluation approved artifact): https://doi.org/10.4230/DARTS.12.2.2Editor:
Angeliki KritikakouSeries and Publisher:
Leibniz International Proceedings in Informatics, Schloss Dagstuhl – Leibniz-Zentrum für Informatik
1 Introduction
Since the beginning of embedded computing, the demand for higher computational power has risen alongside increasingly advanced applications. For example, in the automotive industry, the number of electronic control units in a single vehicle has been continuously increasing to over 150 connected control units [45]. To cope with the increased complexity of such a distributed system of systems, a paradigm shift in system design has occurred toward the consolidation of these electronic control units into single, high-performance onboard computers using SPHs [22, 31]. In contrast to traditional hypervisors, such SPH do not multiplex CPUs or peripherals, but statically partition the system into isolated virtual machines with exclusive access to their assigned resources, called domains. With exclusive passthrough, hardware-virtualized or paravirtualized devices, the number of hypervisor traps or other unintended hypervisor overhead is minimized [34].
For embedded systems in avionics, automotive, and industrial applications, non-functional properties such as Space, Weight, Power and Cost (SWaP-C), strict isolation between multiple applications, and especially correct timing behavior are critical requirements. For example, in a hard real-time system like the adaptive cruise control driver assistance system in Figure 1, WCRT must be bounded to guarantee timely responses to highly critical actions, such as emergency braking. Such applications can be integrated into mixed-criticality platforms, where multiple real-time and general-purpose applications with different criticality levels coexist on the same hardware platform, while their timing guarantees must be retained. We will use this case study throughout the paper to illustrate the problem and our approach to static interaction analysis of hypervisor-based real-time systems.
Real-Time Operating Systems (or specifications thereof) are widely used to reduce development costs, improve portability, and enable cooperation of multiple applications from various vendors within a single system. Prominent industry-specific examples include the automotive OS specification AUTOSAR [4] and ARINC-653 [2] for avionics. Additionally, generic operating systems such as FreeRTOS [20], Zephyr [53], and RTEMS [32] are widely applicable across various areas, ranging from IoT applications to satellite systems. We use AUTOSAR, Zephyr, and a Linux-based general-purpose operating system as representative for our case study, but the approach is applicable to other platforms, as described in Section 2.
Static Response Time Analysis for Safety-Critical Systems
Guaranteeing response times requires the analysis of applications’ execution timing, possible interruptions, blocking and interactions, especially in worst-case scenarios. For example, the dotted path in Figure 1 includes interactions between two domains which must be taken into account for the WCRT analysis. While many industrial applications may use dynamic approaches and estimations, hard real-time systems require guaranteed WCRT which can only be provided by static analysis [28]. For complex, mixed-criticality platforms with multiple software stacks, there is currently no method that can capture domain-local and global interactions for timing analysis. Therefore, we introduce our approach to this problem: HyperSSE is a cross-domain static analysis method for SPHs, that can be used to derive safe timing guarantees in mixed-criticality systems. With complete knowledge of all tasks, interactions and interrupts in the critical path, we can automatically and correctly analyze all cross-domain interactions to enable tightening of WCRT bounds compared to compositional static analysis [12].
For modern multicore and heterogeneous MPSoC systems, such an analysis must assume increasingly pessimistic response times due to many possible – although rare – causes for slowdowns: external interruptions [54], microarchitectural and cache effects [37], shared resources, or unreliable communication partners. In particular, cross-domain interactions [44] can lead to unpredictable delays, which can increase the WCRT bounds in traditional approaches. Because of this, we explicitly analyze domain-local and cross-domain interactions instead of treating them as side effects of abstraction by operating systems and hypervisors.
To focus on the most important parts, the domains are prioritized: In the automotive industry, for example, mixed-criticality is formalized using Automotive Safety Integrity Levels. Functional decomposition enables the displacement of complex functions in lower ASILs, but the supervision of safety-critical functionality must be part of a safe component [23]. As shown in Figure 1, a safety-critical component with the highest level (ASIL D) may need to communicate with less critical ASIL B components to enable autonomous driving assistance systems [13]. In this example, the HyperSSE can capture all interactions between these two real-time domains in detail, and also include other general-purpose domains for further analysis. This composition of precise real-time analysis with general-purpose domains is an important feature of our approach, because it enables a detailed analysis of complex platforms where necessary, but does not ignore interactions with other domains.
Similar to automotive systems, the ARINC-653 avionics standard expects temporally and spatially isolated partitions that communicate via devices or shared memory to exchange mission-critical messages, but timing-critical partitions must not suffer from interference at runtime [18, 21]. In the remainder of this paper, we will use the term domains interchangeably with partitions or VMs, as used by the Xen hypervisor.
This Paper
We present the first approach to whole-platform static analysis for hypervisor-based platforms. In particular, we claim the following contributions in this paper:
-
1.
With HyperSSE, we describe an automatic static control-flow–sensitive analysis of explicit interactions in embedded real-time systems with multiple hypervised domains.
-
2.
We incorporate general-purpose domains, accelerators, coprocessors, or other peripherals to analyze mixed-criticality systems, by modeling their internal control flow.
-
3.
We implement HyperSSE into an open-source static analysis framework to show the applicability using an automotive case study.
-
4.
The implementation can compose different methods for domain-local control flow analysis, such as detailed RTOS models, OS interpreters, and abstract task models.
First, we introduce our system model and requirements in Section 2. In Section 3, we demonstrate the potential application of HyperSSE in an automotive scenario. Motivated by this, Section 4 contains the background and approach of HyperSSE. In Section 5 and 6, we describe our implementation into the existing open-source111https://github.com/luhsra/parrot Automatic Real-Time System Analyzer (ARA) analysis framework developed by Entrup et al. [16] and evaluate it using various test cases and the automotive scenario as a case study. We discuss the results and their impact in Section 7 and categorize related work in Section 8.
2 System Model
To define the scope of this paper, we introduce assumptions on the platform and software stack for cross-domain analysis.
- 1.
-
2.
Explicit interaction. All cross-domain interaction is invoked via hypercalls or some other well-defined interface that can be detected at compile-time, for example, by providing source code annotations at each access. This also includes dedicated communication hardware [44], software-based channels [10], and shared memory [18], if the access protocol is known.
-
3.
Domain-local models. For each domain, there is a domain-local flow-sensitive model, such as provided by the (Multi-)System State Enumeration (SSE) [11, 14] analyses, that identifies the points of cross-domain interaction. Each local analysis has full static knowledge about all possible tasks and interrupts within that domain, to enable WCRT analysis by incorporating all possible interactions and preemptions. HyperSSE effectively integrates these local models into a platform-wide hierarchical model.
Static hardware partitioning does not necessarily require a hypervisor, MPSoC platforms with coprocessors, accelerators, or even distributed systems can also be analyzed with HyperSSE, as long as the other assumptions hold. Although the requirement on explicit interactions is necessary for static analysis, it may look like a strong assumption, because it excludes implicit interactions or unintended interactions through transparent sharing of system resources such as the interrupt controller, memory controller, caches, or I/O bandwidth. We discuss the accounting of dynamic effects through implicit interactions in Section 7.
To enable a precise local analysis, the application should be annotated with BCET and WCET times, for example using task-local timing analysis tools such as aIT [1] or OTAWA [5]. For the following automotive example system, timing information is required for safety certification, so we assume that it is available for the analysis as well.
The interactions between domains and the hypervisor, except for setting up communication with other domains, are not relevant in a strict partitioning scenario. Still, in the same way as the times for system calls are included in the annotations, overhead induced by hypercalls, traps or interrupt mediation is accounted for within the domain that triggers the hypervisor.
3 Example Application
In Figure 1, we depict our running example, an adaptive cruise control with automatic emergency braking for an automotive system. The functions are decomposed and categorized into ASIL levels, implemented using a suited software stack, and then consolidated as domains: The safety-critical part runs as an AUTOSAR application with ASIL D classification, where the radar distance is captured and processed. If a reduction in distance is measured, either the speed can be reduced by activating another functional component, or emergency braking is required. The complex algorithms for distance control, energy regeneration (recuperation) braking, and throttling profile calculation are implemented in a separate energy management component. This component does not need the same safety processes and may be updatable over-the-air, so in this example we use the Zephyr RTOS with ASIL B. Under normal conditions, after the necessary actions are computed, the driver will be informed via Human-Machine Interface (HMI). Then, the calculated profile will be applied, and completion signaled back to the supervising component. However, in the case of a possible collision, the energy management system should not calculate any adjustment profiles but must support emergency braking as quickly as possible, triggered by an interrupt. The third domain is a general purpose operating system like Linux/Android, which is responsible for non-critical tasks such as infotainment, camera streaming, navigation, and driver interaction.
In this setting, HyperSSE should answer the following questions to ensure safe operation:
-
1.
The system integration must identify the Worst-Case Response Time (WCRT) across all three domains, from the triggering of automatic speed adjustment until the driver is notified, as the notification must be visible to the driver immediately when the speed is adjusted or emergency braking is active [49]. When also considering Vehicle-to-Vehicle communication, delays in a cooperative adaptive cruise control system must be even lower to enhance traffic flow properties, without the driver in the loop [8].
-
2.
In the safety-critical AUTOSAR real-time domain, we must guarantee that the WCRT from distance measurement, across adjustment event, until the ACK is received, does not exceed the control cycle of 50 ms in the AUTOSAR loop. This critical cross-domain path is shown in the figure by the dotted line, including communication between the ASIL D and B domains.
-
3.
Another question is, whether other tasks in the system may interfere with this control loop under test. For example, memory-intensive calculations could put pressure on the memory controller, leading to a longer WCET in a highly critical task that tries to access the memory simultaneously. Static analysis can prove the absence of interference of such calculations with critical tasks.
-
4.
Furthermore, we must examine if higher-priority tasks or interrupts can preempt the control loop and increase its WCRT. In strict priority-based scheduling systems, the pessimistic answer to this last question is straightforward: all tasks and Interrupt Service Routines from local or cross-domain interrupts of higher priority must be considered in a compositional WCRT analysis. However, with control-flow–sensitive WCRT analysis across domains, it is possible to automatically and correctly rule out impossible system states, allowing the timing analysis to be less pessimistic about the response times, even when considering interactions from other domains.
In Section 6 we use the results from HyperSSE to answer these questions.
4 The HyperSSE Approach
Interprocedural control flow analysis based on call graphs is a well-known practice for compiler optimization techniques [3, 47]. However, these analyses only apply within a single program, stopping at calls to external libraries or into the operating system. For embedded real-time systems, Dietrich et al. have proposed the System State Enumeration (SSE), a static analysis comparable to abstract interpretation of the application alongside the OSEK OS semantics to enable cross-kernel control flow analysis and optimizations [11] over thread and task boundaries. The SSE is limited to event-triggered single-core domains. To also analyze multicore AUTOSAR applications without forming the complete cross-product between all states in the per-core SSEs, Entrup et al. have developed the MultiSSE, which restricts the cross-core analysis overhead to those Synchronization Points, where a system call actually involves some cross-core interaction [14]. HyperSSE, in a nutshell, extends these ideas to cross-domain analyses in hypervisor-based systems running different RTOS.
System State Enumeration
To understand the HyperSSE approach, we briefly introduce the core concepts of domain-local static analysis. First, the application-local Control-Flow Graph (CFG) is preprocessed to reduce the complexity of cross-kernel control flow traversal. Atomic Basic Blocks [39] are used to subsume the computational control flow regions in the application logic and make interactions with the OS explicitly visible to the analysis. Compared to basic blocks used for compiler optimizations, those ABBs can subsume larger application code blocks if they do not contain any system calls. Each ABB represents either a single system call or a single-entry/single-exit sequence of other (computational) instructions, optionally annotated with WCET/BCET retrieved by a local timing analysis. As a result, the interprocedural CFG contains only computation ABBs and (system) call ABBs, removing the application logic and sharpening the focus on interactions between application and operating system.
The SSE algorithm [11] traverses this processed CFG and updates the abstract system state, until a system call ABB is reached. The abstract system state is an abstract representation of the relevant system state, including task states, ready queues, resource locks, and interrupt states. Additionally, the values of system call parameters (constants or symbolic values calculated using the external SVF framework [47]) and the currently executed ABB are tracked in the CFG traversal. However, for complex, nested call parameters which cannot be derived statically, the interaction analysis is limited by the parameter value analysis. In real-time systems, the parameters are often constants, so we consider this to be a minor constraint.
Then, the effect of this system call must be interpreted using a predetermined operating system model to derive the follow-up abstract system state. In previous work, this model has been manually derived from a specification for OSEK/AUTOSAR [11] or generated at analysis runtime using IRx system call interpreter [24]. During traversal, the algorithm constructs a graph that contains the visited system states and their transitions, called the State Transition Graph (STG) [11]. In a system with finite states, the SSE terminates when all possible states and their transitions have been found and connected in the STG. This traversal is of exponential complexity, but there are techniques for reducing the state space, such as widening to imprecise states, limiting interrupt arrivals, or using per-task and interrupt timing information to rule out impossible system states.
In the MultiSSE, the SSE is executed for each core independently, without synchronization between cores during CFG traversal. Only when a system call affects two or more cores, the local STGs are synchronized using SPs, creating the Multicore State Transition Graph (MSTG). Additionally, interrupts are modeled as virtual CPU cores, which are synchronized using the same mechanism if interrupts occur. Using the control flow trace at a given abstract system state, the SP search can find a tighter limit of possible multicore system states, filtering out the ones that cannot exist based on the control flow. If timing properties are annotated per ABB, the search space can be reduced significantly. This leads to a much sparser MSTG, which they use to tailor the RTOS to the application by optimizing cross-core interactions in AUTOSAR systems such as locking and inter-processor-interrupts [14].
Cross-Domain Analysis with HyperSSE
We build on the ABB, SSE, and SP foundations introduced in the aforementioned works and apply HyperSSE to SPHs with multiple real-time operating systems and general-purpose domains. The main advantage of HyperSSE is the composition of multiple, existing domain-local analyses, which we demonstrate in our example application. We generalize and extend the MultiSSE to achieve a platform-global static analysis by hierarchically combining the domain-local STGs into a cross-domain HSTG using SPs at cross-domain hypercalls. Conceptually, this adds a hypervisor-level analysis layer over OS-level analyses, mirroring the stack of hypervisor over OS and hypercall over system call. Where the MultiSSE connected parallel CPU cores with SP, the HyperSSE connects parallel operating systems.
We adopt its constraints in the platform model by restricting ourselves to real-time domains with static instance configurations. This requirement excludes unbounded dynamic creation and destruction of tasks or resources at runtime, which is typically disallowed or strongly discouraged in RTOSs. Additionally, we propose the abstraction of control flows as described in the following section for other domains which do not fit this requirement.
Control Flow Abstraction
For complex control flows in non-static domains or systems without existing OS models, we can subsume all domain-local interactions, including system calls and core-local interrupts, into computation ABBs that are separated only by hypercalls. In contrast to the SSE, where we use detailed timing information like BCET and WCET per ABB, other domains with lower criticality may not require such fine-grained internal timing analysis, and a less precise analysis is sufficient. Therefore, we abstract away their internal control flow, and expose only hypercalls to the interaction analysis. Using a predetermined task model for the relevant task, HyperSSE can incorporate general purpose operating system domains, as well as hardware accelerators, coprocessors, or other peripherals, which we collectively describe as baremetal domains, because they do not need an OS model.
To summarize, we are able to compose a platform-global analysis containing all knowledge about existing real-time domains and modeled domains with an abstracted control flow.
Analysis of Hypercalls
Figure 2 illustrates the layering of system calls and hypercalls for the AUTOSAR domain in the running example. The local CFG contains explicit hypercall and system call ABBs, always interleaved with computation ABBs. The LLVM compiler toolchain [25] is used for local CFG creation, while the SVF [47] static value-flow analysis framework is needed for interprocedural control flows, for example, when the parameter of an upcoming system call is passed through multiple functions. Every OS-relevant call requires one of our specialized static analysis steps: hypercalls need to be handled at the hypervisor level using HyperSSE, while system calls are interpreted using the OS model by the (Multi-)SSE. Identical to the MultiSSE, we account for the time of the hypercall itself in the surrounding computation ABBs, so all events are analyzed atomically with a global sequence.
To analyze multiple domains, the abstract system state is extended by hypervisor-level elements, such as cross-domain event channels, interrupt states, and callback tasks. The global abstract system state must be split into domain-local states, and merged on cross-domain interactions. Without interactions, each domain updates independently using the local SSE, leaving the other domains as black boxes without affecting them. For the implementation, this allows for a local analysis, while the global abstract system state is constructed only at SPs. At cross-domain hypercalls, the global abstract system state is constructed and modified only when needed. This abstraction makes use of the enforced isolation, where only specific hypercalls can affect the state of another domain.
With the existing SP search developed for multicore AUTOSAR applications, we can mostly reuse a building block for synchronization of control flows at the ABB level. To apply this synchronization concept to control flows in isolated domains, we must define a common initial SP across those domains. In a SPH system, where all domains boot in parallel, we can simply incorporate the BCET and WCET of the boot time into the analysis. Alternatively, an explicit and dedicated startup handshake or barrier between partitions for initial synchronization is also possible (and common practice).
Analogous to (Multi-)SSE for a single system, HyperSSE enables control-flow–sensitive WCRT analysis by sharing knowledge of execution states at interactions across the boundaries of hypervisor isolation. Because we follow the cross-domain control flow and synchronize the state between the domains, a platform-wide view of all possible states is generated. This facilitates timing analyses like SysWCET [12] to calculate tighter WCRTs even for cross-domain paths. Furthermore, by examining the interaction patterns, whole-platform optimizations such as improved partitioning and placement of domains, hypervisor fast paths, or control-loop timing adaptations could be implemented.
With HyperSSE, we can synchronize arbitrary control flows across multiple interacting domains, as long as they match the system model described in Section 2. In general, these domains could be defined as CPUs managed by the same OS (as in the MultiSSE), virtual machines, accelerators, remote coprocessors, or even nodes in distributed systems. To demonstrate our approach, we implement it for hypervised automotive real-time systems, specifically a static partitioning Xen hypervisor with Linux, Zephyr, and AUTOSAR as guest virtual machines, as introduced in Figure 1. We chose the Xen hypervisor for our implementation for various reasons: Paravirtualized event channels enable inter-VM signaling with explicit interrupt-based communication, which is a requirement for synchronization points between domains. In a dom0less setup, Xen supports real-time domains to boot simultaneously without an additional control domain, which allows for very fast boot-up times and mitigates the dependency on low-criticality domains. Furthermore, Xen’s maturity and support for multiple architectures make it a good candidate for real-world applications, especially as the project aims to achieve compliance with functional safety standards like ASIL D [33].
5 Implementation
In this section, we describe the implementation of HyperSSE in the ARA static analysis framework developed by Entrup et al. [16, 15]. ARA already contains the foundations for HyperSSE, especially the CFG traversal with (Multi-)SSE algorithms and OS models for domain-local analyses. First, we describe the framework and the basic SSE algorithm. Then, we explain what is required to extend ARA to multiple domains and how HyperSSE is implemented for the Xen hypervisor.
The ARA Framework
Inspired by compiler optimization passes, the ARA whole-system-analyzer and compiler chains together steps that can analyze or modify the LLVM [25] intermediate representation of application code. These steps can be implemented in C++ to directly access the LLVM API or in Python, where operating system behavior at system call sites can be modeled on the abstract state more easily. The generated data is shared between all steps using graph-based data structures, for example the SVF graphs or ARA’s own instance graph and system state representations [16].
For HyperSSE, we implement a new step that performs the cross-domain interaction analysis for hypervisors and add a Xen hypervisor model. Furthermore, all preprocessing steps must be executed once for each domain to prepare the local CFG, as shown in Figure 3. This requires steps to be repeatable and work on the correct domain-local set of graph structures instead of global ones. We modify ARA to use domain-local structures and to allow multiple executions of the same step on different domains.
Static Analysis using SSE
The SSE algorithm as described by Dietrich et al. [11] operates on single-core statically configured and event-triggered systems like OSEK/AUTOSAR. All tasks, ISRs and other OS objects are known in advance, which allows for the complete static analysis including all possible paths. In Figure 4 the SSE algorithm is depicted. Beginning from a defined initial system state, the application-local CFG is followed, including all possible branches, until a system call is detected. Then, the RTOS semantics are applied to interpret the system call behavior and to find all follow-up states. The traversal is continued until all states have been visited and the State Transition Graph (STG) is complete, including all possible paths, states and interactions between tasks. For simplicity, the triggering of possible interrupts, which is handled at the end of interpret_or_schedule is omitted. Possibly, every ABB could trigger an interrupt, leading to an exponential increase in the list of states. This state explosion has been mentioned in the original work already, and requires additional constraints like inter-interrupt times or activation limits. With the MultiSSE [14], the interrupts are not triggered during the CFG analysis anymore, but instead they are modeled as virtual CPU cores, which are synchronized when they arrive. The control flow of virtual interrupts should be annotated with minimum inter-arrival times or limited by activation counts, to mitigate the state explosion.
ARA OS Model
ARA’s internal design already provides RTOS-independent interfaces and data structures, to support various real-time operating systems and generic algorithms [15]. Each RTOS must implement a model of its system call behavior matching this specified interface, which can then be used by the (Multi-)SSE to interpret the system calls and to update the abstract system state, as described in Figure 4. This abstract OS model must implement the interface shown in Figure 5. It serves as a foundation for the cross-domain analysis, because state processing is independent of their underlying OS and the current state of hypervisor objects is shareable across different OSs.
Parallel Domains
In Figure 6, we show the implementation stack of analysis steps, with parallel domain-local analyses and the synchronization using HyperSSE. For each local SSE analysis, we mark Xen-specific hypercalls in addition to system calls. If a Synchronization Point (SP) between domains (or cores within one domain) is required, HyperSSE analyzes the cross-domain interaction (MultiSSE for cross-core within the domain) and generates the follow-up abstract system states in the HSTG.
The traversal algorithm for multiple domains closely resembles the MultiSSE [14] for multicore systems: As long as there are no interactions between domains, they can be analyzed independently, reducing synchronization effort. For the cross-domain analysis in Figure 7, all domain-local preparation steps need to be executed first for each domain before the HyperSSE step is executed.
We start HyperSSE from a defined initial cross-domain SP and then split the analysis into domain- and core-local CFG traversal for the SSE. When one domain initiates a cross-domain interaction, the potentially parallel abstract system states of the affected domains must be found: the pairing partners. The entry SPs synchronize the pairing partners, while associated exit SPs split the analysis again. To achieve this, we find and mark cross-domain hypercalls during the domain-local analysis, just as MultiSSE marks cross-core system calls. Because we follow the design of MultiSSE in ARA, we can reuse the existing implementation of the SP search algorithm based on a timing equation system with constraints to find the pairing partners for cross-domain interactions [16]. Finally, HyperSSE returns the HSTG, including STGs for all domains and SPs between them.
Implementation Considerations
In order to analyze hypercalls in application code, we implement the Xen hypervisor as OS model in ARA, next to the unmodified actual RTOS models. Pragmatically, this allows the reuse of algorithms from the MultiSSE, especially the SP search. During CFG traversal, every state is first passed to the Xen model. There, the analysis processes hypercalls and their effects, while it forwards local system calls towards their respective OS model. This also allows for detailed checking of hypercall usage per domain, for example to verify the absence of policy violations regarding allowed hypercalls per context.
Although this design introduces some confusing naming (the OSState is actually a Hypervisor state within the Xen Model), it allows unlimited layering of interaction semantics between concurrent CPUs, domains or MPSoC (co-)processors, as long as they have an explicit interaction mechanism. For example, dedicated models could also analyze communication middleware or interactions in nested hypervisors, which could possibly be used in embedded ARM SoCs in the future [26].
We have also considered alternative designs such as a multi-level SP search. However, in practice this would require a complete reimplementation of the existing parts for multi-level data structures. To avoid complex synchronization edge cases, we can create SPs for cross-core and cross-domain interactions in the same way, because they work on the same global abstract system state.
Xen Model Implementation
For existing domain-local analyses, we extend the existing OS model interface from Figure 5 with helper functions related to hypervisors, as shown in Figure 8.
Because the domain-local analyses are not aware of the hypervisor, we need to rewrite the CPU IDs of OS objects to globally unique ones. For example, a dual-core-AUTOSAR domain with two additional interrupts modeled as virtual CPUs [14], and a single-core Zephyr domain with one additional local interrupt modeled as a virtual CPU, would require 6 unique IDs in total after move_context or move_irqhandler have been called for each of them.
With this minimal example of a sender and receiver domain in Figure 9, we go through the most important details of the implementation for the aforementioned interface.
To initialize OS objects and launch automatically started tasks or the main thread for each domain, get_initial_state must return an OSState. In the Xen hypervisor, this state is a combination of the initial states of all domains. To merge the initial states, we store the dependencies for local analysis per domain, such as the CFG and instance graph in a list indexed by the static domain identifier. As illustrated in Figure 10, we combine the contexts of all domains into a single global context.
As described in Figure 4, is_syscall matches the current system call against a predefined set of system calls from the model, and the respective OS model must interpret the system call semantics and update the abstract system state. Accordingly, we must check for hypercalls in the Xen model first. All other system calls are forwarded for local interpretation to the correct guest domain, identified by the CPU id of the current control flow.
The goal of our Xen model is not to simulate and interpret every possible usage of Xen hypercalls in all used OSs. Instead we abstract their effect on other domains using domain-independent system call wrapper functions, used across all domains. Each guest domain OS implements the wrapper function using existing system calls, or by calling Xen hypercalls directly in the wrapper. This step removes the complexity of OS specific data structures and implementation details, that are of no interest for our analysis and the effect on other domains. The disadvantage is that applications must be modified towards this unified interface, but we assume that RTOSs minimize unnecessary complex interaction patterns.
Currently, we support a subset of wrappers for Xen hypercalls related to event channels and shared memory interactions.
-
evt_chn_{alloc_unbound,bind_interdomain} connect to remote domain with callback,
-
event_channel_send send an event over the initialized channel,
-
event_channel_poll as a minimal callback wrapper for event polling.
-
share/recv_mem setup shared memory region (using Xen Grant Tables),
-
read/write_mem explicit annotation for shared memory access.
Regarding shared memory, once a shared memory is set up, write system calls trigger a synchronization point with all domains that have access to the same memory, while read system calls are analyzed locally. Because of the exponential state count, we do not analyze the content of shared memory and only analyze the order of memory operations.
For the interpretation of event hypercalls, we define a CrossOSEvent as a common abstraction across domains. For each OS model, those can be implemented differently: In event-driven real-time systems with tasks like AUTOSAR, we model an OS event as a task, that is activated once a cross-domain event is registered (if the channel is not masked). Such asynchronous ActivateTask semantics are identical to cross-core ActivateTask calls, which are already supported by the MultiSSE. In general, a CrossOSEvent is a callback function or thread, which is called by the hypervisor once the event is triggered.
RTOS models must also implement their scheduling policy, which is done after system calls, usually based on task priorities, semaphores, etc. For SPH like dom0less Xen, we do not schedule domains. Instead, we just split the global abstract system state after a hypercall into local ones, which become scheduling points for the domain-local analyses.
ARA Framework Extensions
Next to the Xen model, we also need to extend the ARA framework itself with a new HyperSSE step. Most importantly, we must extend the step management system to allow multiple executions of the same steps for different domains, as dependency for HyperSSE (compare Figure 6). We do this by iterating through the guest domains, and adding the required steps depending on the domain type. For example, the AUTOSAR domain requires parsing of the RTOS configuration (OIL-file) additionally to the usual steps for CFG and instance graph generation, while Zephyr needs other steps for its domain-local analysis.
While most of the steps written in Python can be run multiple times without modification, especially the ARA integration of the SVF analysis framework [47] requires some adjustments, because its singleton pattern could not process multiple domains. Similar to the existing debugging and visualization for the (Multi-)SSE, we have extended ARA with printing capabilities for HyperSSE, to visualize the generated HSTG using graphviz.
In summary, we have added lines of code to the ARA framework, with lines of Python in the Xen and OS models, and lines of Python/C++ in the ARA steps, including the HyperSSE logic.
6 Evaluation
To evaluate the approach, we first apply the implementation of HyperSSE to a set of test cases, and manually verify the correct state transitions, detection and handling of cross-domain events for each test, by inspecting the generated HSTG. Once we have verified the correct graph structure, we save the complete graph to test HyperSSE against this verified set. This process could also be replaced by defining expected paths and transitions for every test case, but for these small test cases, manual inspection is much faster than modeling all possible transitions. For all test cases, it took the complete analysis 2-3 seconds on an AMD Ryzen 7 PRO 7840U, including the printing of the graphs. Then, we use HyperSSE to analyze the running example of a hypervised automotive system, as introduced in Figure 1.
Test Suite
| Test Case | Event | States | |
|---|---|---|---|
| (1) | min-autosar | - | |
| (2) | min-zephyr | - | |
| (3) | min-baremetal | - | |
| (4) | min-az | - | |
| (5) | min-zb | - | |
| (6) | min-ba | - | |
| (7) | hc-autosar | A A | |
| (8) | hc-zephyr | Z Z | |
| (9) | hc-baremetal | B B | |
| (10) | hc-autosar2 | A A | |
| (11) | hc-zephyr2 | Z Z | |
| (12) | hc-baremetal2 | B B | |
| (13) | hc-a-z1 | A Z | |
| (14) | hc-z-b1 | Z B | |
| (15) | hc-b-a1 | B A | |
| Test Case | Event | States | |
|---|---|---|---|
| (16) | hc-a-z2 | A Z | |
| (17) | hc-z-b2 | Z B | |
| (18) | hc-b-a2 | B A | |
| (19) | hc-autosar-notiming | A A | |
| (20) | hc-zephyr-notiming | Z Z | |
| (21) | hc-baremetal-notiming | B B | |
| (22) | hc-autosar-polled | A A | |
| (23) | pingpong | A A | |
| (24) | channels | A A A | |
| (25) | shamem-autosar-ro | A A | |
| (26) | shamem-autosar-raw | A A | |
| (27) | shamem-autosar-war | A A | |
| (28) | shamem-autosar-unknown | A A | |
| (29) | sendrecv-a | A A | |
| (30) | sendrecv-b | A A | |
For the various interaction scenarios in Table 1, we have examined the generated HSTGs manually for correctness. These tests cover the OS and hypervisor models, as well as the synchronization of control flows across domains. The HSTGs for all test cases are appended as Figure 12.
The first set of test cases (1–6) contains two domains without interactions, to verify the correct behavior of initialization, merging and splitting of local and global states. Then, we examine the correct detection and handling of cross-domain events for a set of domain combinations (7–18) with and without timing annotations (19–21). We also include some more complex interaction patterns such as events with polling, ping-pong and multiple channels (22–24). For analyzing shared memory synchronization, we have implemented a set of tests with different access patterns for a memory region shared between two domains (25–28). Finally, additional domain-local interrupts within the domains (29–30) are leading to additional SPs. With these tests, we were able to fix various bugs in domain-local analyses, especially in the Zephyr model, which was not designed to be instantiated multiple times.
Running Example
For the running example in Figure 1, we apply HyperSSE to all three domains with exemplarily estimated timing annotations per ABB.
The complete HSTG with timing information is appended in Figure 13. It contains synchronization points, and local abstract system states in total, taking seconds for the analysis. We show a simplified version in Figure 11 for better readability.
Without any timing information, running HyperSSE for this example must lead to a state explosion because of the endless synchronization possibilities with the loop. If we manually unroll the control loop to two iterations, the HSTG already contains synchronization points between local abstract system states and takes seconds for the analysis on the AMD Ryzen 7 PRO 7840U.
After the inital SP and initialization of all domains is executed once (dotted line), the control loop is started in the critical AUTOSAR domain (red). After triggering the calculation within the Zephyr domain (blue), the HMI is updated in the Android domain (green). When the calculation is finished, the polling from the AUTOSAR domain is successful, and the measuring task can be started again (Path a). In the emergency case, the loop is discontinued and the emergency braking task is activated (Path b), also sending an event to the Zephyr domain. With this result, we can answer the questions raised in Section 3 with a manual inspection of the graph; we are confident that an automatic verification is also possible:
-
1.
For the worst case time until the speed adjustment is available for display to the driver, we look at the following state transition path in the HSTG. The timing annotations in milliseconds between states are added to the edges.
At the end, the WCRT is from measuring until the HMI is updated.
-
2.
To compare the response time from measuring to acknowledge against the critical loop cycle, we look at the control loop path in the HSTG:
Because the WCRT is fast enough for the control loop, the system is always stable, and timely responses are guaranteed. If the calculation took longer (27-30), we would see an additional SP between
and![[Uncaptioned image]](x2.png)
, leading to a timing violation as shown by the magenta edge.![[Uncaptioned image]](x3.png)
-
3.
In order to check for possible interference of memory-intense calculation with critical accesses, we look at the critical ABB
in the measuring task. As the other domains are in idle state during that time, we can be assured that there is no interference through transparently shared resources.![[Uncaptioned image]](x4.png)
-
4.
Lastly, we can safely assume that the braking support ISR
does not need to be considered in the WCRT analysis of the control loop, as it is only triggered when emergency braking is active and the control loop is not running. If there could be an interrupt during the control loop, we would see a new SP, and the interrupt handler would become part of the WCRT.![[Uncaptioned image]](x5.png)
7 Discussion
With HyperSSE, we demonstrate that fine-grained, interaction-aware static analysis is applicable for static partitioning hypervisor systems.
Applicability and Extensions.
The concept also allows for the analysis of temporally partitioning hypervisors that schedule partitions according to ARINC 653 [2]. However, when cycles are not multiples of each other and the task activation timing is drifting, the state space can explode because the analysis can no longer be confined to a single hyper-period. To mitigate such effects, HyperSSE can expose timing interdependence between domains, enabling the synchronization of loop intervals, enforcement of minimum inter-interrupt times, optimization of interaction placement, or application of targeted timing adjustments in application code. These state-aware adaptations reduce HSTG complexity by pruning impossible or undesired system states, improving the predictability and maintainability of the entire platform.
We leverage the isolation provided by SPHs to compose a platform-wide static analysis from domain-local control flows. Synchronization is required only at explicit cross-domain interactions such as hypercalls. When a single domain changes because of application software updates, we can reanalyze only the affected portion and reuse results for the rest of the platform. If interaction timing is unchanged, we can also retain existing synchronization points between domains.
In order to support other platforms or SPHs, HyperSSE requires a new hypervisor model, with an explicit cross-domain interaction mechanism. As long as cross-domain interactions can be detected in the CFG (hypercalls, calls to libraries for special hardware, arbiters), we can interpret their behavior and HyperSSE can be applied to such platforms as well.
Soundness of the Analysis.
Although we do not claim soundness of static analysis with HyperSSE with a formal proof, we are convinced that proofs based on the abstract interpretation principles are possible. The abstract domain must then include operating system states, as well as the hypervisor elements. Given sound domain-local analyses, we target soundness for the cross-domain interactions introduced by HyperSSE through guaranteed over-approximation. Since we add only a small number of cross-domain interactions to the system, we can be assured that all possible reachable states are included in our analysis.
Scalability.
HyperSSE can analyze systems without timing information per ABB, but this can lead to a highly branched state graph, so the analysis may take several hours and the results are less useful. With precise local timing constraints from tools such as aIT [1], the HSTG becomes significantly sparser. As the current implementation is unoptimized Python code, we are optimistic that even complex systems with timing annotations can be analyzed in minutes. Therefore, the static analysis assumes that the BCET and WCET are precomputed per ABB. Although HyperSSE can analyze systems with complex functionality, we expect real-world applications to face less combinatorial state explosion at cross-domain interactions when compared to the MultiSSE. Explicit cross-domain interactions in strictly isolated systems are typically rare and more carefully used than – possibly retrofitted – cross-core interactions such as ActivateTask and SetEvent in multicore AUTOSAR applications [4]. Still, HyperSSE can encounter scalability issues in large systems with many interactions, in such cases we propose to describe the interaction behavior using abstract task models to reduce the state space. Another option for better scalability in WCRT analysis is to execute HyperSSE only for relevant parts with critical paths within the platform, incorporating results from traditional compositional WCET analysis instead of a full HSTG for all domains. As usual in static analysis, such trade-offs between precision and scalability depend on the specific use case.
Static vs. Dynamic Analysis.
Unlike dynamic approaches (some are described in more detail in the following Section 8), static analyses based on abstract interpretation like HyperSSE can provide a safe over-approximation of system behavior at compile time. However, we need extensive knowledge of the system, including source code, OS semantics, hardware architecture and timing annotations to achieve useful results, which may still be pessimistic.
Implementation Limitations.
Currently, our Xen hypervisor model only supports hypercalls for cross-domain event channels and shared memory, using the restrictive wrapper model. There is no limitation to adding more wrappers, but they may require tailoring to the application and OS semantics under test. Especially, trapping I/O operations or interrupt rerouting leads to additional overheads in hypervisor systems and could be interesting to analyze statically, but in SPH configurations such interactions are typically avoided by design. As described before, we currently do not model scheduling on the hypervisor level, because we focus on SPH configurations. Furthermore, the implementation is currently limited to single-core guests, because the number of potential test systems would grow exponentially. In the future, we want to extend it to multicore domains, which requires a mapping of cores to domains and consequent changes regarding the abstract state splitting and merging. Another difficulty is the limited expressiveness of the Xen API, because it does not allow pinning of event channels to specific CPUs.
Practical Considerations.
For local CFG traversal, we require the complete application source code for each domain. As this can be hard to achieve and a barrier in adoption, we propose to consider the system timing behavior of applications within a mixed-criticality platform as an additional deliverable next to the binary code. This allows for the integration of black box components of suppliers, for example proprietary applications into our static analysis which requires knowledge of the control flow. An abstract description of the task, including interactions with other domains, must be provided, for example using task models as extracted by LiME [7]. This description can be modeled as an abstract control flow graph in HyperSSE, as we have proposed in Section 4 for general-purpose domains. We plan to automatically derive such abstract control flow graphs from task models in future work.
Implicit interactions.
There are several ways to extend HyperSSE in the future. Next to the aforementioned extensions, we want to look in more detail into implicit interactions. For example, we could attach memory bandwidth allocation envelopes [46] to the ABBs, to guarantee freedom from bandwidth overprovisioning at a given point in time without requiring dynamic monitoring and enforcement of bandwidth limitations. For a given, critical memory access, we can create synchronization points with other domains, and summarize the maximum bandwidth usage of all domains. Similarly, usage of other shared resources can be annotated to the control flow, providing the full picture of resource usage across the platform at specific points in time. This allows for a less pessimistic WCET modeling per task, if we can prove the absence of interference for critical parts. Using fixpoint analysis, a reduced WCET can again lead to a reduced state space in the HSTG, simplifying the platform-global analysis.
8 Related Work
Static Partitioning Hypervisors.
Research on embedded real-time systems has increasingly focused on hypervisor systems. In particular, SPHs like Jailhouse [34], Bao [29], and separation kernels like Quest-V [51] have demonstrated that such hypervisors can minimize unwanted interference to achieve mixed-criticality operation. Although they provide safety-relevant properties such as fault containment and strict isolation, they still need to share low-level hardware architecture and thus cannot guarantee freedom from interference or safe bounds for WCRT analysis.
Dynamic Approaches.
Ottaviano et al. have built the Omnivisor on top of Jailhouse [31], extending the static partitioning to MPSoCs with coprocessors or FPGA fabric while also enforcing stricter temporal isolation by dynamically limiting the bandwidth per domain on the shared bus. Similarly, MemGuard [52], MemPol [54] or bank-level regulation in hardware [48] achieve temporal isolation to reduce WCET pessimism in multicore systems by limiting memory bandwidth. Compared to these runtime-enforcing techniques, HyperSSE can guarantee a safe and less pessimistic WCRT analysis automatically at compile time. Our static approach requires neither dedicated hardware for load regulation nor does it result in additional runtime overhead. Another dynamic approach to WCRT estimation is FRET [6], but its fuzzing-based timing analysis does not support multicore systems.
We acknowledge studies that have shown unpredictable interferences in Xen’s adaptive partitioning, making its use in safety-critical real-time applications inappropriate without additional measures [41, 27]. However, with HyperSSE, we propose the use of a SPH configuration (dom0less in Xen), without scheduling of partitions.
Static Analysis Methods.
Regarding static analysis, there are well-established tools and frameworks for the analysis and verification on the application-level. The research tool ASTRÉE [9] has been further developed into an industry-grade runtime error checker by AbsInt GmbH. Their control-flow–sensitive analysis is based on the abstract interpretation of C or C++ applications, also supporting some safety-critical RTOS semantics like single-core OSEK/AUTOSAR [30]. Compared to HyperSSE, it is not focused on interactions across system calls, let alone hypercalls in consolidated mixed-criticality systems. Developed by the same company, the aIT WCET analyzer allows for calculating tight upper bounds at the task level using abstract interpretation, including pipeline and cache behavior [19, 1]. Similarly, the OTAWA toolbox [5] has been designed to calculate detailed WCET times per task, focusing on the extensibility of the framework. Both can calculate WCET times which are a prerequisite for HyperSSE to achieve platform-wide WCRT analysis across tasks and domains. To achieve tight WCET bounds, the processor model must be without timing anomalies, for example PATMOS [40] or POP⋆ [36].
The Goblint analyzer has been developed to find data races in multithreaded C code [50] and is being continuously extended, for example to detect other errors like memory safety bugs [38]. Although the static analysis understands and checks for some OS semantics such as the priority ceiling protocol mandated by OSEK/AUTOSAR [43], a complete model of operating system interaction behavior is not supported. Recently, Goblint has been modified to support incremental analysis, which could be also beneficial for HyperSSE when reanalyzing only affected parts of the system after changes [17].
The Axivion Suite, a commercialized version of the Bauhaus tool [35], uses static code analysis to check or recover understanding of how a software is architected. Unlike the previous static analyzers, it mainly targets the software quality, maintainability, and developer support for quality assurance. Similar to HyperSSE, it uses an intermediate language to support multiple frontend languages. The static analyzer does support various checkers, for example AUTOSAR coding guidelines, but it does not cross the system call boundary.
The dOSEK RTOS generator and compiler toolchain has been used to show the applicability of the SSE algorithm for OSEK/AUTOSAR systems [11]. Being the first cross-kernel static control-flow–sensitive analysis, it is the predecessor for analyses like MultiSSE [14] and HyperSSE. The MultiSSE has extended the SSE to multicore AUTOSAR systems, by synchronizing local control flows at cross-core system calls using SPs. Compared to HyperSSE, it only supports a single AUTOSAR domain without hypervisor-level interactions.
SWAN is another approach to system-wide timing analysis, supporting dynamic environments like RT-Linux and FreeRTOS [42]. Instead of interpreting the system behavior with an OS model, that tool relies on annotations of the application’s source code with context-sensitive system facts to reduce pessimism in WCRT analysis. Such annotations and constraints could also be derived from the HSTG of HyperSSE, enabling SWAN to analyze domains within hypervisor systems with less pessimism regarding cross-domain interactions.
9 Conclusions
With HyperSSE, we present the first approach to static control-flow–sensitive analysis of mixed-criticality real-time systems similar to abstract interpretation. The isolation provided by Static Partitioning Hypervisor (SPH) enables the composition of existing domain-local static analyses like (Multi-) System State Enumeration (SSE) into our platform-wide analysis. By creating the Hypervisor State Transition Graph (HSTG), a data structure that synchronizes the control flows at explicit cross-domain interactions, we can detect the interaction behavior of the entire platform, which is a prerequisite for platform-wide timing analysis. Although there are some limitations, we prove the applicability of HyperSSE by implementing it into an existing open-source static analysis framework and publishing the implementation. Next to a set of smaller test cases, we apply it exemplarily to a mixed-criticality automotive system with the Xen hypervisor, real-time AUTOSAR and Zephyr domains, as well as a general-purpose domain. With the modeling of control flows, HyperSSE can compose precise real-time analysis for the critical domains with abstract analysis for complex general-purpose domains, coprocessors or accelerators. Our evaluation shows, that HyperSSE correctly analyzes interactions between multiple domains including timing behavior, providing the foundation for safety guarantees in consolidated mixed-criticality platforms. Because the state graph can quickly grow very large, we use timing annotations to reduce the possible synchronization points between domains. This also enables exact timing analysis across domain boundaries, to calculate tighter WCRT bounds than pessimistic compositional approaches. By modeling interrupt sources as additional CPUs and assigning timing information, complex interaction patterns are analyzable. Using the results for the example application, our static analysis can reliably answer various questions regarding real-time analysis, such as the WCRT of the critical control loop, the absence of interference between memory-intense and critical tasks or domain interdependencies. In the future, we want to extend HyperSSE with analysis of implicit interactions, as well as an automatic modeling of abstract control flows for black-box components.
References
- [1] AbsInt Angewandte Informatik GmbH. ait worst-case execution time analyzers, 2024. URL: http://www.absint.de/ait/.
- [2] AEEC. Avionics application software standard interface (ARINC specification 653-1), 2003.
- [3] Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Boston, MA, USA, 2. edition, 2007.
- [4] AUTOSAR. Specification of Operating System (R25-11). URL: https://www.autosar.org/fileadmin/standards/R25-11/CP/AUTOSAR_CP_SWS_OS.pdf.
- [5] Clément Ballabriga, Hugues Cassé, Christine Rochange, and Pascal Seinrat. Otawa: An open toolbox for adaptive wcet analysis. In Proceedings of the IEEE Workshop on Software Technologies for Future Embedded and Ubiquitous Systems (SEUS ’10), pages 35–46, Heidelberg, Germany, 2010. Springer-Verlag. doi:10.1007/978-3-642-16256-5_6.
- [6] Alwin Berger, Simon Schuster, Peter Wagemann, and Peter Ulbrich. Dynamic Fuzzing-Based Whole-System Timing Analysis . In 2025 IEEE Real-Time Systems Symposium (RTSS), pages 420–433, Los Alamitos, CA, USA, December 2025. IEEE Computer Society. doi:10.1109/RTSS66672.2025.00041.
- [7] Björn B Brandenburg, Cédric Courtaud, Filip Marković, and Bite Ye. Lime: The linux real-time task model extractor. In 2025 IEEE 31st Real-Time and Embedded Technology and Applications Symposium (RTAS), pages 255–269. IEEE, 2025. doi:10.1109/RTAS65571.2025.00033.
- [8] Johannes S. Brunner, Michail A. Makridis, and Anastasios Kouvelas. Comparing the observable response times of ACC and CACC systems. IEEE Transactions on Intelligent Transportation Systems, 23(10):19299–19308, 2022. doi:10.1109/TITS.2022.3165648.
- [9] Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. The ASTREÉ analyzer. In Programming Languages and Systems, 14th European Symposium on Programming, ESOP 2005, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2005, Edinburgh, UK, April 4-8, 2005, Proceedings, pages 21–30, 2005. doi:10.1007/978-3-540-31987-0_3.
- [10] Alfons Crespo, Ismael Ripoll, and Miguel Masmano. Partitioned embedded architecture based on hypervisor: The xtratum approach. In 2010 European Dependable Computing Conference, pages 67–72. IEEE, 2010. doi:10.1109/EDCC.2010.18.
- [11] Christian Dietrich, Martin Hoffmann, and Daniel Lohmann. Cross-kernel control-flow-graph analysis for event-driven real-time systems. In Proceedings of the 2015 ACM SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems (LCTES ’15), New York, NY, USA, June 2015. ACM Press. doi:10.1145/2670529.2754963.
- [12] Christian Dietrich, Peter Wägemann, Peter Ulbrich, and Daniel Lohmann. Syswcet: Whole-system response-time analysis for fixed-priority real-time systems. In Proceedings of the 23rd IEEE International Symposium on Real-Time and Embedded Technology and Applications (RTAS ’17), pages 37–48, Washington, DC, USA, 2017. IEEE Computer Society Press. doi:10.1109/RTAS.2017.37.
- [13] Abdullah El-Bayoumi. ISO-26262 Compliant Safety-Critical Autonomous Driving Applications: Real-Time Interference-Aware Multicore Architectures. International Journal of Safety and Security Engineering, 11(1):21–34, February 2021. doi:10.18280/ijsse.110103.
- [14] Gerion Entrup, Björn Fiedler, and Daniel Lohmann. MultiSSE: Static syscall elision and specialization for event-triggered multi-core RTOS. In Proceedings of the 29th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS’23), May 2023. doi:10.1109/RTAS58335.2023.00028.
- [15] Gerion Entrup, Jan Neugebauer, and Daniel Lohmann. Rtos-independent interaction analysis in ara. In Proceedings of the 16th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT ’22), July 2022.
- [16] Gerion Entrup, Benedikt Steinmeier, and Christian Dietrich. Ara: Automatic instance-level analysis in real-time systems. In Proceedings of the 15th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT ’19), July 2019.
- [17] Julian Erhard, Simmo Saan, Sarah Tilscher, Michael Schwarz, Karoliine Holter, Vesal Vojdani, and Helmut Seidl. Interactive abstract interpretation: reanalyzing multithreaded c programs for cheap. International Journal on Software Tools for Technology Transfer, 26(6):647–667, 2024. doi:10.1007/s10009-024-00768-9.
- [18] Anam Farrukh and Richard West. FlyOS: rethinking integrated modular avionics for autonomous multicopters. Real-Time Systems, 59(2):256–301, 2023. doi:10.1007/s11241-023-09399-w.
- [19] Christian Ferdinand. Worst case execution time prediction by static program analysis. In 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings., page 125. IEEE, 2004. doi:10.1109/IPDPS.2004.1303088.
- [20] FreeRTOS homepage. URL: http://freertos.org/.
- [21] Georgia Giannopoulou, Nikolay Stoimenov, Pengcheng Huang, and Lothar Thiele. Mapping mixed-criticality applications on multi-core architectures. In 2014 Design, Automation & Test in Europe Conference & Exhibition (DATE), pages 1–6. IEEE, 2014. doi:10.7873/DATE.2014.111.
- [22] Gernot Heiser. The role of virtualization in embedded systems. In Proceedings of the 1st workshop on Isolation and integration in embedded systems, IIES ’08, pages 11–16, New York, NY, USA, April 2008. Association for Computing Machinery. doi:10.1145/1435458.1435461.
- [23] ISO 26262-9. ISO 26262-9:2018: Road vehicles – Functional safety – Part 9: Automotive Safety Integrity Level (ASIL)-oriented and safety-oriented analyses. International Organization for Standardization, 2018.
- [24] Andreas Kässens, Vitali Fendel, and Daniel Lohmann. IRx: RTOS-aware abstract interpretation using an LLVM-based interpreter. In Proceedings of the 19th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT ’25), July 2025.
- [25] Chris Lattner and Vikram Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO’04), pages 75–86, Washington, DC, USA, March 2004. IEEE Computer Society Press. doi:10.1109/CGO.2004.1281665.
- [26] Jin Tack Lim, Christoffer Dall, Shih-Wei Li, Jason Nieh, and Marc Zyngier. NEVE: Nested virtualization extensions for ARM. In Proceedings of the 26th Symposium on Operating Systems Principles, SOSP ’17, pages 201–217, New York, NY, USA, 2017. Association for Computing Machinery. doi:10.1145/3132747.3132754.
- [27] Santiago Lozano, Tamara Lugo, and Jesús Carretero. A comprehensive survey on the use of hypervisors in safety-critical systems. IEEE Access, 11:36244–36263, 2023. doi:10.1109/ACCESS.2023.3264825.
- [28] Mingsong Lv, Nan Guan, Yi Zhang, Qingxu Deng, Ge Yu, and Jianming Zhang. A survey of WCET analysis of real-time operating systems. In 2009 International Conference on Embedded Software and Systems, pages 65–72, 2009. doi:10.1109/ICESS.2009.24.
- [29] José Martins, Adriano Tavares, Marco Solieri, Marko Bertogna, and Sandro Pinto. Bao: A Lightweight Static Partitioning Hypervisor for Modern Multi-Core Embedded Systems. In Marko Bertogna and Federico Terraneo, editors, Workshop on Next Generation Real-Time Embedded Systems (NG-RES 2020), volume 77 of Open Access Series in Informatics (OASIcs), pages 3:1–3:14, Dagstuhl, Germany, 2020. Schloss Dagstuhl – Leibniz-Zentrum für Informatik. doi:10.4230/OASIcs.NG-RES.2020.3.
- [30] Antoine Miné. Static analysis of embedded real-time concurrent software with dynamic priorities. Electronic Notes in Theoretical Computer Science, 331:3–39, 2017. Proceedings of the Sixth Workshop on Numerical and Symbolic Abstract Domains (NSAD 2016). doi:10.1016/j.entcs.2017.02.002.
- [31] Daniele Ottaviano, Francesco Ciraolo, Renato Mancuso, and Marcello Cinque. The Omnivisor: A Real-Time Static Partitioning Hypervisor Extension for Heterogeneous Core Virtualization over MPSoCs. In 36th Euromicro Conference on Real-Time Systems, ECRTS 2024, Lille, France, July 9-12, 2024, volume 298, pages 7:1–7:27. Schloss Dagstuhl – Leibniz-Zentrum für Informatik, 2024. doi:10.4230/LIPIcs.ECRTS.2024.7.
- [32] RTEMS Project. RTEMS - Applications. URL: https://www.rtems.org/applications/.
- [33] Xen Project. Embedded & automotive. URL: https://xenproject.org/projects/embedded-and-automotive/.
- [34] Ralf Ramsauer, Jan Kiszka, Daniel Lohmann, and Wolfgang Mauerer. Look mum, no VM exits! (almost). In Proceedings of the 13th Annual Workshop on Operating Systems Platforms for Embedded Real-Time Applications (OSPERT ’17), June 2017. doi:10.48550/arXiv.1705.06932.
- [35] Aoun Raza, Gunther Vogel, and Erhard Plödereder. Bauhaus – a tool suite for program analysis and reverse engineering. In Luís Miguel Pinho and Michael González Harbour, editors, Reliable Software Technologies – Ada-Europe 2006, pages 71–82, Berlin, Heidelberg, 2006. Springer Berlin Heidelberg. doi:10.1007/11767077_6.
- [36] Lilia Rouizi, Benjamin Binder, Mihail Asavoae, Engin Ermis, Lionel Rieg, and Florian Brandner. A POP is Born: Formal Predictable Out-of-Order Processor Model. Technical report, Technical Report (shortened paper published at RTAS’26), March 2026. URL: https://telecom-paris.hal.science/hal-05564756.
- [37] Marcelo Ruaro, Hadrien Barral, Matteo Bertolino, Rodrigo Cataldo, Roberto Medina, Mohamed Karaoui, and Etienne Borde. The last-level-cache interference in guest performance: a case-study with Zephyr OS. In 2023 26th Euromicro Conference on Digital System Design (DSD), pages 351–358, 2023. doi:10.1109/DSD60849.2023.00056.
- [38] Simmo Saan, Julian Erhard, Michael Schwarz, Stanimir Bozhilov, Karoliine Holter, Sarah Tilscher, Vesal Vojdani, and Helmut Seidl. Goblint: Abstract interpretation for memory safety and termination: (competition contribution). In International Conference on Tools and Algorithms for the Construction and Analysis of Systems, pages 381–386. Springer, 2024. doi:10.1007/978-3-031-57256-2_25.
- [39] Fabian Scheler and Wolfgang Schröder-Preikschat. The RTSC: Leveraging the migration from event-triggered to time-triggered systems. In Proceedings of the 13th IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC ’10), pages 34–41, Washington, DC, USA, May 2010. IEEE Computer Society Press. doi:10.1109/ISORC.2010.11.
- [40] Martin Schoeberl, Pascal Schleuniger, Wolfgang Puffitsch, Florian Brandner, and Christian W. Probst. Towards a Time-predictable Dual-Issue Microprocessor: The Patmos Approach. In Philipp Lucas and Reinhard Wilhelm, editors, Bringing Theory to Practice: Predictability and Performance in Embedded Systems, volume 18 of Open Access Series in Informatics (OASIcs), pages 11–21, Dagstuhl, Germany, 2011. Schloss Dagstuhl – Leibniz-Zentrum für Informatik. doi:10.4230/OASIcs.PPES.2011.11.
- [41] Bernd Schulz and Björn Annighöfer. Evaluation of adaptive partitioning and real-time capability for virtualization with xen hypervisor. IEEE Transactions on Aerospace and Electronic Systems, 58(1):206–217, 2021. doi:10.1109/TAES.2021.3104941.
- [42] Simon Schuster, Peter Wägemann, Peter Ulbrich, and Wolfgang Schröder-Preikschat. Proving real-time capability of generic operating systems by system-aware timing analysis. In 2019 IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), pages 318–330, 2019. doi:10.1109/RTAS.2019.00034.
- [43] Martin D. Schwarz, Helmut Seidl, Vesal Vojdani, Peter Lammich, and Markus Müller-Olm. Static analysis of interrupt-driven programs synchronized via the priority ceiling protocol. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’11, pages 93–104, New York, NY, USA, 2011. Association for Computing Machinery. doi:10.1145/1926385.1926398.
- [44] Gero Schwäricke, Rohan Tabish, Rodolfo Pellizzoni, Renato Mancuso, Andrea Bastoni, Alexander Zuepke, and Marco Caccamo. A Real-Time Virtio-Based Framework for Predictable Inter-VM Communication. In 2021 IEEE Real-Time Systems Symposium (RTSS), pages 27–40, December 2021. ISSN: 2576-3172. doi:10.1109/RTSS52674.2021.00015.
- [45] Soham Sinha and Richard West. Towards an Integrated Vehicle Management System in DriveOS. ACM Transactions on Embedded Computing Systems, 20:1–24, October 2021. doi:10.1145/3477013.
- [46] Parul Sohal, Rohan Tabish, Ulrich Drepper, and Renato Mancuso. E-WarP: A system-wide framework for memory bandwidth profiling and management. In 2020 IEEE Real-Time Systems Symposium (RTSS), pages 345–357, 2020. doi:10.1109/RTSS49844.2020.00039.
- [47] Yulei Sui and Jingling Xue. SVF: Interprocedural static value-flow analysis in LLVM. In Proceedings of the 25th International Conference on Compiler Construction, CC 2016, pages 265–266, New York, NY, USA, 2016. Association for Computing Machinery. doi:10.1145/2892208.2892235.
- [48] Connor Rudy Sullivan, Amin Mamandipoor, Cole Ridge Strickler, and Heechul Yun. Per-Bank Memory Bandwidth Regulation for Predictable and Performant Real-Time System. arXiv e-prints, page arXiv:2603.26054, March 2026. doi:10.48550/arXiv.2603.26054.
- [49] UNECE. UN regulation no. 152 rev.2. URL: https://unece.org/transport/documents/2023/06/standards/un-regulation-no-152-rev2.
- [50] Vesal Vojdani and Varmo Vene. Goblint: Path-sensitive data race analysis. Annales Univ. Sci. Budapest., Sect. Comp., 30:141–155, 2009.
- [51] Richard West, Ye Li, Eric Missimer, and Matthew Danish. A virtualized separation kernel for mixed-criticality systems. ACM Trans. Comput. Syst., 34(3), June 2016. doi:10.1145/2935748.
- [52] Heechul Yun, Gang Yao, Rodolfo Pellizzoni, Marco Caccamo, and Lui Sha. Memguard: Memory bandwidth reservation system for efficient performance isolation in multi-core platforms. In 2013 IEEE 19th Real-Time and Embedded Technology and Applications Symposium (RTAS), pages 55–64, 2013. doi:10.1109/RTAS.2013.6531079.
- [53] Zephyr Project homepage. URL: https://www.zephyrproject.org/.
- [54] Alexander Zuepke, Andrea Bastoni, Weifan Chen, Marco Caccamo, and Renato Mancuso. MemPol: Policing Core Memory Bandwidth from Outside of the Cores. In 2023 IEEE 29th Real-Time and Embedded Technology and Applications Symposium (RTAS), pages 235–248, May 2023. ISSN: 2642-7346. doi:10.1109/RTAS58335.2023.00026.
