This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:

Citation(s): 2 (selected).

The document's metadata is available in BibTeX format.

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

Copyright © 2005 by the Association for Computing Machinery, Inc. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from Publications Dept, ACM Inc., fax +1 (212) 869-0481, or

Book Review: The Design and Implementation of the FreeBSD Operating System

Diomidis Spinellis
Athens University of Economics and Business

Marshall Kirk McKusick and George V. Neville-Neil
The Design and Implementation of the FreeBSD Operating System
Addison Wesley, 2004
683 pp.

The code of an operating system embodies all that makes systems programming a fascinating and exciting endeavour: the definition of interfaces and abstractions, the use of interesting algorithms and data structures, an unparalleled attention to reliability, efficiency, and scalability, tight integration with hardware, as well as innovative approaches for handling the problems of software stability, complexity, and portability. A book describing an operating system's design and implementation is destined to be a goldmine of practical and valuable knowledge; previous works of this genre, such as those by Organick, Lions, Bach, and Leffler et al, have all deservedly become classics.

McKusick's and Neville-Neil's book describes the design and implementation of the FreeBSD 5.2 operating system. FreeBSD is a free open-source operating system for a number of modern processor architectures. It is derived from BSD, the version of Unix developed by the Computer Science Research Group at the University of California, Berkeley. It is developed and maintained by a large, centrally managed, team of individuals (including this reviewer). FreeBSD offers today advanced networking, performance, security and compatibility features which are still missing in other operating systems, even some of the best commercial ones. Tempted by the system's quality and the liberal license under which it is distributed, many companies have adopted FreeBSD for running their production servers or for producing custom embedded systems. In addition to its adoption in mission critical applications, the system's academic pedigree has endowed FreeBSD with a culture promoting the development of cutting edge research features and an exemplary development process.

This book is an essential update on earlier books covering BSD systems, and now covers performance improvements in the virtual memory system, the new symmetric multiprocessor support, process threads, the operating system virtualization jail facility, and filesystem snapshots. Continuing with the style of its predecessors the book successfully marries theory and practice. Each chapter introduces the basic concepts, theory, and terminology before delving into the design and implementation details. Many elements of FreeBSD are derivatives of cutting-edge academic research; the corresponding papers are always cited, making the book a valuable roadmap for the budding researcher.

The book can serve a variety of purposes. First of all it will be of interest to anyone wanting to understand the internal workings of a modern operating system. In addition, the book can be used as a textbook in an advanced undergraduate or graduate operating systems course, providing students with a chance to learn from a system on which they can lay their hands on. Finally, those working on the FreeBSD kernel, for fun or profit, can use it as a comprehensive guide to the system's internals. In fact, the BSD community—to which the book is dedicated—should consider it a blessing to have it at its disposal.