Evolving real-time systems using hierarchical scheduling and concurrency analysis

We have developed a new way to look at real-time and embedded software: as a collection of execution environments created by a hierarchy of schedulers. Common schedulers include those than run interrupts, bottom-half handlers, threads, and events. We have created algorithms for deriving response times, scheduling overheads, and blocking terms for tasks in systems containing multiple execution environments. We have also created task scheduler logic, a formalism that permits checking systems for race conditions and other errors. Concurrency analysis of low-level software is challenging because there are typically several kinds of locks, such as thread mutexes and disabling interrupts, and groups of cooperating tasks may need to acquire some, all or none of the available types of locks to create correct software. Our high-level goal is to create systems that are evolvable: they are easier to modify in response to changing requirements than are systems created using traditional techniques. We have applied our approach to two case studies in evolving software for networked sensor nodes.

[1]  Kevin Jeffay,et al.  Accounting for interrupt handling costs in dynamic priority task systems , 1993, 1993 Proceedings Real-Time Systems Symposium.

[2]  John Regehr,et al.  Lock inference for systems software , 2003 .

[3]  Aaron Greenhouse,et al.  Assuring and evolving concurrent programs: annotations and policy , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[4]  Mark Klein,et al.  A practitioner's handbook for real-time analysis - guide to rate monotonic analysis for real-time systems , 1993, The Kluwer international series in engineering and computer science.

[5]  Sanjoy K. Baruah,et al.  A framework for achieving inter-application isolation in multiprogrammed, hard real-time environments , 2000, Proceedings 21st IEEE Real-Time Systems Symposium.

[6]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[7]  Victor Yodaiken The RTLinux Manifesto , 1999 .

[8]  Manas Saksena,et al.  Scalable real-time system design using preemption thresholds , 2000, Proceedings 21st IEEE Real-Time Systems Symposium.

[9]  John Regehr,et al.  HLS: a framework for composing soft real-time schedulers , 2001, Proceedings 22nd IEEE Real-Time Systems Symposium (RTSS 2001) (Cat. No.01PR1420).

[10]  John Regehr,et al.  Inferring Scheduling Behavior with Hourglass , 2002, USENIX Annual Technical Conference, FREENIX Track.

[11]  Alan Burns,et al.  Applying new scheduling theory to static priority pre-emptive scheduling , 1993, Softw. Eng. J..

[12]  David E. Culler,et al.  System architecture directions for networked sensors , 2000, SIGP.

[13]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[14]  Martín Abadi,et al.  Types for Safe Locking , 1999, ESOP.

[15]  Jane W.-S. Liu,et al.  An Open Environment for Real-Time Applications , 1998, Real-Time Systems.

[16]  Lui Sha,et al.  Priority Inheritance Protocols: An Approach to Real-Time Synchronization , 1990, IEEE Trans. Computers.

[17]  John P. Lehoczky,et al.  Analysis of hierar hical fixed-priority scheduling , 2002, Proceedings 14th Euromicro Conference on Real-Time Systems. Euromicro RTS 2002.

[18]  Aloysius K. Mok,et al.  A model of hierarchical real-time virtual resources , 2002, 23rd IEEE Real-Time Systems Symposium, 2002. RTSS 2002..