IMMD-IV UP DOWN Last change: 5.5.1995

Programming Models for Distributed Systems

The common programming model on UNIX derived operating systems is usually called process model. Its active system component - the process - consists of several system ressources (memory, files, ...) and is the schedulable entity of the system. Only one activity per process acting on one address space can be launched in this model. This is directly derived from the underlying single processor machine model for which the process model was primarily designed. The process control interface normally consists of a few primitives allowing to create or terminate processes and wait for other processes' termination. POSIX compatible operating systems provide this interface via the fork, exit and wait system calls.

When extending the usual single processor model towards a multiprocessor one or even tend to use distributed systems (e.g. workstation networks), you have to rethink your programming model as well. A few current operating systems support running a couple of processes in parallel onto a multiprocessor machine. These processes have the ability to commucicate via IPC (inter process communication) mechanism in a message passing manner.

Current research operating systems enhance the process model to a more powerful one, allowing more than one activity to run in one address space. These activities are commonly called threads of control or simply threads, therefore this multiprocessor programming model is normally referred to as the multithread model. Example runtime systems implementing a multithreaded programming environment are:

One lack of this model is, that it can only be applied to closely coupled (or shared memory) multiprocessor architectures. Machines with this kind of architecture tend to scale well up to a certain number of processors and then their internal communication structure (normally the main bus) becomes the main bottleneck. For more than a fixed number of processors, loosely coupled multiprocessor architecture (NORMA) machines were designed. These multiprocessors communicate via some kind of internal network - slower that the main bus solution, but scaling better.

The classification for multiprocessor architectures into UMA, NUMA, NORMA, etc. was first presented in "Michael Young, Avadis Tevanian, Jr., Richard Rashid, David Golub Jeffrey Eppinger, Jonathan Chew, William Bolosky, David Black, and Robert Baron, The Duality of Memory and Communication in the Implementation of a Multiprocessor Operating System", Proceedings of the 11th Symposium on Operating Systems Principles, November, 1987

For loosely coupled multiprocessor machines and distributed systems, there exist two main lines in programming paradigms:

As the message passing model normally forces the programmer to rewrite his programs from scratch or to rethink the whole algorithm structure, research concentrates on extensions to the shared memory model.

This issue, normally addressed as distributed shared memory (DSM), has been widely thought by many researchers and a few implementations are available. DSM builds up the abstraction of a virtually global shared memory or regions of shared memory onto a loosely coupled multiprocessor or even a multicomputer environment.

An UCSTRI search with the keywords "distributed shared memory" gave these results.

Erich Meier, Uni Erlangen, 1995