The lecture notes for two advanced courses in distributed systems given in Tromsø, Norway, and Ithaca, New York in the summers of 1988 and 1989 are printed here. They cover the subject thoroughly; the chapter titles suggest the range of topics: Introduction (Characterization of Distributed Systems) Achieving Application Requirements Interprocess Communication Remote Procedure Call Names Using Cryptography for Authentication Protection Accounting and Resource Control Distributed File Systems Distributed Transaction Processing Facilities Using Transactions in Distributed Applications Theory of Nested Transactions Replicated Data and Partition Failures Reliable Broadcast Protocols Exploiting Replication in Distributed Systems High-level Specifications for Distributed Programs The ANSA Project and Standards The Advanced Network System Architecture (ANSA) The Computational Project of ANSA H ow Robust Are Distributed Systems The book is well edited and remarkably coherent for a work of diverse authorship. Nevertheless, it is not entirely free of the shortcomings that typically arise in this kind of volume; in particular, the authors overemphasize their own work at the cost of failing to cover all alternatives (do we really need to prove an authentication protocol in an arcane notation or to learn so much about ANSA ). This weakness may be viewed as a strength, however, in that the reader is given a deeper look into a sampling of approaches rather than a shallower look into the full range of approaches. One does obtain a good understanding of many of the kinds of thinking that are going on in the field. The references are extensive. I could also find fault with some of the approaches described (would F-boxes be practical in the general case ) and some of the viewpoints expressed (should distributed systems be designed for use only on reliable local area networks ). To belabor such issues in the short space of a review would give the wrong impression, however. It is to be expected that not every reader will react favorably to every idea. The book in fact discusses and often endorses valuable concepts that are frequently neglected. I mention in particular the discussions of using capabilities (as opposed to access lists) for protection. I hope that the designers of the next generation of commercial systems (if there ever is a next generation) are paying attention. I recommend the book as well worth the time of anyone working with distributed systems. It would make an excellent supplementary (but not primary) text for a course in the subject.
Michael C. Loui
The contributors to this collection of lecture notes for a graduate course on distributed systems are distinguished computer scientists, including Kenneth Birman, Susan Davidson, Andrew Herbert, Sape Mullender, Roger Needham, Mahadev Satyanarayanan, Alfred Spector, and William Weihl. Despite the multiplicity of authors, the book reads smoothly. The authors convey the fundamental concepts, principles, and techniques clearly, using carefully constructed examples and virtually no mathematics. They provide no exercises for students, but most chapters end with an extensive list of references.
The first two chapters, by Mullender and Spector respectively, identify the usual characteristics and desirable properties of distributed systems. In chapters 3 and 4, respectively, Mullender and Weihl discuss interprocess communication via communication networks and remote procedure calls (RPCs). The description of issues in the implementation of RPCs, such as threads, binding, and transparency, is particularly strong.
The next four chapters deal with naming and security, distinguishing among secrecy, privacy, authenticity, and integrity. Chapter 5 on names and chapter 6 on cryptography are written by Needham in an engaging style. The treatment of authentication, covered cryptographically in chapter 6, continues in chapter 7, in which Mullender describes access matrices, capabilities, and protection of ports in the Amoeba system. Mullender covers accounting and resource control in chapter 8.
In chapter 9, Satyanarayanan presents the fundamentals of distributed file systems. This chapter focuses on the author's experience with the Andrew file system. The practical lessons of the Andrew project are particularly valuable.
Transactions are the concern of three chapters. In chapter 10, Spector surveys the principal techniques for implementing distributed transactions, including concurrency control via locking, and commitment and recovery protocols. In chapters 11 and 12, Weihl explains nested transactions and type-specific locking, using Argus for examples. These ideas offer the potential for greater concurrency than traditional flat transactions.
The next three chapters cover aspects of reliable distributed computation with replicated data. In chapter 13, Davidson emphasizes improvement of availability while guaranteeing one-copy serializability. This chapter includes techniques for handling partition failures. In chapters 14 and 15, Birman and T. A. Joseph present several reliable broadcast protocols and demonstrate their application in constructing distributed application programs, with examples from ISIS.
Weihl shows how to specify programs in chapter 16. He gives a specification of a simple distributed dictionary and a partial specification of the Grapevine system.
In chapters 17, 18, and 19, Herbert describes the Advanced Networked Systems Architecture project in Britain. The book concludes with a philosophical chapter by Birman and a comprehensive index.
Access critical reviews of Computing literature here
Applications built on networked collections of computers are increasingly using distributed object platforms such as CORBA, Java Remote Method Invocation (RMI), and DCOM to standardize object interactions. With this increased use comes the increased ...
EW 5: Proceedings of the 5th workshop on ACM SIGOPS European workshop: Models and paradigms for distributed systems structuring
The recursive composition of systems to form functionally equivalent transparently distributed systems is an important paradigm for constructing distributed systems. The extent to which such recursive transparency can be achieved depends crucially on ...
The recursive composition of systems to form functionally equivalent transparently distributed systems is an important paradigm for constructing distributed systems. The extent to which such recursive transparency can be achieved depends crucially on ...