This project is directed at the development of software design and validation methods for supporting mixed-criticality workloads in avionics systems. The primary target of this research is unmanned air vehicles (UAVs). Next-generation UAVs will be much more sophisticated in terms of their planning and decision-making capabilities than current designs. This will result in a significant increase in the computational workload that must be hosted on board. It would clearly be desirable to host this workload on as few processors as possible, to reduce weight and volume. This can be partially accomplished by co-hosting applications of different criticalities on the same computing platform. The overall hardware infrastructure can be further reduced, while enhancing processing capabilities at the same time, by using multicore processors. For such reductions to be possible, operating-system (OS) infrastructure must be developed that allows co-hosted subsystems of different criticalities to be "isolated" from one another. The major goal of this project is to produce this needed infrastructure, with an emphasis on providing isolation from a real-time perspective.
The needed OS infrastructure will be provided by developing a container framework that allows subsystems of different criticalities to be encapsulated and isolated from one another. In its most conventional sense, a container is simply a task group that is managed in such a way that tasks inside the group are isolated from tasks outside the group. We seek to expand the concept of "isolation" so that the timing correctness of subsystems can be validated at different criticality levels. Components of higher criticality require more conservative provisioning and have more stringent timing requirements than those of lower criticality.
The research to be undertaken consists of both algorithmic and implementation components. Algorithmic research is focusing on the development of scheduling and synchronization algorithms for supporting real-time containers of different criticalities, and associated analysis techniques for validating timing constraints. In the implementation component of the project, the scheduling and synchronization algorithms that are produced are being implemented in LITMUSRT, a UNC-produced real-time variant of Linux, and evaluation studies are being conducted using avionics workloads. The container framework being developed will allow resources to be dynamically re-provisioned at runtime (which may be needed to enable a UAV to react to events in its environment). Because high-criticality components are conservatively provisioned, they will (almost) never overrun their allocation budgets. The same is not true of low-criticality components. A key focus of this project is the development of policies for dealing with overloads at low criticality levels and for allowing unused processing capacity at high levels to be redistributed to low levels.