Electronic Review of Computer Books

[ ERCB Home | New | Feature | Brief | DDJ | Letters | Links ]

[an error occurred while processing this directive]

Vital Statistics

Title Understanding the Linux Kernel: From I/O Ports to Process Management
Authors Daniel P. Bovet and Marco Cesati
Publisher O'Reilly & Associates
http://www.ora.com/
Copyright 2000
ISBN 0596000022
Pages 684
Price $39.95


LinTel

When it comes down to it, Understanding the Linux Kernel, by Daniel Bovet and Marco Cesati, ought to be entitled "Understanding the Linux Kernel on Intel Processors" because it was adapted from course notes on Intel-based Linux computers. As far as non-Intel content goes it hasn't matured much beyond that. Linux has been ported to more than just the Intel chipset and some day, authors of Linux books may come to realize this fact. Perhaps this is a function of the fact that the target audience is mostly users converting from Microsoft Windows on Intel. The bibliography only lists Intel-specific books. Much of the focus is solely on Intel features. The second chapter on memory management barely alludes to the fact that Memory Management Units (MMUs) exist on architectures other than Intel and the rest of the chapter discusses 80x86 architecture, MS-DOS, Windows and a mere half a page on three-level paging on Compaq Alpha and SUN Ultra SPARC. Appendix A discusses the boot process from purely an Intel viewpoint. LILO, the LInux LOader, is presented but MILO (For Compaq Alphas with the Advanced RISC Console (ARC) (Windows NT) firmware or SRM for dual booting with Tru64 and OpenVMS) or SILO (For loading Linux on SPARC machines) is not covered at all. It is possible that authors have played Age of Empires a little too often, or are generally just very hooked on history, because the boot stages referred to as the Ancient age, the Middle age and the Renaissance. The best contrast is a stable mate of this book, another O'Reilly publication and strangely enough also by an Italian author, Writing Linux Device Drivers. The coverage of Linux on non-Intel systems in that book is outstanding.

This book also contains numerous slightly imprecise or inaccurate statements, mainly stemming from its purely Intel focus. For example, the "arm" port is not only for Acorn Personal Computers but also for other devices such as the Compaq "iPaq" handheld; the MIPS port is for more than just the SGI workstations (most notably, MIPS-based DECStations from Digital, now Compaq); the PowerPC port includes Apple Macintosh, but this significant platform is not mentioned. These are, however, common misconceptions and omissions.

The first chapter acknowledges Maurice Bach's influence but ignores Andrew Tenenbaum's (the originator of Minix whom Linus Torvalds antagonized about additions to Minix). Although Minix was the first Linux file system, it gets only a one-line mention in chapter 17, The ext2 file system. There is also a slightly misleading diagram at the end of the first chapter. The Virtual File System is drawn as a block above both character and block device types. As character devices by their very nature can not be mounted, (by definition, if they could be mounted they would be block devices), this does not make sense, but does convey the process/system call/device driver concept adequately. The sections on anticipating Linux 2.4 date the book around the turn of the millennium. It lacks coverage of networking and file systems other than ext2. It has light coverage of device drivers. The interested reader is referred to the Linux device driver book from the same publisher.

This book is not very critical of Linux; it is very enthusiastically biased and contains a lot of very subjective statements. For example, it repeats the often-cited belief that "Linux has a high standard for source code quality." Compared to what? Although the extensive peer review is meant to improve the quality of the project, the statement and others like it do not seem objective.

On the positive side, Understanding the Linux Kernel is up to date on the state of the art of the 2.2 kernels, an example of which is the coverage of the frame buffer topic at the end of chapter 1. The rest of the introductory chapter outlines general operating system concepts. Throughout, there is good coverage of these concepts, such as the theoretical advantages of micro kernels, memory addressing (Chapter 2), how user processes are implemented (Chapter 3), interrupts and exceptions (Chapter 4), expanded into a discussion about timing (Chapter 5), memory management (Chapter 6), process address space (Chapter 7), system calls (Chapter 8), Signals (Chapter 9), process scheduling (Chapter 10), kernel synchronization (Chapter 11), the Virtual File System switch (VFS) (Chapter 12), device I/O (Chapter 13), disk caches (Chapter 14), regular file access (Chapter 15), swapping (Chapter 16), process communication (Chapter 18), and program execution (Chapter 19). Appendix B is a short chapter on modules. Appendix C describes each directory in the kernel sources. This is only slightly useful, as they should be reasonably self-evident.

The quality and depth of coverage of kernel internals is as good or better than the quality of "The magic garden explained" or Pate's "Unix internals" but is generally more readable and easier to relate to. (Who has access to the source code of UnixWare or SCO Unix?) In comparison with 4.x BSD books, it is on a par in terms of readability and depth of coverage. It goes deeper into the topic than "Inside Linux" and is more recent and broader than "Linux Kernel Internals." It is less academic, more engineering- or application-orientated than "Unix internals: the new frontier".

The index and source code index are extensive and easy to find with gray page edges, evidence of O'Reilly's production values. As usual it has a consistently clean, crisp, O'Reilly "Nutshell" series layout. Diagrams are simple, well laid out and easy to understand. The balance of sections of code to text is reasonable. Naturally the only example assembler that is provided is targeted for the Intel processors.

In spite of its failings, this is one of the better (and thicker) books on the Linux Kernel.

-- Regan Russell (regan_russell@hotmail.com)


Quick Rating

Readability Star Star Star
Originality Star Star
Organization Star Star Star
Accuracy Star Star
Consistency Star Star Star
Depth Star Star Star
Timeliness Star Star Star Star
Editing Star Star
Design Star Star Star
Overall Value Star Star

Explanation of ERCB rating scale:
No stars = unacceptable
1 Star = marginal
2 Stars = average
3 Stars = above average
4 Stars = exceptional


Copyright © 2001 Electronic Review of Computer Books
Created 7/4/2001 / Last modified 7/4/2001 / webmaster@ercb.com