An Introduction to Distributed Algorithms [Book Review]

2

Click here to load reader

Transcript of An Introduction to Distributed Algorithms [Book Review]

Page 1: An Introduction to Distributed Algorithms [Book Review]

specifymg concurrency and introducing control-predicate axioms, he discusses the aspects ofinterference. Chapter 5 also dis- cusses indivisibility and condition syn- chronization as the elementary synchro- nization mechanisms and shows how to use them to avoid interference.

Chapter 6 is on invariance and Chap- ter 7 covers safety properties with past terms. Schneider uses the well-known consumer/producer example to demon- strate that with a proven safety property, some “bad thing” (that is, a deadlock) will not happen during execution. Chapter 7 explains that whether or not a state is con- sidered a bad thing often depends on the system’s preceding states. This chapter extends the predicate-logic techniques of Chapter 6, which can now be used for reasoning about any arbitrary safety prop- erties. Schneider illustrates this with a concurrent reading-while-writing prob- lem, where shared variables are used for communication. The chapter concludes by introducing auxiliary variables.

Chapter 8 covers the verification of temporal logic properties. It discusses axioms and inference rules for reasoning about properties specified by arbitrary

temporal-logic formulas, reasoning from fairness assumptions, and techniques for proving eventualities.

Chapters 9 to 11 address the problems of mapping the developed formalisms to real hardware, taking into account that only a small, fmed set of unconditional atomic actions can execute on a real com- puter, extended by some conditional atomic actions from an operating system. In Chapter 9, Schneider introduces a sub- set of the programmmg notation devel- oped in previous chapters, which can be easily compiled into fine-grained, uncon- ditional atomic actions. He also discusses some programming techniques based on this subset. Chapter 10 explains the dif- ferent mechanisms of synchronization on an operating-system level, beginning with semaphores and locks, and concluding with more advanced concepts such as split binary semaphores and conditional criti- cal region synchronization. Chapter 11 addresses the communication mecha- nisms of d i s~buted systems, using shared objects (that is, communication channels) instead of shared-memory objects. It also discusses synchronous and asynchronous message passing.

An Introduction to Distributed Algorithms by Valmir C. Barbosa 365 pages $40 MIT Press Cambridge, Mass. 1996 ISBN 0-262-02412-8

Chapter 12, as a conclusion and fol- lowing the metaphor of pointillism, combines the atomic parts of knowledge (the “dots”) of the previous chapters to obtain the working concurrent program (the “painting”). lt discusses aspects of programming languages and tools.

The text is often not easily accessible, owing to a lot of abstract formulations, which are hard to understand for new- comers. A glossary of symbols for for- mal logic notations is necessary, which the book does not contain. Schneider should have avoided the stepwise intro- duction of a new formal “programming language” by using a common and well- known programming language such as C or Pascal and extending this by the necessary syntactic and semantic ele- ments. He tests the reader’s under- standing with many exercises a t the end of each chapter. However, the exercises would have been more beneficial if Schneider had outlined the solutions.

On Conmwent Programming does offer a lot of formal methodology for the pre- sentation of assertional methods, mak- ing it a solid base for any lecturer in com- puter science.

An Introduction to Distributed Algorithms reviewed by Svetozar Margenov, Bulgarian Academy of Sciences

- An Introdzmion to Di.wibuted Algorithms is a new textbookin one of the richest fields of modern computer science. Valmir Barbosa introduces important problems, general approaches, and algorithms while building a theoretical foun- dation for current distributed-memory systems-such as computer networks, work- station networks, and multiprocessors. He sl~llfully incorporates some of the newest achevements, recently published in scientific journals and specialized volumes, into the framework of earlier fundamental results.

Barbosa organizes the material into two main parts, each consisting of five chapters. The first two chapters briefly discuss mes- sage-passing systems and introduce the asyn- chronous and synchronous models of distrib- uted computations. The general assumption is that a connected graph G = (N, E)-where the set of nodes N is the set of processors and the set of edges E is the set of point-to-point

communication links-represents the dis- tributed-memory system. These chapters introduce general templates for asynchronous and synchronous algorithms and serve as a framework for the presentation of algorithms in the following chapters.

Chapter 3 introduces event-based formal- ism, orders, and global states, systematically treating the topic of computanon models for distributed algorithms. Chapter 4 considers the problems of propagating information from one group of nodes to all nodes, providing every node with information on the identifications of all nodes in G and computing the shortest dis- tances between all pairs of nodes. On the one hand, these are basic problems in the field of distributed computing. On the other hand, the algorithms for their solution accurately demon- strate two general approaches: using a prelim- inary found spanning tree of G and applying the “wave” strategy.

86 IEEE Concurrency

Page 2: An Introduction to Distributed Algorithms [Book Review]

Chapter 5 expands the general knowl- edge of how to construct distributed algorithms. It regards the techniques of leader election, distributed snapshots, and network synchronization as build- ing blocks for thi:; purpose. It derives estimates of the message complexity and the time complexity for all algorithms in Part I. In particular, this chapter illus- trates with three general synchronizers the mutual dependence between these two complexities.

Barbosa dedicates the final five chap- ters to a particular class of problems and related algorithms. Chapter 6 builds a framework of algorithmic approaches and tools for stability detection and, more specifically, for detecting deadlocks and the termination of distributed com- putations. Chapter 7 considers problems closely rclated to thosc in Chapter 4. It includes graph algorithms to find mini- mum spanning trees and a maximum flow in directed graphs. Chapter 8 stud- ies the problems cif shearing resources,

considering in particular the classic din- ing philosophers problem and drinking philosophers problem. These corre- spond respectively to the cases of ensur- ing mutual exclusion, when each node accesses one and the same set of resources during the distributed computation, and when the set of resources might vary from one time to the next. The last two chapters of the book discuss program debugging and the simulation of dis- tributed programs and systems,

An Introduction to Distributed Algo- rithms is intended to support a one-term advanced undergraduate or first-year graduate course in computer science or software engineering. Depending on the students’ level of knowledge, the instruc- tor could omit the first two chapters. If preparing a one-term course on distrib- uted algorithms, the instructor might also regard the last four chapters as optional. In addition, the book can be used by computer scientists and software engineers. Professionals who are not

specialists in parallel computing, but who would like some introductory knowledge about distributed algorithms, can also use this self-contained book.The required background is limited to some familiar- ity with basic graph theory.

Every chapter has a section with exer- cises that can be classified in two groups: direct implementation of the general techniques for a particular case or, for more knowledgable readers, advanced treatment of the topics discussed in the textbook. The hook is written clearly and on the appropriate level, and satisfies the need for new and systematic infor- mation in the field of distributed algo- rithms. The bibliography contains 349 titles: 166 published after 1990. Each chapter ends with bibliographic notes indicating the original sources from which the main results wcrc taken. These notes are especially useful for readers who would like to find more detailed information about some of the topics discussed in the book.

Parallel Methods for VLSI Layout Design reviewed by Roman Trobec, Jozef Stefan Institute, Ljubljana, Slovenia

Parallel Methods for VLSI Layout Design by C.P. Ravikumar 195 pages $69 Ablex Publishing Corp. Norwood, N.J. 1996 ISBN 0-89391-828-8

Very Large Scale Integration makes possible the integration of millions of connected tran- sistors acting as a coordinated complex system on a small silicon area. Today’s tcchnology produces much larger circuits than can be designed and tested automatically. This book introduces the pranking possibility that pow- erful parallel computers, themselves designed with VLSI chips, can implement the auto- matic design of future VLSI systems; complex systems enable the development of more com- plex systems.

Parallel Methods for VLSI Layout Design presents an interesting application of paral- lel computing in the field of VLSI design and testing. The book focuses on the phys- ical design of VLSI circuits. At first glance, VLSI physical design appears to be a very specialized area, but studying this book reveals that many methods and a great part of the theory might also be applied to other engineering areas and even to solving many routine problems.

The book begins by introducing, with

apropriate terminology, basic concepts of VLSI physical design. Chapter 2 divides the physical design into three steps: logic parti- tion, placement, and routing. It then analyzes the computational complexity of each step. Some readers might find it useful to check Appendix A, which gives basic concepts of computational complexity and graph theory.

Chapter 3 presents an overview of parallel architecture and processing. It describes shared-memory and distributed-memory multiprocessors as well as vector processing. For more detailed information, Ravikumar mentions some concrete computer systems and refers readers to Appendix B. This chap- ter also introduces the Parallel Random Access Machine as a general theoretical model of par- allel computing. However, any overview of parallel architectures becomes obsolete soon after publishing; many similar books have the same problem. In this chapter, therefore, Ravikumar should havc tcsted all described algorithms on a set of theoretical parallel architectures similar to those introduced by

January-March 1998 87