Reflective Real-Time Systems?
John A. Stankovic
Department of Computer Science
University of Massachusetts
June 28, 1993
This paper describes how the notion of a reflective architecture can serve as a central principle for building complex and flexible real-time systems, contributing to making them more dependable. By identifying reflective information, exposing it to application code, and retaining it at run time, a system is capable of providing predictable performance with respect to timing constraints, of reacting in a flexible manner to changing dynamics in the environment including faults, to be more robust to violations of initial assumptions, to better evolve over time, and even for better monitoring, debugging, and understanding of the system. Advantages of this approach are given and details on the specific implementation of a reflective architecture are provided. Several open questions are also presented.
KEYWORDS: Fault tolerance, adaptability, flexibility, dependability, real-time, scheduling, critical tasks, and reflective architectures.
Building real-time systems for critical applications and showing that they meet functional, fault, and timing requirements are complex tasks. At the heart of this complexity there exist several opposing factors. These include:
ffl the desire for predictability versus the need for flexibility to handle non-deterministic and complex environments, failures, and system evolution,
ffl the need for efficient performance and low cost versus understandability,
ffl the need for abstraction to handle complexity versus the need to include implementation details in order to assess timing properties, and
ffl the need for autonomy (to better deal with faults and scaling) versus the need for cooperation (to achieve application semantics).
?This work has been supported, in part, by NSF under grants IRI 9208920 and CDA 8922572, by ONR under grant N00014-92-J-1048, and by CNR-IEI under the PDCS project.