22C:116, Lecture 20, Spring 1997

Douglas W. Jones
University of Iowa Department of Computer Science

  1. General Concepts in Distributed Systems

    There is a broad (and in fact, multidimensional) spectrum of distributed systems. To explore this spectrum, consider asking the following questions:

    In answering these questions, four large classes of systems emerge, isolated uniprocessors, the typical subject of introductory courses, plus multiprocessors, networks of systems, and distributed systems.

    To add to the confusion, the answers to some of these questions may change depending on the level of abstraction from which the system is examined. For example, some systems that appear to share memory at the user level are implemented on top of packet switched networks.

  2. Multiprocessors

    Some computer systems have multiple CPU's and multiple memories, but (under the constraints of some protection mechanism) any code running on any processor may access any location in memory. Some of these machines have a single ready list shared equally by all processors, while others assign processes to processors for any of a variety of reasons.

    The Encore systems that the University of Iowa is recently phased out, and the new large Silicon Graphics systems on campus are examples of such multiprocessors. This idea dates back to work by Conway in the early 1960's, and was widely used on Burroughs mainframes from the mid 1960's onward. In the late 1970's, Encore and Sequent reintroduced such architectures in the marketplace, and today, such architectures are relatively common in high-end scientific computation.

    It is important to note that, at some level of abstraction, multiprocessor systems may be viewed as having a communications network. Typically, this network connects processors and memory, and it is typically possible to isolate transactions on this network that resemble messages. If the messages in the interconnection network are generated by hardware and concern individual memory references, we will classify such systems as shared-memory systems, while if the messages are at a higher level, generated by software at the user or system level, we will claffify such systems as distributed systems.

    Operating systems for multiprocessors frequently differ only slightly from systems for uniprocessors. The difference is that, where a uniprocessor had a single idle process on the ready list, multiprocessors must have enough idle processes to satisfy all processors when there is no work to be done, and the ready list can be shared equally by all processors. If a system is written with a uniform mechanism for entry and exit from critical sections, most of the changes required to move such a system to a multiprocessor are confined to this mechanism. This explains why UNIX has been successfully ported to a number of multiprocessors.

  3. Network Operating Systems

    A network operating system is a conventional operating system which includes provisions for attaching it to a network. Most versions of UNIX in common use today are network operating systems, and networking features have become standard in MacOS and the systems from Microsoft.

    Typical features that distinguish a network operating system from a stand-alone operating system include:

    Remote Command Execution, for example, as provided by the UNIX rsh command. This allows a user to issue a command to be executed on a particular remote system. For example, to run a command on a remote UNIX system (assuming you have accounts on both that are configured appropriately):

    	rsh cow command
    This runs the indicated command on a machine called cow.

    Remote File Access, for example, as provided by the UNIX rcp command or by the more general ftp subsystem. These allow users to copy files from one system to another. For example, to copy a file from one UNIX system to another (assuming the appropriate accounts exist with the appropriate rights):

    	rcp cow:src goat:dst
    This copies the file src on cow to the file dst on goat.

    Remote Login, for example, as provided by the UNIX rcp command or by the more general telnet subsystem. These allow users of one system to open interactive sessions on a remote system, for example, to start a session on a machine named herky, type:

    	rlogin herky

    At a lower level, network operating systems must provide user processes with access to communications protocols for communicating over the network with processes on remote machines. These provide the basis for the implementation of network-oriented commands such as those outlined above.

    Network file systems are a special feature of most network operating systems. These allow multiple machines in a network to share one logical file system, even though the different machines may run otherwise unrelated operating systems. For example, the NFS protocols developed originally by Sun Microsystems provide this ability for UNIX systems, and there are versions of the MacOS and the various Microsoft operating systems that allow those machines to support these protocols.

  4. Distributed Operating Systems

    A distributed operating system differs from a network of machines each supporting a network operating system in only one way: The machines supporting a distributed operating system are all running under a single operating system that spans the network. Thus, the print spooler might, at some instant, be running on one machine, while the file system is running on others, while other machines are running other parts of the system.

    With network operating systems, each machine runs an entire operating system. With distributed operating systems, the entire system is itself distributed across the network. As a result, distributed operating systems typically make little distinction between remote execution of a command and local execution of that command. In theory, all commands may be executed anywhere; it is up to the system to execute commands where it is convenient.

  5. Homogenous and Inhomogenous Systems

    Network operating systems are naturally compatable with inhomogenous networks, that is, networks containing many different kinds of machines. Thus, for example, the Internet connects many UNIX machines, but it also connects machines running DEC's VMS operating system, IBM PCs running MS/DOS, OS/2 and Windows NT, IBM Mainframes running IBM's VM operating system, and Apple Macintosh computers. This inhomogeneity is tolerated as long as each network operating systems involved supports some subset of the same protocols.

    Distributed operating systems have typically been implemented on homogenous networks, where all machines support identical instruction sets. In fact, though, if there are any differences between machines, even, for example, differences in optional extensions such as floating point units, the system must distinguish between machines in exactly the same way it would have to if it supported machines with different instruction sets.

    The most troublesome differences in a distributed system are those involving differences in data representation.