Combining EDF Scheduling with occam using the Toc Programming Language

A special feature of the occam programming language is that its concurrency support is at the very base of the language. However, its ability to specify scheduling requirements is insufficient for use in some real-time systems. Toc is an experimental programming language that builds on occam, keeping occam's concurrency mechanisms, while fundamentally changing its concept of time. In Toc, deadlines are specified directly in code, replacing occam's priority constructs as the method for controlling scheduling. Processes are scheduled lazily, in that code is not executed without an associated deadline. The deadlines propagate through channel communications, which means that a task blocked by a channel that is not ready will transfer its deadline through the channel to the dependent task. This allows the deadlines of dependent tasks to be inferred, and also creates a scheduling effect similar to priority inheritance. A compiler and run-time system has been implemented to demonstrate these principles

[1]  Markus Forsberg,et al.  BNF Converter: Multilingual front-end generation from labelled BNF , 2004 .

[2]  Theodore P. Baker,et al.  A stack-based resource allocation policy for realtime processes , 1990, [1990] Proceedings 11th Real-Time Systems Symposium.

[3]  Steve A. Schneider,et al.  Concurrent and Real-time Systems: The CSP Approach , 1999 .

[4]  Joseph Y.-T. Leung,et al.  On the complexity of fixed-priority scheduling of periodic, real-time tasks , 1982, Perform. Evaluation.

[5]  Martin Korsgaard,et al.  Introducing Time Driven Programming using CSP/occam and WCET Estimates , 2007 .

[6]  Reinhold Heckmann,et al.  Computing the Worst Case Execution Time of an Avionics Program by Abstract Interpretation , 2007 .

[7]  Peter H. Welch,et al.  Communicating Mobile Processes : Introducing occam-pi , 2005 .

[8]  Giorgio C. Buttazzo,et al.  Rate Monotonic vs. EDF: Judgment Day , 2003, Real-Time Systems.

[9]  A. Burns,et al.  Programming Execution-Time Servers in Ada 2005 , 2006, 2006 27th IEEE International Real-Time Systems Symposium (RTSS'06).

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

[11]  Alan Burns,et al.  Guide for the use of the Ada Ravenscar Profile in high integrity systems , 2004, ALET.

[12]  Victor Yodaiken,et al.  Against priority inheritance , 2004 .

[13]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[14]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[15]  Gérard Berry,et al.  The Esterel Synchronous Programming Language: Design, Semantics, Implementation , 1992, Sci. Comput. Program..

[16]  Alan Burns,et al.  Real-Time Systems and Programming Languages , 2009 .

[17]  D. Q. Zhang,et al.  Some practical issues of the transputer based real-time systems , 1992, Proceedings of the 1992 International Conference on Industrial Electronics, Control, Instrumentation, and Automation.

[18]  Joe Armstrong,et al.  ERLANG - an experimental telephony programming language , 1990, International Symposium on Switching.

[19]  C. Ferdinand Worst Case Execution Time Prediction by Static Program Analysis , 2004, IPDPS.

[20]  Colin J. Fidge,et al.  A formal definition of priority in CSP , 1993, TOPL.

[21]  Karl-Erik Årzén,et al.  Feedback–Feedforward Scheduling of Control Tasks , 2002, Real-Time Systems.

[22]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

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