The main purpose behind this text is to introduce the reader to a special category of distributed systems. That of open distributed systems. A number of experimental distributed systems have been built in Universities and research laboratories. Each of these was developed to demonstrate different concepts and consequently has a number of strengths and weaknesses. However, it is not possible to take the strong parts from each system and put them together to make a really good distributed system. This is because the individual components of the systems were designed and built to work only with other components of the local system. This book is not about distributed operating systems.
An Open Distributed System is made up of components that may be obtained from a number of different sources, which together work as a single distributed system. In 1988 the International Standards Organization (ISO) began work on preparing standards for Open Distributed Processing (ODP). These standards have now largely been completed, and define the interfaces and protocols to be used in the various components in an open distributed system. The first task of the group working on the ODP standards is to define a reference model from which individual standards will be identified. The material used in this book is designed to enable the reader to understand the ODP standards and to see how they all fit together. However, this is not a book about the ODP standards, it is a book containing the background technical knowledge about distributed systems necessary to understand and interpret the standards.
The ODP standards are intended to provide the framework within which distributed applications may be built and executed. This is an application oriented view. However, the standards will use a large number of system oriented mechanisms to support the applications, hence a lot of the material in this text is system oriented. In order to include as much material as possible on distributed systems we have assumed that the reader will be familiar with a number of other technical areas.
These include an understanding of Communications Architectures such as the Open Systems Interconnection architecture, or the US Department of Defense Internet Architecture, together with some understanding of centralized operating systems architectures. It is also helpful to have some familiarity with high level programming abstractions, such as Object Oriented programming or the Abstract Data Type methodology.
The text includes references to other books, papers, and journals that are intended to provide background reading where such an assumption is made.