Distributed Computing

Commuicating between temporally independent software programs.

Introduction

The term distributed computing typically conjures up images of multiple computer systems connect by a network cooperating to achive a large scale objective. Although that covers a common scenario, I am extending the definition to include any computing problem that requires more than one "independently" operating computer programs to cooperatively solve a problem.

The reasons for "distributing" an application are varied. In the typical case it is done to enhance performance or scalability. Using my definition, distributed computing can include multi-threaded applications running on a single processor. While the techniques used for communicating between the threads are somewhat different than those applications that use CORBA to communicate across a WAN over TCP/IP, many of the fundamental issues are the same.

Distributed computing systems can be catagorized by the communications medium as follows:

Shared memory systems are able to exchange data directly through memory.

Shared address spaces have the ability to exchange memory addresses without translation. This is a feature of multi-threaded applications.

Separate address spaces can exist on a given processor through the use of an MMU. This type of shared memory communication is possible on a single or SMP processor using multiple processes. It is also common in "Real-Time" systems that have multiple processors on a single bus sharing memory resources that may be on a card separate from the processors.