Use the link above to see the Contents list.
This fourth edition of our textbook appears at a time when the Internet and the Web are mature systems, supporting a wide variety of distributed applications on a scale far greater than could have been anticipated when our third edition was published almost five years ago.
The book aims to provide an understanding of the principles on which the Internet and other distributed systems are based, their architecture, algorithms and design. We begin with two conceptual overview chapters that outline the characteristics of distributed systems and the challenges that must be addressed in their design: scalability, heterogeneity, security and failure handling being the most significant. These chapters also develop abstract models for understanding process interaction, failure and security. They are followed by foundational chapters devoted to the study of networking, interprocess communication, remote invocation and middleware, operating system support and naming.
We then cover the well-established topics of security, data replication, group communication, distributed file systems, distributed transactions, CORBA, distributed shared memory and multimedia systems together with several new ones: Web Services, XML, the Grid, peer-to-peer, mobile and ubiquitous systems. Algorithms associated with all these topics are covered as they arise and also in separate chapters devoted to timing, coordination and agreement.
The book is intended for use in undergraduate and introductory postgraduate courses. It can equally be used for self-study. We take a top-down approach, addressing the issues to be resolved in the design of distributed systems and describing successful approaches in the form of abstract models, algorithms and detailed case studies of widely-used systems. We cover the field in sufficient depth and breadth to enable readers to go on to study most research papers in the literature on distributed systems.
We aim to make the subject accessible to students who have a basic knowledge of object oriented programming, operating systems and elementary computer architecture. The book includes coverage of those aspects of computer networks relevant to distributed systems, including the underlying technologies for the Internet, wide area, local area and wireless networks. Algorithms and interfaces are presented throughout the book in Java or, in a few cases, ANSI C. For brevity and clarity of presentation, a form of pseudo-code derived from Java/C is also used.
The following diagram shows the book's chapters under six main topic areas. It is intended to provide a guide to the book's structure and to indicate recommended navigation routes for instructors wishing to provide, or readers wishing to achieve, understanding of the various subfields of distributed system design:
The existence of the World Wide Web has changed the way in which a book such as this can be linked to source material, including research papers, technical specifications and standards. Many of the source documents are now available on the Web; some are available only there. For reasons of brevity and readability, we employ a special form of reference to web material which loosely resembles a URL: references such as [ www.omg.org ] and [ www.rsasecurity.com I ] refer to documentation that is available only on the Web. They can be looked up in the reference list at the end of the book, but the full URLs are given only in an online version of the reference list at the book's web site: www.cdk4.net/refs where they take the form of clickable links. Both versions of the reference list include a more detailed explanation of this scheme.
Before embarking on the writing of this new edition, we carried out a survey of teachers who used the third edition. From the results, we identified the new material required and the changes to be made. This led to our writing three entirely new chapters and making numerous insertions throughout the book. All the chapters have been changed to reflect new information that has become available about the systems described. However, to help teachers who used the third edition, we have left the structure of the existing chapters almost unchanged. The new chapters and those containing substantial changes are listed in the table above. The Mach case study chapter has been removed and is available from the book's web site, together with several smaller case studies that were removed from the second and third editions.
We are very grateful to the following teachers who participated in our survey: Kay Robbins, Kohei Honda, Stefan Leue and Ian Wakeman.
We would like to thank the following people who reviewed the new chapters or provided other substantial help: John Barton, Arne Glenstrup, Roy Logie, Friedemann Mattern, Christian Mortensen, Anthony Rowstron, Bo Sanden, Dave Scott, Ben Smyth, Mirjana Spasojevic, Salman Taherian, Andrew Twigg, Jim Waldo, Eiko Yoneki, Kan Zhang and Ben Zhao.
The Department of Computer Science, Queen Mary College, University of London, has hosted the companion web site for the third edition and has agreed to host the site for the fourth edition. We thank the department for its support and Keith Clarke and the systems team for their help in setting up and maintaining these sites.
Finally, we thank Simon Plumtree, Bridget Allen, Mary Lince and Owen Knight of Pearson Education/Addison-Wesley for essential support throughout the arduous process of getting the book into print.
As before, we shall maintain a web site with a wide range of material designed to assist teachers and readers. This web site can be accessed via either of the URLs:
A list of known errors in the book, with corrections for each one. As with the third edition, the errors will be corrected in new impressions and a separate errata list will be provided for each impression.
We maintain a set of supplementary material for each chapter. This consists of source code for the programs in the book and relevant reading material that was present in previous editions of the book but was removed for reasons of space. References to this supplementary material appear in the book with links such as www.cdk4.net/ipc .
The web site for the third edition contains links to 15 courses using our book, which make available a wealth of useful lecture notes, slides, exercises and laboratory projects. We hope to get permission from the teachers of these courses to put these references on the new web site. Other teachers are asked to notify us of their courses with web sites for inclusion in the list.
London and Bristol, March 2005