Vol. 14, No. 1, April 2001, 281--284 Andrew S. Tanenbaum
Modern Operating Systems (2nd Edition)
Prentice-Hall Inc, Upper Saddle River, New Jersey 07458, 2001
Hardcover, 950 pages, USA $ 45.99
ISBN 0-13-031358-0
http://www.pearsoneduc.com

In general about book

The concept of operating system as primarily providing its users with a convenient interface is a top-down view and belongs to ordinary users. An alternative, bottom-up view, holds that operating system is there to manage all the pieces of a complex system including processors, memories, timers, disks, mice, network interfaces, printers and a wide variety of other devices and belongs to operating system designers and system programmers. For them operating system provide an orderly and controlled allocation of the processors, memories and I/O devices among the various programs competing for them. The book is intended for such as audience providing an up-to-date overview and practical information on understanding and designing modern operating systems, blending a theoretical foundation of operating systems design with real, contemporary implementations. It explains key mechanisms of modern operating systems, types of design tradeoffs and decisions involved in system design, and the context within which the operating system functions.

The book reflects the changes in the operating systems world since the first edition of this book appeared in 1992. Major changes include the addition of entire chapters of computer security, multimedia operating systems, and Windows 2000, all important and timely topics. In addition, a new and unique chapter on operating system design has been added. Finally numerous topics have been added to the book or heavily revisited. These topics include: graphical user interfaces, multiprocessor operating systems, power management for laptops, trusted systems, viruses, network terminals, CD-ROM file systems, mutexes, RAID, soft timers, stable storage, fair-share scheduling and new paging algorithms. The chapters devoted to UNIX and Windows 2000 tie operating systems concepts and mechanisms to real-world and contemporary design, and implementation issues within two most popular operating systems today. A new and useful feature is that many chapters have a section on research about the topic of the chapter. This is intended for introducing the reader to modern work in processes, memory management and other advanced operating systems topics along with numerous references of up-to- date research literature.

Every chapter is followed by section with comprehensive set of problems related to the topic under discussion. The total number of problems exceeds 450. A solution manual is available to professors using this book in a course. They can obtain a copy from their local Prentice Hall representative.

The book covers all cores and some electives from the sugested material in the Operating Systems component of the draft Computer science body of knowledge proposed by the ACM/IEEE in the Computing Curricula 2001 document.

More information and useful material related to book are available on the Internet at the authors Web page: www.cs.vu.nl/~ast/ by clicking on link Software and supplementary material for my books. The book supplements include figures from the book (in various formats), PowerPoint presentation for a course using this book and small program simulators for practical student training and exercises.

Chapter content

Chapter 1 represents an introduction and so-called bird's-eye view of the operating system. It reviews the history of operating system starting from the early batch systems to modern multiprogramming systems and personal computer systems. Since operating systems interact closely with the computer hardware, the topic reviews shortly computer hardware components and their interconnections. The basic components on which all operating systems are built: processes, memory management, I/O management, the file system and security are introduced leaving to subsequent chapters to describe them thoroughly. The concept of system calls as the programmer interface to an operating system, as well as design principles of operating system as monolithic, layered, virtual machine, exokernels and client-server system are presented.

Chapter 2 presents the most central concept in any operating system: the process as an abstraction of the running program. It introduces the concept of multiple threads of control within a single process, which are scheduled independently, each one having its own stack but sharing a common address space within the process they belong to. Chapter discusses process and thread properties and how they communicate with one another using interprocess primitives, such as semaphores, monitors or messages. It also gives a number of detailed examples of how interprocess communication works and how to avoid some of the pitfalls. The review of scheduling algorithms concludes this Chapter.

Chapter 3 introduces deadlocks as potential problems in any operating system. It briefly shows what deadlocks are and discusses the ways to prevent or avoid them.

Chapter 4 presents memory management in detail. The important topic of virtual memory is examined along with closely related concepts such as paging and segmentation.

Chapter 5 provides introduction to the principles and techniques used within Input/Output subsystem. The tree ways in which I/O can be accomplished: programmed I/O, interrupt driven I/O and DMA are discussed. The four level structure of I/O: interrupt service procedures, the device drivers, the device-independent I/O software, and the I/O libraries are described. Several important devices, including disks, clocks, keyboards, displays and network terminals are used as examples.

Topics of Chapter 6 provide detailed overview of both the file system interface and the file system implementation. The chapter offers a basic view to a file system through operations on collection of files and directories, along with operations of them, but more thoroughly from inside, concerning how storage is allocated, how system keeps track of files and containing blocks, how directory structure is maintained, how free disk space is managed, and so on. Examples of file systems include ISO 9660, CP/M, MS DOS, Windows 98 and UNIX (general). While chapters 1-6 present completed study of the basic principles of single-CPU operating systems which any course on operating systems should cover, followed chapters presented some advanced and more interesting topics.

Chapter 7 examines multimedia operating systems, which have a number of properties and requirements that differ from conventional operating systems. Among other items, scheduling and the file system are affected by the nature of multimedia. Another advanced topic is multiple processor systems, including multiprocessors, parallel computers and distributed systems.

Chapter 8 covers the main properties of their architectures, as well as concepts and implementation issues regarding their operating systems.

A hugely important subject is operating system security, which is covered in Chapter 9. Among the topics discussed in this chapter are threats (e.g. viruses and worms), protection mechanisms and security models.

Next chapters include very valuable case studies of real operating systems. These are UNIX (Chapter 10) and Windows 2000 (Chapter 11). They present how operating system principles and concepts covered by previous chapters are applied in the real world. Due to high diversity of UNIX clones and versions, the fundamental principles, system calls, general implementation strategies, algorithms and data structures in Chapter 10 are primarily drawn upon examples of 4.4BSD (FreeBSD), System VR4 and Linux implementations.

The book concludes with some thoughts about operating system design in Chapter 12. It represents an overview at some of the issues and trade-offs that operating systems designers have to take into account when designing and implementing a new operating system. Chapter 13 is intended as an aid to readers interested in pursuing their study of operating systems further, containing section with list of suggested readings, and alphabetical bibliography of all books and articles cited in this book.

Useful book

The book represents a complete reference offering practical and example-based information on constructing and understanding modern operating systems. It offers a comprehensive treatment of operating system concepts with an emphasis on internals and real implementation issues. The title provides a powerful understanding of the key mechanisms of operating systems and types of design tradeoffs and decisions. The book is useful both as a text for an one- semester undergraduate course in operating systems for computer science, computer engineering, and electrical engineering majors, and a reference for professionals who need to understand advanced concepts of operating systems and up- to-date developments in this field. I can strongly recommend this book for any of such purposes.

Slobodanka Djordjevic-Kajan
Faculty of Electronic Engineering
Beogradska 14, P.O. Box 73
18000 Nish, Yugoslavia