Distributed systems : principles and paradigms / Andrew S. Tanenbaum, Maarten Van Steen.
By: Tanenbaum, Andrew S
.
Contributor(s): Steen, Maarten van
.
Material type:
BookPublisher: Harlow : Prentice Hall, 2007Edition: 2nd ed.Description: xviii, 686 p. : ill. ; 25 cm.ISBN: 9780136135531.Subject(s): Electronic data processing -- Distributed processing| Item type | Current library | Call number | Status | Barcode | |
|---|---|---|---|---|---|
| General lending | MTU Kerry North Campus Library Ground Floor Main | 005.4476 TAN (Browse shelf(Opens below)) | Available | 38888000852461 |
Enhanced descriptions from Syndetics:
For courses on Distributed Systems, Distributed Operating Systems, and Advanced Operating Systems focusing on distributed systems, found in departments of Computer Science, Computer Engineering and Electrical Engineering. Very few textbooks today explore distributed systems in a manner appropriate for university students. In this unique text, esteemed authors Tanenbaum and van Steen provide full coverage of the field in a systematic way that can be readily used for teaching. No other text examines the underlying principles a and their applications to a wide variety of practical distributed systems a with this level of depth and clarity."
Formerly CIP. Uk
Includes bibliographical references (p. 623-668) and index.
ITT Module NETW91001
Table of contents provided by Syndetics
- 1 Introduction
- 1.1 Definition of a Distributed System
- 1.2 Goals
- 1.2.1 Making Resources Accessible
- 1.2.2 Distribution Transparency
- 1.2.3 Openness
- 1.2.4 Scalability
- 1.2.5 Pitfalls
- 1.3 Types of Distributed Systems
- 1.3.1 Distributed Computing Systems
- 1.3.2 Distributed Information Systems
- 1.3.3 Distributed Pervasive Systems
- 1.4 Summary
- 2 Architectures
- 2.1 Architectural Styles
- 2.2 System Architectures
- 2.2.1 Centralized Architectures
- 2.2.2 Decentralized Architectures
- 2.2.3 Hybrid Architectures
- 2.3 Architectures Versus Middleware
- 2.3.1 Interceptors
- 2.3.2 General Approaches to Adaptive Software
- 2.3.3 Discussion
- 2.4 Self-Management in Distributed Systems
- 2.4.1 The Feedback Control Model
- 2.4.2 Example: Systems Monitoring with Astrolabe
- 2.4.3 Example: Differentiating Replication Strategies in Globule
- 2.4.4 Example: Automatic Component Repair Management in Jade
- 2.5 Summary
- 3 Processes
- 3.1 Threads
- 3.1.1 Introduction to Threads
- 3.1.2 Threads in Distributed Systems
- 3.2 Virtualization
- 3.2.1 The Role of Virtualization in Distributed Systems
- 3.2.2 Architectures of Virtual Machines
- 3.3 Clients
- 3.3.1 Networked User Interfaces
- 3.3.2 Client-Side Software for Distribution Transparency
- 3.4 Servers
- 3.4.1 General Design Issues
- 3.4.2 Server Clusters
- 3.4.3 Managing Server Clusters
- 3.5 Code Migration
- 3.5.1 Approaches to Code Migration
- 3.5.2 Migration and Local Resources
- 3.5.3 Migration in Heterogeneous Systems
- 3.6 Summary
- 4 Communication
- 4.1 Fundamentals
- 4.1.1 Layered Protocols
- 4.1.2 Types of Communication
- 4.2 Remote Procedure Call
- 4.2.1 Basic RPC Operation
- 4.2.2 Parameter Passing
- 4.2.3 Asynchronous RPC
- 4.2.4 Example: DCE RPC
- 4.3 Message-Oriented Communication
- 4.3.1 Message-Oriented Transient Communication
- 4.3.2 Message-Oriented Persistent Communication
- 4.3.3 Example: IBM's WebSphere Message-Queuing System
- 4.4 Stream-Oriented Communication
- 4.4.1 Support for Continuous Media
- 4.4.2 Streams and Quality of Service
- 4.4.3 Stream Synchronization
- 4.5 Multicast Communication
- 4.5.1 Application-Level Multicasting
- 4.5.2 Gossip-Based Data Dissemination
- 4.6 Summary
- 5 Naming
- 5.1 Names, Identifiers, and Addresses
- 5.2 Flat Naming
- 5.2.1 Simple Solutions
- 5.2.2 Home-Based Approaches
- 5.2.3 Distributed Hash Tables
- 5.2.4 Hierarchical Approaches
- 5.3 Structured Naming
- 5.3.1 Name Spaces
- 5.3.2 Name Resolution
- 5.3.3 The Implementation of a Name Space
- 5.3.4 Example: The Domain Name System
- 5.4 Attribute-Based Naming
- 5.4.1 Directory Services
- 5.4.2 Hierarchical Implementations: LDAP
- 5.4.3 Decentralized Implementations
- 5.5 Summary
- 6 Synchronization
- 6.1 Clock Synchronization
- 6.1.1 Physical Clocks
- 6.1.2 Global Positioning System
- 6.1.3 Clock Synchronization Algorithms
- 6.2 Logical Clocks
- 6.2.1 Lamport's Logical Clocks
- 6.2.2 Vector Clocks
- 6.3 Mutual Exclusion
- 6.3.1 Overview
- 6.3.2 A Centralized Algorithm
- 6.3.3 A Decentralized Algorithm
- 6.3.4 A Distributed Algorithm
- 6.3.5 A Token Ring Algorithm
- 6.3.6 A Comparison of the Four Algorithms
- 6.4 Global Positioning of Nodes
- 6.5 Election Algorithms
- 6.5.1 Traditional Election Algorithms
- 6.5.2 Elections in Wireless Environments
- 6.5.3 Elections in Large-Scale Systems
- 6.6 Summary
- 7 Consistency and Replication
- 7.1 Introduction
- 7.1.1 Reasons for Replication
- 7.1.2 Replication as Scaling Technique
- 7.2 Data-Centric Consistency Models
- 7.2.1 Continuous Consistency
- 7.2.2 Consistent Ordering of Operations
- 7.3 Client-Centric Consistency Models
- 7.3.1 Eventual Consistency
- 7.3.2 Monotonic Reads
- 7.3.3 Monotonic Writes
- 7.3.4 Read Your Writes
- 7.3.5 Writes Follow Reads
- 7.4 Replica Management
- 7.4.1 Replica-Server Placement
- 7.4.2 Content Replication and Placement
- 7.4.3 Content Distribution
- 7.5 Consistency Protocols
- 7.5.1 Continuous Consistency
- 7.5.2 Primary-Based Protocols
- 7.5.3 Replicated-Write Protocols
- 7.5.4 Cache-Coherence Protocols
- 7.5.5 Implementing Client-Centric Consistency
- 7.6 Summary
- 8 Fault Tolerance
- 8.1 Introduction to Fault Tolerance
- 8.1.1 Basic Concepts
- 8.1.2 Failure Models
- 8.1.3 Failure Masking by Redundancy
- 8.2 Process Resilience
- 8.2.1 Design Issues
- 8.2.2 Failure Masking and Replication
- 8.2.3 Agreement in Faulty Systems
- 8.2.4 Failure Detection
- 8.3 Reliable Client-Server Communication
- 8.3.1 Point-to-Point Communication
- 8.3.2 RPC Semantics in the Presence of Failures
- 8.4 Reliable Group Communication
- 8.4.1 Basic Reliable-Multicasting Schemes
- 8.4.2 Scalability in Reliable Multicasting
- 8.4.3 Atomic Multicast
- 8.5 Distributed Commit
- 8.5.1 Two-Phase Commit
- 8.5.2 Three-Phase Commit
- 8.6 Recovery
- 8.6.1 Introduction
- 8.6.2 Checkpointing
- 8.6.3 Message Logging
- 8.6.4 Recovery-Oriented Computing
- 8.7 Summary
- 9 Security
- 9.1 Introduction to Security
- 9.1.1 Security Threats, Policies, and Mechanisms
- 9.1.2 Design Issues
- 9.1.3 Cryptography
- 9.2 Secure Channels
- 9.2.1 Authentication
- 9.2.2 Message Integrity and Confidentiality
- 9.2.3 Secure Group Communication
- 9.2.4 Example: Kerberos
- 9.3 Access Control
- 9.3.1 General Issues in Access Control
- 9.3.2 Firewalls
- 9.3.3 Secure Mobile Code
- 9.3.4 Denial of Service
- 9.4 Security Management
- 9.4.1 Key Management
- 9.4.2 Secure Group Management
- 9.4.3 Authorization Management
- 9.5 Summary
- 10 Distributed Object-Based Systems
- 10.1 Architecture
- 10.1.1 Distributed Objects
- 10.1.2 Example: Enterprise Java Beans
- 10.1.3 Example: Globe Distributed Shared Objects
- 10.2 Processes
- 10.2.1 Object Servers
- 10.2.2 Example: The Ice Runtime System
- 10.3 Communication
- 10.3.1 Binding a Client to an Object
- 10.3.2 Static versus Dynamic Remote Method Invocations
- 10.3.3 Parameter Passing
- 10.3.4 Example: Java RMI
- 10.3.5 Object-Based Messaging
- 10.4 Naming
- 10.4.1 CORBA Object References
- 10.4.2 Globe Object References
- 10.5 Synchronization
- 10.6 Consistency and Replication
- 10.6.1 Entry Consistency
- 10.6.2 Replicated Invocations
- 10.7 Fault Tolerance
- 10.7.1 Example: Fault-Tolerant CORBA
- 10.7.2 Example: Fault-Tolerant Java
- 10.8 Security
- 10.8.1 Example: Globe
- 10.8.2 Security for Remote Objects
- 10.9 Summary
- 11 Distributed File Systems
- 11.1 Architecture
- 11.1.1 Client-Server Architectures
- 11.1.2 Cluster-Based Distributed File Systems
- 11.1.3 Symmetric Architectures
- 11.2 Processes
- 11.3 Communication
- 11.3.1 RPCs in NFS
- 11.3.2 The RPC2 Subsystem
- 11.3.3 File-Oriented Communication in Plan 9
- 11.4 Naming
- 11.4.1 Naming in NFS
- 11.4.2 Constructing a Global Name Space
- 11.5 Synchronization
- 11.5.1 Semantics of File Sharing
- 11.5.2 File Locking
- 11.5.3 Sharing Files in Coda
- 11.6 Consistency and Replication
- 11.6.1 Client-Side Caching
- 11.6.2 Server-Side Replication
- 11.6.3 Replication in Peer-to-Peer File Systems
- 11.6.4 File Replication in Grid Systems
- 11.7 Fault Tolerance
- 11.7.1 Handling Byzantine Failures
- 11.7.2 High Availability in Peer-to-Peer Systems
- 11.8 Security
- 11.8.1 Security in NFS
- 11.8.2 Decentralized Authentication
- 11.8.3 Secure Peer-to-Peer File-Sharing Systems
- 11.9 Summary
- 12 Distributed Web-Based Systems
- 12.1 Architecture
- 12.1.1 Traditional Web-Based Systems
- 12.1.2 Web Services
- 12.2 Processes
- 12.2.1 Clients
- 12.2.2 The Apache Web Server
- 12.2.3 Web Server Clusters
- 12.3 Communication
- 12.3.1 Hypertext Transfer Protocol
- 12.3.2 Simple Object Access Protocol
- 12.4 Naming
- 12.5 Synchronization
- 12.6 Consistency and Replication
- 12.6.1 Web Proxy Caching
- 12.6.2 Replication for Web Hosting Systems
- 12.6.3 Replication of Web Applications
- 12.7 Fault Tolerance
- 12.8 Security
- 12.9 Summary
- 13 Distributed Coordination-Based Systems
- 13.1 Introduction to Coordination Models
- 13.2 Architectures
- 13.2.1 Overall Approach
- 13.2.2 Traditional Architectures
- 13.2.3 Peer-to-Peer Architectures
- 13.2.4 Mobility and Coordination
- 13.3 Processes
- 13.4 Communication
- 13.4.1 Content-Based Routing
- 13.4.2 Supporting Composite Subscriptions
- 13.5 Naming
- 13.5.1 Describing Composite Events
- 13.5.2 Matching Events and Subscriptions
- 13.6 Synchronization
- 13.7 Consistency and Replication
- 13.7.1 Static Approaches
- 13.7.2 Dynamic Replication
- 13.8 Fault Tolerance
- 13.8.1 Reliable Publish-Subscribe Communication
- 13.8.2 Fault Tolerance in Shared Dataspaces
- 13.9 Security
- 13.9.1 Confidentiality
- 13.9.2 Secure Shared Dataspaces
- 13.10 Summary
- 14 Suggestions for Further Reading and Bibliography
- 14.1 Suggestions for Further Reading
- 14.1.1 Introduction and General Works
- 14.1.2 Architectures
- 14.1.3 Processes
- 14.1.4 Communication
- 14.1.5 Naming
- 14.1.6 Synchronization
- 14.1.7 Consistency and Replication
- 14.1.8 Fault Tolerance
- 14.1.9 Security
- 14.1.10 Distributed Object-Based Systems
- 14.1.11 Distributed File Systems
- 14.1.12 Distributed Web-Based Systems
- 14.1.13 Distributed Coordination-Based Systems
- 14.2 Alphabetical Bibliography
- Index
Author notes provided by Syndetics
Andrew S. Tanenbaum has a B.S. Degree from M.I.T. and a Ph.D. from the University of California at Berkeley. He is currently a Professor of Computer Science at the Vrije Universiteit in Amsterdam, The Netherlands, where he heads the Computer Systems Group. He is also Dean of the Advanced School for Computing and Imaging, an interuniversity graduate school doing research on advanced parallel, distributed, and imaging systems. Nevertheless, he is trying very hard to avoid turning into a bureaucrat.
In the past, he has done research on compilers, operating systems, networking, and local-area distributed systems. His current research focuses primarily on the design of wide-area distributed systems that scale to a billion users. These research projects have led to five books and over 85 referred papers in journals and conference proceedings.
Prof. Tanenbaum has also produced a considerable volume of software. He was the principal architect of the Amsterdam Compiler Kit, a widely-used toolkit for writing portable compilers, as well as of MINIX, a small UNIX clone intended for use in student programming labs. Together with his Ph.D. students and programmers, he helped design the Amoeba distributed operating system, a high-performance microkernel-based distributed operating system. The MINIX and Amoeba systems are now available for free via the Internet.
Prof. Tanenbaum is a Fellow of the ACM, a Fellow of the IEEE, a member of the Royal Netherlands Academy of Arts and Sciences, winner of the 1994 ACM Karl V. Karlstrom Outstanding Educator Award, and winner of the 1997 ACM/SIGCSE Award for Outstanding Contributions to Computer Science Education. He is also listed in Who's Who in the World.
Maarten van Steen is a professor at the Vrije Universiteit, Amsterdam where he teaches operating systems, computer networks, and distributed systems. He has also given various highly successful courses on computer systems related subjects to ICT professionals from industry and governmental organizations.
Prof. van Steen studied Applied Mathematics at Twente University and received a Ph.D. from Leiden University in Computer Science. After his graduate studies he went to work for an industrial research laboratory where he eventually became head of a group concentrating on programming support for parallel applications.
After five years of struggling to simultaneously do research and management, he decided to return to academia, first as an assistant professor in Computer Science at the Erasmus University Rotterdam, and later as an assistant professor in Andrew Tanenbaum's group at the Vrije Universiteit Amsterdam.
His current research concentrates on large-scale distributed systems. Part of his research focusses on Web-based systems, in particular adaptive distribution and replication in (collaborative) content distribution networks. Another subject of extensive research is fully decentralized (gossip based) peer-to-peer systems for wired as well as wireless ad hoc networks.