next up previous contents
Next: 2 Analysis & Design Up: Unix Communication Facilities Previous: List of Tables

1 Introduction

This chapter
  • describes the goals of this Individual Project
  • gives a brief background to the subject area
  • states the contents of the following chapters

The UNIX operating system is one of the older of the widely used operating systems, with a history of more than 30 years. UNIX has changed over the time, and many of its most distinctive and useful facilities are relatively recent developments [Leff88]. The design of the UNIX operating system had a major impact on nearly all operating systems developed later.

UNIX supports multiple processes to be (virtually) executed at the same time. Processes ``live'' and sometimes need to communicate to exchange data or to synchronize their work. Originally UNIX had very poor ``interprocess'' communication facilities. Today many different approaches are available. Some are restricted to work only for processes which are executed on the same computer, and some make it possible for communication between processes on different computers via a network.

The aim of this Individual Project is to

It is assumed that the reader has a good knowledge of C/C++, as no programming language features are described. If this is not the case, [Strou91] is a good starting point for learning C++.

The reader should also be familiar with the UNIX operating system and normal UNIX programming. This does not include network programming. This document does not describe how to invoke a C/C++ compiler, how to use 'make' or other UNIX standard commands.

1.1 Outline

There now follows an outline of the purpose of subsequent chapters.

Chapter 2 summarizes what was done to achieve the aims stated above, discusses some design decisions (with reasons why certain decisions were taken) and gives important background information. This includes: the history of the UNIX operating system; important UNIX standards; communication principles; the principles of client/server communication and the aim of interprocess communication.

Chapter 3 describes the interprocess communication (IPC) facilities which are only available if the processes which want to communicate run on the same computer.

Communication between processes on different computers adds additional complexity. Therefore the principles of networking in general are described in Chapter 4.

As theory is nice, but useless without practice, the successful TCP/IP protocol suite is summarized in Chapter 5 as an example of an existing network protocol.

This information is then used in Chapter 6 to cover two different Application Protocol Interfaces (APIs) for networking: BSD sockets and the System V Transport Layer Interface (TLI). These two interfaces are used to demonstrate how to write client and server applications that use the TCP/IP protocol suite.

In Chapters 3 and 6 example programs demonstrate how to use the described interprocess communication facilities.

To choose the right IPC facility for a specific purpose the performance is often important. Therefore the performance of all described IPC facilities are measured, compared and discussed in Chapter 7.

The overheads of making communication reliable in spite of using an unreliable communication service are discussed in Chapter 8. Functions are developed which use an unreliable protocol (e.g. UDP), but enable reliable communication between two or more processes.

Chapter 9 covers the conclusions of this Individual Project, describes shortcomings, possible improvements and gives a short overview about new developments.

The annotated references chapter Chapter 10 contains the books and other information sources that were used to write this document.

The Appendix contains


next up previous contents
Next: 2 Analysis & Design Up: Unix Communication Facilities Previous: List of Tables

Gerhard Müller