Multiprogramming Coordination

This is a tutorial paper on the coordination of parallel activities It commences with an overview of multiprogrammed operating systems that uncovers an architecture consisting of cooperating, but competing processes working in parallel This is followed by a formal treatment of processes, and an analysis of the fundamental coordination needs of concomitant processes. The analysm leads to a set of two coordination primitives originally defined by Dijkstra. In the rest of the paper, an evolutionary series of examples of increasing coordination complexity is formulated and solved. As the various examples are discussed, cumulative extenmons to the original set of coordination primitives are justified and formally defined.