Operating systems textbooks have a distinguished tradition of practical application. From the earliest incarnation of Unix at Bell Labs to the split with Berkeley and the multiple versions that exist today, the availability of source code made it possible for hackers, in the original and good sense of the word, to develop and hone their skills. Textbook authors were not far behind. Andrew Tanenbaum took the step of writing Minix, his own cut-down operating system, and on it based all his examples illustrating operating system principles. One volume even includes a printed listing of much of the Minix source code. Not for the faint-hearted, perhaps, but a wonderful resource.
Things have moved on since then in two interesting ways. First, Linux came along and became popular on the PC. Second, the design of operating systems improved with the introduction of microkernels as used in Windows NT. Paradoxically, Linux is not a product of such improved design - it is monolithic, like the earliest designs, as a result of its evolving nature, says John O'Gorman.
O'Gorman's textbook is firmly in the practical tradition mentioned. He has chosen to use Linux not because of its design but because it is freely available. He might have mentioned its increasing importance in the marketplace, with software and hardware vendors recently making large investments in its support. Some see it as a preferable alternative to the Microsoft or the Sun way. But this is not a book about operating-systems wars. It concentrates on expounding theory and its practical implementation in the internals of an operating system, with a particular focus on system services that use the standard Posix interface. It is not a book full of references to relevant papers. A short bibliography is provided with the kind of support books required to complete the discussion questions. Readers should not expect any information on systems shells or much that would be useful to systems managers - the target audience is clearly defined as advanced computer-science undergraduates or postgraduates. A familiarity with C is a natural prerequisite, along with an understanding of pointers, linked lists and such, which, in these Java-dominated days, is not as widespread as it once was.
There is little surprise in the material. Process management, memory management, interprocess communication, regular and distributed file systems, remote-procedure calls and fault tolerance are all covered. Four chapters are devoted to concurrency issues, with their practical implications demonstrated in real examples of programs becoming indeterminate.
This is a clearly written book with well-chosen examples and useful summaries at the end of each chapter. Throughout, good use is made of analogy: for instance, a wedding ceremony is given as an example of how a distributed transaction is implemented. Simply, the minister asks the groom if he is willing to marry the bride. The groom commits. The minister asks the bride if she is willing to marry the groom. The bride commits. Then the minister announces that the whole transaction is committed. If either bride or groom is unwilling to commit, the transaction is aborted.
The motivation for teaching operating systems is made clear in this book. The academic in search of a modern, practical book for teaching operating systems should seriously consider this book and start using Linux as a teaching tool.
Tony Valsamidis is senior lecturer in information systems, University of Greenwich.
Operating Systems with Linux
Author - John O'Gorman
ISBN - 0 333 94745 2
Publisher - Palgrave
Price - £25.99
Pages - 462