This book presents a comprehensive exploration of the practical issues, tested techniques, and accepted theory for developing fault tolerant systems. It is a ready reference to work already done in the field, with new approaches devised by the authors. The book covers each phase of fault tolerant design, including: hardware and software architecture incorporating OSI networking models; distributed system requirements and communication algorithms; fault tolerance mechanisms and exception handling; resource allocation and performance optimization; and much more.