Abstract
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 Accetta, M., Baron, R., Bolosky W., Golub, D., Rashid, R., Tevanian, A., and Young, M. Mach: A new kernel foundation for Unix Development. In Proceedings of the Summer Usenix Conference (Atlanta, CA, July 1986).Google Scholar
- 2 Baalbergen, E.H., Verstoep, K., and Tanenbaum, A.S. On the design of the Amoeba configuration manager. In Proceedings of the 2d International Workshop on Software Configuration Management ACM, N.Y., (1989). Google ScholarDigital Library
- 3 Bal, H.E., Van Renesse, R., and Tanenbaum, A.S. Implementing distributed algorithms using remote procedure call. In Proceedings of the National Computer Conference, AFIPS (1987), pp. 499-505.Google Scholar
- 4 Bal, H.E., and Tanenbaum, A.S. Distributed programming with shared data. IEEE Conference on Computer Languages, IEEE (1988), pp. 82-91.Google ScholarCross Ref
- 5 Birrell, A.D., and Nelson, B.J. Implementing remote procedure calls. ACM Trans. Comput. Syst. 2 (Feb. 1984), 39-59. Google ScholarDigital Library
- 6 Cheriton, D.R. The V distributed system. Commun. ACM 31 (March 1988), 314-333. Google ScholarDigital Library
- 7 Dalal, Y.K. Broadcast protocols in packet switched computer networks. Ph.D. dissertation, Stanford Univ., 1977. Google ScholarDigital Library
- 8 Dennis, J., and Van Horn, E. Programming semantics for multiprogrammed computation. Commun. ACM 9 (March 1966), 143- 155. Google ScholarDigital Library
- 9 Evans, A., Kantrowitz, W., and Weiss, E. A user authentication scheme not requiring secrecy in the computer. Commun. ACM 17 (Aug. {1974), 437-442. Google ScholarDigital Library
- 10 Feldman, S.I. Make--A program for maintaining computer programs. SoftwaremPractice and Experience 9 (April 1979), 255-265.Google ScholarCross Ref
- 11 Johnson, S.C. Yaccmyet another compiler compiler. Bell Labs Tech. Rep., Bell Labs, Murray Hill, N.J., 1978.Google Scholar
- 12 Kaashoek, M.F., Tanenbaum, A.S., Flynn Hummel, S., and Bal, H.E. An efficient reliable broadcast protocol. Oper. Syst. Rev. 23 (Oct 1989), 5-19. Google ScholarDigital Library
- 13 Lawler, E.L., and Wood, D.E. Branch and bound Methods A Survey. Oper. Res. 14 (July 1966), 699- 719.Google ScholarDigital Library
- 14 Marsland, T.A., and Campbell, M. Parallel search of strongly ordered game trees. Comput. Surv. 14 (Dec. 1982), 533-551. Google ScholarDigital Library
- 15 Mullender, S.J., and Tanenbaum, A.S. A distributed file service based on optimistic concurrency control. In Proceedings of the Tenth Symposium Operating System Principles (Dec. 1985), pp. 51-62. Google ScholarDigital Library
- 16 Mullender, S.J., and Tanenbaum, A.S. The design of a capabilitybased distributed operating system. Comput.J. 29 (Aug. 1986), 289-299.Google ScholarCross Ref
- 17 Mullender, S.J., van Rossum, G., Tanenbaum, A.S., van Renesse, R., van Staveren, J.M. Amoeba--A distributed operating system for the 1990s. IEEE Comput. 23 (May 1990), 44-53. Google ScholarDigital Library
- 18 Ousterhout, J.K., Cherenson, A.R., Douglis, F., Nelson, M.N., and Welch, B.B. The sprite network operating system. IEEE Comput. 21 (Feb. 1988), 23-26. Google ScholarDigital Library
- 19 Peterson, L., Hutchinson, N., O'Malley, S., and Rao, H. The xkernel: A platform for accessing Internet resources. IEEE Comput. 23 (May 1990), 23-33. Google ScholarDigital Library
- 20 Pu, C., Noe, J.D., Proudfoot, A. Regeneration of replicated objects: A technique and its Eden implementation. In Proceedings of the 2nd International Conference on Data Engineering (Feb. 1986), pp. 175-187. Google ScholarDigital Library
- 21 Rozier, M., Abrossimov, V., Armand, F., Boule, I., Gien, M., Guillemont, M., Hermann, F., Kaiser, C., Langlois, S., Leonard, P., and Neuhauser, W. CHORUS distributed operating system. Comput. Syst. I (Fall 1988), 299-328.Google Scholar
- 22 Schroeder, M.D., and, Burrows, M. Performance of the firefly RPC. in Proceedings of the Twelfth ACM Symposium of Operating System Principles, ACM, N.Y. (Dec. 1989), 83-90. Google ScholarDigital Library
- 23 Steiner, J.G., Neuman, C., and Schiller, J.I. Kerberos An Authentication Service for Open Network Systems. In Proceedings of the Usenix Winter Conference, USENIX Assoc. (1988), pp. 191-201.Google Scholar
- 24 Stonebraker, M. Operating system support for database management. Commun. ACM 24 (July 1981) 412- 418. Google ScholarDigital Library
- 25 Tanenbaum, A.S. A Unix clone with source code for operating systems courses. Oper. Syst. Rev. 21 (Jan. 1987), 20-29. Google ScholarDigital Library
- 26 Tanenbaum, A.S., Mullender, S.J., and Van Renesse, R. Using sparse capabilities in a distributed operating system, in Proceedings of the Sixth International Conference on Distributed Computer Systems, IEEE (1986), 558- 563.Google Scholar
- 27 Tanenbaum, A.S., and Van Renesse, R. Distributed operating systems. Comput. Surv. 17 (Dec. 1985), 419-470. Google ScholarDigital Library
- 28 Tanenbaum, A.S., and Van Renesse, R. A critique of the remote procedure call paradigm. In Proceedings of Euteco '88 (1988), pp. 775-783.Google Scholar
- 29 Van Renesse, R., Tanenbaum, A.S., Van Staveren, H., and Hall, J. Connecting RPC-based distributed systems using wide-area networks. In Proceedings of the Seventh International Conference on Distributed Computing Systems, IEEE (1987), pp. 28- 34.Google Scholar
- 30 Van Renesse, R. Tanenbaum, A.S., and Wilschut, A. The design of a high-performance file server. In Proceedings of the Ninth International Conference on Distributed Computer Systems, IEEE (1989), pp. 22-27.Google ScholarCross Ref
- 31 Van Renesse, R., Van Staveren, H., and Tanenbaum, A.S. Performance of the world's fastest distributed operating system. Oper. Syst. Rev. 22 (Oct. 1988), 25-34. Google ScholarDigital Library
- 32 Van Renesse, R., Van Staveren, H., and Tanenbaum, A.S. Performance of the Amoeba-distributed operating system. Software--Practice and Experience 19 (March 1989) 223- 234. Google ScholarDigital Library
- 33 Van Rossum, G. AIL--A classoriented stub generator for Amoeba. In Proceedings of the Workshop on Experience with Distributed Systems, J. Nehmer, Ed., Springer Verlag, N.Y., 1990. To be published.Google Scholar
- 34 Welch, B.B. and Ousterhout, J.K. Pseudo devices: User-level extensions to the Sprite file system. In Proceedings of Summer USENIX Conference (June 1988), pp. 37-49.Google ScholarCross Ref
Index Terms
- Experiences with the Amoeba distributed operating system
Recommendations
Amoeba: A Distributed Operating System for the 1990s
A description is given of the Amoeba distributed operating system, which appears to users as a centralized system but has the speed, fault tolerance, security safeguards, and flexibility required for the 1990s. The Amoeba software is based on objects. ...
The DUNIX distributed operating system
DUNIX is an operating system that integrates several computers, connected by a packet switching network, into a single UNIX machine. As far as the users and their software can tell, the system is a single large computer running UNIX. This illusion is ...
Comments