Experiences with the Amoeba distributed operating system

The Amoeba project is a research effort aimed at understanding how to connect multiple computers in a seamless way [16, 17, 26, 27, 31]. The basic idea is to provide the users with the illusion of a single powerful timesharing system, when, in fact, the system is implemented on a collection of machines, potentially distributed among several countries. This research has led to the design and implementation of the Amoeba distributed operating system, which is being used as a prototype and vehicle for further research. In this article we will describe the current state of the system (Amoeba 4.0), and show some of the lessons we have learned designing and using it over the past eight years. We will also discuss how this experience has influenced our plans for the next version, Amoeba 5.0. Amoeba was originally designed and implemented at the Vrije Universiteit in Amsterdam, and is now being jointly developed there and at the Centrum voor Wiskunde en Informatica, also in Amsterdam. The chief goal of this work is to build a distributed system that is transparent to the users. This concept can best be illustrated by contrasting it with a network operating system, in which each machine retains its own identity. With a network operating system, each user logs into one specific machine—his home machine. When a program is started, it executes on the home machine, unless the user gives an explicit command to run it elsewhere. Similarly, files are local unless a remote file system is explicitly mounted or files are explicitly copied. In short, the user is clearly aware that multiple independent computers exist, and must deal with them explicitly. In contrast, users effectively log into a transparent distributed system as a whole, rather than to any specific machine. When a program is run, the system—not the user—decides upon the best place to run it. The user is not even aware of this choice. Finally, there is a single, system-wide file system. The files in a single directory may be located on different machines, possibly in different countries. There is no concept of file transfer, uploading or downloading from servers, or mounting remote file systems. A file's position in the directory hierarchy has no relation to its location. The remainder of this article will describe Amoeba and the lessons we have learned from building it. In the next section, we will give a technical overview of Amoeba as it currently stands. Since Amoeba uses the client-server model, we will then describe some of the more important servers that have been implemented so far. This is followed by a description of how wide-area networks are handled. Then we will discuss a number of applications that run on Amoeba. Measurements have shown Amoeba to be fast, so we will present some of our data. After that, we will discuss the successes and failures we have encountered, so that others may profit from those ideas that have worked out well and avoid those that have not. Finally we conclude with a very brief comparison between Amoeba and other systems. Before describing the software, however, it is worth saying something about the system architecture on which Amoeba runs.

[1]  Henri E. Bal,et al.  Implementing Distributed Algortihms using Remote Procedure Call , 1899 .

[2]  Jack B. Dennis,et al.  Programming semantics for multiprogrammed computations , 1966, CACM.

[3]  E. L. Lawler,et al.  Branch-and-Bound Methods: A Survey , 1966, Oper. Res..

[4]  L. Goddard,et al.  Operations Research (OR) , 2007 .

[5]  Edwin Weiss,et al.  A user authentication scheme not requiring secrecy in the computer , 1974, Commun. ACM.

[6]  Yogen K. Dalal,et al.  Broadcast protocols in packet switched computer networks , 1977 .

[7]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[8]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[9]  Michael Stonebraker,et al.  Operating system support for database management , 1981, CACM.

[10]  T. Anthony Marsland,et al.  Parallel Search of Strongly Ordered Game Trees , 1982, CSUR.

[11]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[12]  Andrew S. Tanenbaum,et al.  A distributed file service based on optimistic concurrency control , 1985, SOSP '85.

[13]  Andrew S. Tanenbaum,et al.  Distributed operating systems , 2009, CSUR.

[14]  Robbert van Renesse,et al.  Using Sparse Capabilities in a Distributed Operating System , 1986, ICDCS.

[15]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[16]  Andrew S. Tanenbaum,et al.  The Design of a Capability-Based Distributed Operating System , 1986, Comput. J..

[17]  Calton Pu,et al.  Regeneration of replicated objects: A technique and its Eden implementation , 1986, 1986 IEEE Second International Conference on Data Engineering.

[18]  Calton Pu,et al.  Regeneration of Replicated Objects: A Technique and Its Eden Implementation , 1986, ICDE.

[19]  Andrew S. Tanenbaum A UNIX clone with source code for operating systems courses , 1987, OPSR.

[20]  Robbert van Renesse,et al.  Connecting RPC-Based Distributed Systems Using Wide-Area Networks , 1987, ICDCS.

[21]  David R. Cheriton,et al.  The V distributed system , 1988, CACM.

[22]  Robbert van Renesse,et al.  Voting with ghosts , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[23]  Andrew R. Cherenson,et al.  The Sprite network operating system , 1988, Computer.

[24]  B. Clifford Neuman,et al.  Kerberos: An Authentication Service for Open Network Systems , 1988, USENIX Winter.

[25]  John K. Ousterhout,et al.  Pseudo Devices: User-Level Extensions to the Sprite File System , 1988 .

[26]  Erik H. Baalbergen Design and Implementation of Parallel Make , 1988, Comput. Syst..

[27]  Robbert van Renesse,et al.  Performance of the world's fastest distributed operating system , 1988, OPSR.

[28]  Henri E. Bal,et al.  Distributed programming with shared data , 1988, Proceedings. 1988 International Conference on Computer Languages.

[29]  Andrew S. Tanenbaum,et al.  A Critique of the Remote Procedure Call Paradigm , 1988 .

[30]  Claude Kaiser,et al.  CHORUS Distributed Operating System , 1988, Comput. Syst..

[31]  Michael Burrows,et al.  Performance of Firefly RPC , 1989, SOSP '89.

[32]  Kees Verstoep,et al.  On the design of the amoeba configuration manager , 1989, SCM.

[33]  Guido van Rossum AIL - a Class-oriented RPC Stub Generator for Amoeba , 1989, Process in Distributed Operating Systems and Distributed Systems Management.

[34]  Robbert van Renesse,et al.  The performance of the Amoeba distributed operating system , 1989, Softw. Pract. Exp..

[35]  Robbert van Renesse,et al.  The design of a high-performance file server , 1989, [1989] Proceedings. The 9th International Conference on Distributed Computing Systems.

[36]  Henri E. Bal,et al.  An efficient reliable broadcast protocol , 1989, OPSR.

[37]  Robbert van Renesse,et al.  Amoeba A Distributed Operating System for the 1990 s Sape , 1990 .

[38]  Larry L. Peterson,et al.  The x-kernel: a platform for accessing internet resources , 1990, Computer.