Facta Univ. Ser.: Elec. Energ., vol. 16, No. 2, December 2003, pp. 439-441

Jean Bacon, Tim Harris
OPERATING SYSTEMS: Concurrent and Distributed Software Design
Soft cover, pp.877, plus XXXIV $ 49.90
Addison Wesley Imprint from Pearson Education Limited
%Edinburgh Gate, Harlow, Essex, CM20 2JE, England
ISBN 0-321-11789-1
http://www.pearsoneduc.com

In general about the book

The main objective of the book is the system design especially the operating system approach with the emphasis how to comprehend existing systems and how to design new systems. This book provides integrating and summarizing study for variety of well known and used operating systems. This book is a follow up of previous two editions of the book Concurrent Systems by the same authors. It extends the treatment of operating systems making it appropriate as textbook. A very interesting approach offered by this book is the integrated approach to database and distributed system design.

The concepts of concurrency, modularity and distribution are essential for modern systems. This book sets the accent on distributed systems and modern approach of design of operating systems, which avoids the focus on centralized systems, instead placing the operating system within its context. It uses Java to illustrate the object-orientation concepts, concurrent algorithms and distributed programming. Several case studies about modern systems are presented including classical and contemporary UNIX, Linux, Solaris, Windows 2000, etc. Some middleware paradigms, like CORBA, COM, DCOM and .NET; World Wide Web concepts, like XML and SOAP, and Transaction processing with emphasis on EFT, SWIFT are just examples of details described to give an extensive overview of modern approach in distributed and concurrent software system design. The reader not only learns about system components, but also can learn details about concurrency control and low level synchronization implementation and algorithms. Security aspects and the relationship between system components are essential for this book. It seems that a lot of emphasis is given for Inter-Process Communication with examples in Java.

Book content

The book is divided into four parts, the first being essential for introductory one semester course in Operating systems. It is about system design, with technology and principles, covering the basic operating system functions and describing the abstraction and implementation of a system as a community of (possibly distributed) concurrent processes. Chapter 1 describes a number of types of system and draws out requirements to support them. Software systems can exploit a wide range of hardware topologies and architectures. Modular system architecture is introduced in Chapter 2 and device handling and communications in Chapter 3. Chapter 4 gives detailed concrete basis for the process abstraction. Besides the object oriented paradigm and overview of hardware system components, there is analysis of the processes, memory and file management in subsequent Chapters 4-6. Afterwords the distributed systems are introduced in Chapter 7 with their fundamental properties and time and naming in more details. A special Chapter on system security is included as Chapter 8.

The second part of the book is upgrade for concurrent and distributed systems giving aspects for advanced course in Operating systems, covering topics about network and distributed operating system concepts. This part covers concurrency control in main memory, focusing on concurrency control in operating systems and application-level systems and exploring inter-process communication in the context of (distributed) system design. It covers system structure and low level synchronization with implementation and algorithms. Inter-process communication is analyzed within the shared memory and distributed concepts. Chapter 9 discusses the mayor division between processes which share memory, running in a common address space. The lowest level support for process interactions relevant to computer architecture is concerned in Chapter 10. The following two Chapters build on lowest level to create algorithms and language primitives that have been introduced into high-level concurrent programming languages. Chapter 13 compares inter-process communication within systems where shared memory is available and where it is not, while the Chapter 14 covers the distributed inter-process communication for processes which inhabit separate address spaces covering the pipes and message passing mechanisms. Special Chapters (15 and 16) are included on crashes and distributed inter-process communications with remote procedure calls.

Third part concerns transactions, demonstrating the general applicability of concurrent composite operations. Topics included are composite operations, resource allocation and deadlock, concurrency control and recovery. Chapter 17 introduces the problems and defines the context for this study. Chapter 18 discusses the desirability of dynamic resource allocation and the consequent possibility of system deadlock. Composite operation execution in the presence of concurrency and crashes are discussed in Chapter 19. Abstract data object model is build up with definitions of fundamental properties of transactions. Concurrency control and crash recovery are topics of Chapters 20 and 21. The final two Chapters (22 and 23) are dedicated for distributed transactions and computations, with details on methods implementing concurrency control, two-phase commit protocol, validation protocol and basic algorithms.

The last part of the book are case studies, considering different systems in the light of the perspective developed in the book: Classical UNIX (Chapter 24); Linux, Solaris and Contemporary Unix (Chapter 25); Extensible Systems with micro-kernels (Chapter 26); Windows 2000 with object oriented design (Chapter 27); Web Programming (Chapter 28); Middleware (Chapter 29); and Transaction Processing Systems (Chapter 30).

Useful book

The audience for this book is last year students in advanced courses about operating systems or graduate students as starting point in the systems area. The Java language has been used throughout to illustrate object-oriented concepts, concurrent algorithms and distributed programming. The case studies, covering a full suite of professional operating systems, enable this book as a good mix of theory and practice of real operating systems that function within a distributed environment. Within the book the authors certainly define that objects, concurrency and transactions are unifying topics. To summarize the use as textbook the authors present self-assessment questions, exercises in each chapter, coupled with more challenging projects. Java is offered as common programming tool. This book covers the latest developments in Operating System theory. It incorporates sufficient detail on the standard topics for introductory and advanced Operating System courses with dedicated chapters on system security, Linux, Windows 2000 and extensible operating systems (including the Java Virtual Machine), micro-kernels and embedded systems to complement the strong coverage of distributed systems.

prof. Marjan Gusev
University Sts Cyril and Methodius
PMF Institute of Informatics
Arhimedova bb, PO BOX 162
1000 Skopje, Macedonia