The arrival and popularity of multi-core processors have sparked a renewed
interest in the development of parallel programs. Similarly, the availability
of low cost microprocessors and sensors has generated a great interest in embedded
real-time programs. This book provides students and programmers
with traditional backgrounds in sequential programming the opportunity
to expand their capabilities into these important emerging paradigms. It
also addresses the theoretical foundations of real-time scheduling analysis,
focusing on theory that is useful for real applications.
Two excellent books by Burns and Wellings (2007; 2009) provide a complete,
in depth presentation of Ada’s concurrent and real-time features. They
make use of Ada’s powerful object-oriented programming features to create
high-level concurrent patterns. These books are “required reading” for software
engineers working with Ada on real-time projects. However, we found
that their coverage of all of Ada’s concurrent and real-time features and the
additional level of abstraction provided by their clever use of the objectoriented
paradigm made it difficult for our undergraduate students to grasp
the fundamental concepts of parallel, embedded, and real-time programming.
We believe that the subset of Ada presented in this book provides
the simplest model for understanding the fundamental concepts. With this
basic knowledge, our readers can more easily learn the more detailed aspects
of the Ada language and the more widely applicable patterns presented by
Burns and Wellings. Readers can also apply the lessons learned here with
Ada to the creation of systems written in more complex languages such as
C, C++, and real-time Java.
The first chapter gives an overview of and motivation for studying parallel,
embedded, and real-time programming. The fundamental terminology
of parallel, concurrent, distributed, real-time, and embedded systems is presented
in the context of two cooks sharing resources to prepare food.