![]() |
|
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)
|
Explanation of ERCB rating scale:
|