Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 2
Concurrent and distributed computing in Java / Vijay K. Garg.
Garg, Vijay K. (Vijay Kumar),
Distributed Systems versus Parallel Systems -- Characteristics of Parallel and Distributed
Systems -- Design Goals -- Specification of Processes and Tasks -- Runnable Interface -- Join Construct in Java -- Thread Scheduling -- Mutual Exclusion Problem -- Peterson's Algorithm -- Lamport's Bakery Algorithm -- Hardware Solutions -- Disabling Interrupts -- Instructions with Higher Atomicity -- Synchronization Primitives -- Semaphores -- The Producer-Consumer Problem -- The Reader-Writer Problem -- The Dining Philosopher Problem -- Monitors -- Dangers of Deadlocks -- Consistency Conditions -- System Model -- Sequential Consistency -- Linearizability -- Other Consistency Conditions -- Wait-Free Synchronization -- Safe, Regular, and Atomic Registers -- Regular SRSW Register -- SRSW Multivalued Register -- MRSW Register -- MRMW Register -- Atomic Snapshots -- Consensus -- Universal Constructions -- Distributed Programming -- InetAddress Class -- Sockets based on UDP -- Datagram Sockets -- DatagramPacket Class -- Example Using Datagrams -- Sockets Based on TCP -- Server Sockets -- Example 1: A Name Server -- Example 2: A Linker -- Remote Method Invocations -- Remote Objects -- Parameter Passing -- Dealing with Failures -- Client Program -- Other Useful Classes -- Models and Clocks -- Model of a Distributed System -- Model of a Distributed Computation -- Interleaving Model -- Happened-Before Model -- Logical Clocks -- Vector Clocks -- Direct-Dependency Clocks -- Matrix Clocks -- Resource Allocation -- Specification of the Mutual Exclusion Problem -- Centralized Algorithm -- Lamport's Algorithm -- Ricart and Agrawala's Algorithm -- Dining Philosopher Algorithm -- Token-Based Algorithms -- Quorum- Based Algorithms -- Global Snapshot -- Chandy and Lamport's Global Snapshot Algorithm -- Global Snapshots for non-FIFO Channels -- Channel Recording by the Sender -- Application: Checkpointing a Distributed Application -- Global Properties -- Unstable Predicate Detection -- Application: Distributed Debugging -- A Token-Based Algorithm for Detecting Predicates -- Detecting Termination and Deadlocks -- Diffusing Computation -- Dijkstra and Scholten's Algorithm -- An Optimization -- Termination Detection without Acknowledgment Messages -- Locally Stable Predicates -- Application: Deadlock Detection -- Message Ordering -- Causal Ordering -- Application: Causal Chat -- Synchronous Ordering -- Total Order for Multicast Messages -- Centralized Algorithm -- Lamport's Algorithm for Total Order -- Skeen's Algorithm -- Application: Replicated State Machines -- Leader Election -- Ring-Based Algorithms -- Chang- Roberts Algorithm -- Hirschberg-Sinclair Algorithm -- Election on General Graphs -- Spanning Tree Construction -- Application: Computing Global Functions -- Synchronizers -- A Simple Synchronizer -- Application: BFS Tree Construction -- Synchronizer [alpha] -- Synchronizer [beta] -- Synchronizer [gamma] -- Agreement -- Consensus in Asynchronous Systems (Impossibility) -- Application: Terminating Reliable Broadcast -- Consensus in Synchronous Systems -- Consensus under Crash Failures -- Consensus under Byzantine Faults -- Knowledge and Common Knowledge -- Application: Two-General Problem -- Transactions -- ACID Properties -- Concurrency Control -- Dealing with Failures -- Distributed Commit -- Recovery -- Zigzag Relation -- Communication-Induced Checkpointing -- Optimistic Message Logging: Main Ideas -- Model -- Fault-Tolerant Vector Clock -- Version End Table -- An Asynchronous Recovery Protocol -- Message Receive -- On Restart after a Failure -- On Receiving a Token -- On Rollback -- Self-Stabilization -- Mutual Exclusion with K-State Machines -- Self-Stabilizing Spanning Tree Construction -- Various Utility Classes.