I. BASIC CONCEPTS.
Sequential Programming. Language Notation.
Logic, Propositions, and Predicates.
A Programming Logic.
Proofs in Programming Logic.
Program Derivation.
Historical Notes and References.
Exercises.
Concurrency and Synchronization. Specifying Concurrent Execution.
Atomic Actions and Synchronization.
Semantics of Concurrent Execution.
Techniques for Avoiding Interference.
Auxiliary Variables.
Safety and Liveness Properties.
Historical Notes and References.
Exercises.
II. SHARED VARIABLES.
Fine-Grained Synchronization. The Critical Section Problem.
Critical Sections: Tie-Breaker Algorithm.
Critical Sections: Ticket Algorithm.
Critical Sections: Bakery Algorithm.
Barrier Synchronization.
Data Parallel Algorithms.
On-The-Fly Garbage Collection.
Implementing Processes.
Historical Notes and References.
Exercises.
Semaphores. Notation and Semantics.
Basic Uses and Programming Techniques.
Selective Mutual Exclusion.
General Condition Synchronization.
Resource Allocation.
Implementation.
Historical Notes and References.
Exercises.
Conditional Critical Regions. Notation and Semantics.
Dining Philosophers Revisited.
Reader/Writers Revisited.
Interprocess Communication.
Scheduling and Resource Allocation.
Implementations.
Historical Notes and References.
Exercises.
Monitors. Programming Notation.
Formal Semantics and Program Proofs.
Synchronization Techniques.
Disk Scheduling: Program Structures.
Alternative Approaches to Synchronization.
Implementations.
Historical Notes and References.
Exercises.
III. MESSAGE PASSING.
Asynchronous Message Passing. Programming Notation.
Formal Semantics.
Filters: A Sorting Network.
Clients and Servers.
Heartbeat Algorithms.
Probe/Echo Algorithms.
Broadcast Algorithms.
Token-Passing Algorithms.
Replicated Servers.
Implementations.
Historical Notes and References.
Exercises.
Synchronous Message Passing. Programming Notation.
Formal Semantics.
Networks of Filters.
Interacting Parallel Processes.
Clients and Servers.
Implementations.
Historical Notes and References.
Exercises.
RPC and Rendezvous. Remote Procedure Call.
Rendezvous.
A Multiple Primitives Notation.
Clients and Servers.
Parallel Algorithms.
Implementation.
Historical Notes and References.
Exercises.
IV. PRACTICE.
Language Overviews. Turing Plus: Monitors.
Occam: Synchronous Message Passing.
Ada: Rendezvous.
SR: Multiple Primitives.
Linda: Distributed Data Structures.
Comparison and Performance.
Historical Notes and References.
Exercises.
Glossary. Bibliography. Index. 0805300864T04062001