Summary

This paper argues fiercely that real-time systems designed with a paradigm that has some formal background, and implemented with a mapping as close to 1-1 as possible, yields higher quality systems.

CSP is one such formal theory. The parallel language occam is an "instance" of a subset of CSP.

Modern message-based real-time operating systems often are designed upon asynchronous & buffered, non-blocking communication. CSP/occam has synchronous & non-buffered, blocking communication. More: a receiver can decide whether it wants to receive a message, and the sender will hang until the receiver turns the switch "on". See figure.

alt_occam_code.gif (3533 bytes)

Basing a design upon this paradigm crystallises problems inherent in all concurrent systems: deadlock, livelock and starvation - but the design is now analysable with respect to these traits. A deadly cycle in the communication path is often easy to see, but tools exist that can do this automatically.

An experienced real-time programmer will, with this paradigm, use known design patterns to f.ex. break up cycles to remove possible deadlocks. An OverWriteBuffer is such a pattern.

A comprehensive reference list is included. It also points to work that has been done to implement CSP libraries in Java, and points to two occam compilers for machines other than transputers. One of them generates ANSI-C, and is (in 1998) being used in sailing systems (-I- and -II-).

Also see References