Real-time systems are computer systems that are required not only to produce the correct output values, as a reaction to the system inputs, but also to produce these values at the correct time. In my work, I focus on hard real-time systems, where failing to respect some constraints may have catastrophic consequences. The flight-control system of an airplane, or the autonomous driving system of a car, are good examples of hard real-time systems. A real-time system can be represented as a set of concurrent tasks, where each task either senses, computes, or actuates. Each task is subject to real-time constraints, such as periodicity and deadline constraints. Reacting faster than these constraints usually does not improve the quality of the system. Instead, the main focus of hard real-time systems development is to ensure that the constraints will always be met, so as to ensure the system safety. The development of hard real-time systems involves several research domains, which are traditionally studied by separate research communities. An important part of my work focuses on the connection between these domains. My contributions concern three main topics. First, I studied the programming of real-time systems with a domain-specific synchronous data-flow language called Prelude. Second, I studied high-level timing analyses, that is to say analyses that ensure that the system will respect all its real-time constraints at execution. Third, I studied low-level timing analyses, which analyse the code of a task to determine its Worst-Case Execution Time.
defended on 12/06/2023