shopping cart
Call us:  800-878-7323 HELP
McAfee SECURE helps keep you safe from identity theft, credit card fraud, spyware, spam, viruses and online scams.
Interviews | June 19, 2009

All posts by Dave Jim Lynch Makes Landscape Art... Out of Text

If Carl Hiaasen set one of his novels on a residential stretch of boundary line between British Columbia and Washington, or if Richard Russo's characters had relatives in the Pacific Northwest, the result might be something like Jim Lynch's Border Songs. Continue »


  1. $18.16 Sale Hardcover add to wish list

    Border Songs

    Jim Lynch

$113.20
List price: $115.35
HARDCOVER, NEW
Ships in 1 to 3 days
Add to Wishlist
available for shipping or prepaid pickup only
Available for In-store Pickup
in 7 to 12 days
Qty Store Section
50 Partner Warehouse Artificial Intelligence- General


Distributed Systems : Principles and Paradigms (2ND 07 Edition)

by Andrew S. Tanenbaum

Distributed Systems : Principles and Paradigms (2ND 07 Edition) Cover
  1. This particular item is stocked in a Partner Warehouse and will ship separately from other items in your shopping cart.

Synopses & Reviews

Publisher Comments:

Today, virtually every computing system is part of a distributed system, or soon will be. Programmers, developers, and engineers need to understand the principles and paradigms underlying distributed systems — and the real-world application of these principles. Now, Andrew S. Tanenbaum — one of the world's most well-respected experts on networking and operating systems — presents a complete introduction to distributed principles and paradigms. Joined by colleague Martin van Steen, Tanenbaum identifies the seven key principles of distributed systems, and presents extensive examples of each. This 2nd/e of Distributed Systems: Principles and Paradigms presents in-depth coverage of every key aspect of distributed systems: communications, processes, naming, synchronization, consistency and replication, fault tolerance, and security. Each principle is introduced in its own chapter; subsequent chapters demonstrate real-world implementations of these principles in object-based systems, document-based systems, file-based systems, and coordination-based systems. Since each case study is organized around the authors' seven key principles, readers will find it exceptionally easy to compare the systems under consideration. For all developers, software engineers, and architects who need an in-depth understanding of distributed systems.

Synopsis:

Virtually every computing system today is part of a distributed system. Programmers, developers, and engineers need to understand the underlying principles and paradigms as well as the real-world application of those principles. Now, internationally renowned expert Andrew S. Tanenbaum – with colleague Martin van Steen – presents a complete introduction that identifies the seven key principles of distributed systems, with extensive examples of each. Adds a completely new chapter on architecture to address the principle of organizing distributed systems. Provides extensive new material on peer-to-peer systems, grid computing and Web services, virtualization, and application-level multicasting. Updates material on clock synchronization, data-centric consistency, object-based distributed systems, and file systems and Web systems coordination. For all developers, software engineers, and architects who need an in-depth understanding of distributed systems.

About the Author

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.

 

Table of Contents

CONTENTS

 

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

Product Details

ISBN:
9780132392273
Subtitle:
Principles and Paradigms
Author:
Tanenbaum, Andrew S.
Author:
Van Steen, Maarten
Publisher:
Pearson Prentice Hall
Subject:
Operating Systems - General
Subject:
Electronic data processing
Subject:
Distributed operating systems (Computers)
Subject:
Client-Server Computing - General
Subject:
Server Computing
Copyright:
Edition Number:
2
Publication Date:
October 2006
Binding:
Hardcover
Grade Level:
College/higher education:
Language:
English
Illustrations:
Y
Pages:
686
Dimensions:
9.46x7.28x1.19 in. 2.57 lbs.

Related Aisles

  • back to top

Powell's City of Books is an independent bookstore in Portland, Oregon, that fills a whole city block with more than a million new, used, and out of print books. Shop those shelves — plus literally millions more books, DVDs, and eBooks — here at Powells.com.