Contents

List of Figures

Preface

1   Introduction

1.1 Introduction

1.2 Distributed Systems versus Parallel Systems

1.3 Overview of the Book

1.4 Characteristics of Parallel and Distributed Systems

1.5 Design Goals

1.6 Specification of Processes and Tasks

1.6.1 Runnable Interface

1.6.2 Join Construct in Java

1.6.3 Thread Scheduling

1.7 Problems

1.8 Bibliographic Remarks

2   Mutual Exclusion Problem

2.1 Introduction

2.2 Peterson’s Algorithm

2.3 Lamport’s Bakery Algorithm

2.4 Hardware Solutions

2.4.1 Disabling Interrupts

2.4.2 Instructions with Higher Atomicity

2.5 Problems

2.6 Bibliographic Remarks

3   Synchronization Primitives

3.1 Introduction

3.2 Semaphores

3.2.1 The Producer-Consumer Problem

3.2.2 The Reader-Writer Problem

3.2.3 The Dining Philosopher Problem

3.3 Monitors

3.4 Other Examples

3.5 Dangers of Deadlocks

3.6 Problems

3.7 Bibliographic Remarks

4   Consistency Conditions

4.1 Introduction

4.2 System Model

4.3 Sequential Consistency

4.4 Linearizability

4.5 Other Consistency Conditions

4.6 Problems

4.7 Bibliographic Remarks

5   Wait-Free Synchronization

5.1  Introduction

5.2  Safe, Regular, and Atomic Registers

5.3  Regular SRSW Register

5.4  SRSW Multivalued Register

5.5  MRSW Register

5.6  MRMW Register

5.7  Atomic Snapshots

5.8  Consensus

5.9  Universal Constructions

5.10 Problems

5.11 Bibliographic Remarks

6   Distributed Programming

6.1 Introduction

6.2 InetAddress Class

6.3 Sockets based on UDP

6.3.1 Datagram Sockets

6.3.2 Datagram Packet Class

6.3.3 Example Using ...

Get Concurrent and Distributed Computing in Java now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.