Principles of Real-Time Programming

Real-time programming is a software engineering discipline that has been around ever since the dawn of digital computing. The dream of real-time programmers is to unlock the virtually unlimited potential of software for embedded computer systems - digital computers that are supposed to behave like analog devices. The perfect embedded computer system is invisibly hybrid, it works according to the largely unidentified laws of embedded software but acts according to the laws of physics. The critical interface between embedded software and physics is real-time and yet, while physical processes evolve in real-time, software processes do not. Only the embedded computer system as a whole - embedded software and hardware - determines a complex notion of so-called soft-time to which the software processes adhere: mapping soft-time to real-time is the art of real-time programming. We discuss various realtime programming models that support the development of real-time programs based on different abstractions of soft-time. We informally introduce a real-time process model to study (1) the compositionality of the real-time programming models and (2) the semantics of real-time programs developed in these models.

[1]  Tammy Noergaard,et al.  Embedded Software , 2003, Lecture Notes in Computer Science.

[2]  Pascal Raymond,et al.  The synchronous data flow programming language LUSTRE , 1991, Proc. IEEE.

[3]  Giorgio Buttazzo,et al.  Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications , 1997 .

[4]  Sharad Malik,et al.  Performance analysis of real-time embedded software , 1997 .

[5]  S. Ramesh,et al.  Communicating reactive processes , 1993, POPL '93.

[6]  Chung Laung Liu,et al.  Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment , 1989, JACM.

[7]  Gérard Berry,et al.  The foundations of Esterel , 2000, Proof, Language, and Interaction.

[8]  Nicolas Halbwachs,et al.  Synchronous Programming of Reactive Systems , 1992, CAV.

[9]  Thomas A. Henzinger,et al.  Time-Safety Checking for Embedded Programs , 2002, EMSOFT.

[10]  James W. Layland,et al.  Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment , 1989, JACM.

[11]  Nicolas Halbwachs,et al.  From a Synchronous Declarative Language to a Temporal Logic Dealing with Multiform Time , 1988, FTRTFT.

[12]  Niklaus Wirth,et al.  Toward a discipline of real-time programming , 1977, CACM.

[13]  Thomas A. Henzinger,et al.  Giotto: a time-triggered language for embedded programming , 2001, Proc. IEEE.

[14]  Thomas A. Henzinger,et al.  A Giotto-Based Helicopter Control System , 2002, EMSOFT.

[15]  Joseph Sifakis,et al.  Modeling Real-Time Systems-Challenges and Work Directions , 2001, EMSOFT.