| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
| |
Introduction | |
| |
| |
| |
Introduction | |
| |
| |
| |
Distributed Systems Versus Parallel Systems | |
| |
| |
| |
Characteristics of Distributed Systems | |
| |
| |
| |
Scope of the Book | |
| |
| |
| |
Overview of the Book | |
| |
| |
| |
Notation | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Model of a Computation | |
| |
| |
| |
Introduction | |
| |
| |
| |
Model of a Distributed System | |
| |
| |
| |
Interleaving Model | |
| |
| |
| |
Happened Before Model | |
| |
| |
| |
Potential Causality Model | |
| |
| |
| |
Appropriate Model | |
| |
| |
| |
Models Based on States | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Logical Clocks | |
| |
| |
| |
Introduction | |
| |
| |
| |
Logical Clocks | |
| |
| |
| |
Vector Clocks | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Verifying Clock Algorithms | |
| |
| |
| |
Introduction | |
| |
| |
| |
Using Induction on [right arrow] | |
| |
| |
| |
Proof of the Vector Clock Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Clocks of Different Dimensions | |
| |
| |
| |
Introduction | |
| |
| |
| |
Direct-Dependency Clocks | |
| |
| |
| |
Higher-Dimensional Clocks | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Mutual Exclusion: Using Timestamps | |
| |
| |
| |
Introduction | |
| |
| |
| |
Specifications of the Problem | |
| |
| |
| |
Lamport's Algorithm | |
| |
| |
| |
Ricart and Agrawala's Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Mutual Exclusion: Tokens and Quorums | |
| |
| |
| |
Introduction | |
| |
| |
| |
Centralized Algorithm | |
| |
| |
| |
An Exercise in Decentralization | |
| |
| |
| |
Quorum-Based Algorithms | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Drinking Philosophers Problem | |
| |
| |
| |
Introduction | |
| |
| |
| |
Dining Philosophers--Heavy Load | |
| |
| |
| |
Dining Philosophers--Light Load | |
| |
| |
| |
Drinking Philosophers | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Leader Election | |
| |
| |
| |
Introduction | |
| |
| |
| |
Anonymous Rings | |
| |
| |
| |
Chang-Roberts Algorithm | |
| |
| |
| |
Hirschberg-Sinclair Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Global State | |
| |
| |
| |
Introduction | |
| |
| |
| |
Consistent Cuts | |
| |
| |
| |
Consistent Subcuts | |
| |
| |
| |
Global Snapshot Algorithm | |
| |
| |
| |
Application: Detecting Stable Properties | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Observing Global Predicates | |
| |
| |
| |
Introduction | |
| |
| |
| |
Modalities of Observation | |
| |
| |
| |
Key Problems in Observation of Global Properties | |
| |
| |
| |
Linear Predicates | |
| |
| |
| |
Regular Predicates | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Observing Conjunctive Predicates | |
| |
| |
| |
Introduction | |
| |
| |
| |
Boolean Expressions of Local Predicates | |
| |
| |
| |
A Vector Clock-Based Centralized Algorithm | |
| |
| |
| |
A Direct Dependency-Based Algorithm | |
| |
| |
| |
A Vector Clock-Based Distributed Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Channel Predicates | |
| |
| |
| |
Introduction | |
| |
| |
| |
Linear Channel Predicates | |
| |
| |
| |
A Centralized Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Termination Detection | |
| |
| |
| |
Introduction | |
| |
| |
| |
Dijkstra and Scholten's Algorithm | |
| |
| |
| |
An Optimization | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Control of a Distributed Computation | |
| |
| |
| |
Introduction | |
| |
| |
| |
Hardness of the Control Problem | |
| |
| |
| |
Mutual Exclusion | |
| |
| |
| |
Disjunctive Predicates | |
| |
| |
| |
Relationship Between Observation and Control | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Causal Message Ordering | |
| |
| |
| |
Introduction | |
| |
| |
| |
Algorithm | |
| |
| |
| |
Proof of Correctness | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Synchronous and Total Order | |
| |
| |
| |
Introduction | |
| |
| |
| |
Synchronous Ordering | |
| |
| |
| |
Algorithm | |
| |
| |
| |
Total Order for Multicast Messages | |
| |
| |
| |
Application: Replicated State Machines | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Computation of a Global Function | |
| |
| |
| |
Introduction | |
| |
| |
| |
Convergecast and Broadcast | |
| |
| |
| |
Global Functions | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Repeated Global Computation | |
| |
| |
| |
Introduction | |
| |
| |
| |
An Equitable, Revolving Hierarchy | |
| |
| |
| |
Implementation Issues | |
| |
| |
| |
Application: Branch-and-Bound Algorithm | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Synchronizers | |
| |
| |
| |
Introduction | |
| |
| |
| |
A Simple Synchronizer | |
| |
| |
| |
Synchronizer [alpha] | |
| |
| |
| |
Synchronizer [beta] | |
| |
| |
| |
Synchronizer [gamma] | |
| |
| |
| |
Application: BFS Tree Algorithm | |
| |
| |
| |
Limitations of Synchronizers | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Slicers | |
| |
| |
| |
Introduction | |
| |
| |
| |
Characterization of an Execution Lattice | |
| |
| |
| |
Slicing a Distributed Computation | |
| |
| |
| |
Algorithm for Slicing Regular Predicates | |
| |
| |
| |
Application: Predicate Detection and Control | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Distributed Shared Memory | |
| |
| |
| |
Introduction | |
| |
| |
| |
System Model | |
| |
| |
| |
Sequential Consistency | |
| |
| |
| |
Linearizability | |
| |
| |
| |
Other Consistency Conditions | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Self-Stabilization | |
| |
| |
| |
Introduction | |
| |
| |
| |
Mutual Exclusion with K-State Machines | |
| |
| |
| |
Mutual Exclusion with Three-State Machines | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Knowledge and Common Knowledge | |
| |
| |
| |
Introduction | |
| |
| |
| |
Knowledge and Common Knowledge | |
| |
| |
| |
Application: Two-Generals Problem | |
| |
| |
| |
Defining Knowledge Based on Isomorphism | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Consensus Under Asynchrony | |
| |
| |
| |
Introduction | |
| |
| |
| |
Requirements and Assumptions | |
| |
| |
| |
An Informal Proof of the Impossibility Result | |
| |
| |
| |
A Formal Proof of the Impossibility Result | |
| |
| |
| |
Terminating Reliable Broadcast | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Consensus Under Synchrony | |
| |
| |
| |
Introduction | |
| |
| |
| |
Consensus Under Crash Failures | |
| |
| |
| |
Consensus Under Byzantine Faults | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Failure Detectors | |
| |
| |
| |
Introduction | |
| |
| |
| |
Completeness and Accuracy Properties | |
| |
| |
| |
Relationship Among Various Failure Detectors | |
| |
| |
| |
Algorithm for Consensus Using [diamonds suit symbol] S | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Solvable Problems in Asynchronous Systems | |
| |
| |
| |
Introduction | |
| |
| |
| |
Failure Detection | |
| |
| |
| |
k-Set Consensus Problem | |
| |
| |
| |
Reliable Broadcast Problem | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Checkpointing for Recovery | |
| |
| |
| |
Introduction | |
| |
| |
| |
Zig-Zag Relation | |
| |
| |
| |
R-Graphs | |
| |
| |
| |
Recoverable Global States: Using Slices | |
| |
| |
| |
Rollback Dependency Trackability (RDT) | |
| |
| |
| |
Communication-Induced Checkpointing | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Message Logging for Recovery | |
| |
| |
| |
Introduction | |
| |
| |
| |
Model | |
| |
| |
| |
Fault-Tolerant Vector Clock | |
| |
| |
| |
Version End Table | |
| |
| |
| |
The Protocol | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
| |
Partial Order | |
| |
| |
| |
Introduction | |
| |
| |
| |
Definition of Partial Orders | |
| |
| |
| |
Lattices | |
| |
| |
| |
Properties of Functions on Posets | |
| |
| |
| |
Down-Sets and Up-Sets | |
| |
| |
| |
Problems | |
| |
| |
| |
Bibliographic Remarks | |
| |
| |
Bibliography | |
| |
| |
Index | |