Supervisor:
How to exploit self-explaining hardware and software in low-level software?
Previous work assumed that both compiler and operating system (OS) have a complete picture of a system’s state and thus can properly reason about its behavior. However, this no longer holds when interactions with lower or higher abstraction layers in complex systems are considered. Systems-of-systems exhibit dynamism which cannot be captured entirely by design tools such as a compiler.
This PhD project will thus relax the above assumption and will do research on supporting unexpected situations where the upper layers (system-of-systems level, system level, high-level software) have to react. These reactions and their associated explanations need to be fed to the OS, together with criteria helping the OS to judge whether the current situation is some kind of counter-intuitive behavior.
The interfaces between compiler and OS need to be extended by support for such structured information and explanations from higher layers. Similarly, unexpected hardware events (e.g., failures, congestion, thermal issues, battery levels etc.) and explanations will also be considered, e.g., by integrating virtual prototypes.
Desirable background and expertise: Knowledge in embedded operating systems, scheduling and/or compilers, and interest in static code analysis and multi-objective optimization. Programming experience in C++, C.