Introduction.- Simple Lock.- Bounded Buffer.- Message-Passing Services.- Fifo Channels from Unreliable Channels.- Programs, Semantics and Effective Atomicity.- Implements and Compositionality.- SESF for Time-Constrained Programs.- Lock using Peterson's Algorithm.- Lock using the Bakery Algorithm.- Distributed Lock Service.- Distributed Lock using Timestamps.- Channel with Termination Detection Service.- Termination Detection for Diffusing Computations.- Object-Transfer Service.- Object Transfer using Path Reversal.- Distributed Shared Memory Service.- A Single-Copy Distributed Shared Memory.- A Multi-Copy Distributed Shared Memory.- Reliable Transport Service.- Reliable Transport Protocol.
Distributed Programming: Theory and Practice presents a practical and rigorous method to develop distributed programs that correctly implement their specifications. The method also covers how to write specifications and how to use them. Numerous examples such as bounded buffers, distributed locks, message-passing services, and distributed termination detection illustrate the method. Larger examples include data transfer protocols, distributed shared memory, and TCP network sockets.
Distributed Programming: Theory and Practice bridges the gap between books that focus on specific concurrent programming languages and books that focus on distributed algorithms. Programs are written in a "real-life" programming notation, along the lines of Java and Python with explicit instantiation of threads and programs. Students and programmers will see these as programs and not "merely" algorithms in pseudo-code. The programs implement interesting algorithms and solve problems that are large enough to serve as projects in programming classes and software engineering classes. Exercises and examples are included at the end of each chapter with on-line access to the solutions.
Distributed Programming: Theory and Practice is designed as an advanced-level text book for students in computer science and electrical engineering. Programmers, software engineers and researchers working in this field will also find this book useful.
Bridges the gap between books that focus on specific concurrent programming languages and books that focus on distributed algorithms
Programs are written in a "real-life" programming notation along the lines of Java and Python Exercises
Examples are included in each chapter with on-line access to the solutions