Linux Kernel Development, by Robert Love, ISBN 0-672-32512-8

Reviewed by: Songmuh Jong, February 2004, updated Feb 2007
Published by: SAMS Developer Library Series
Requires: Any machine that runs Linux
MSRP: $44.99

The Kernel is the core of an operating system (OS). The OS by definition must include an application programming interface (API), and hardware interfaces in the form of device drivers. The kernel is different from the regular software that runs in the "user space." Instead, the kernel runs in its own space. With the exception of a few vendors, most developers rarely need to worry about the underlying kernel.

If you think only volunteer hackers work on the Linux kernel, then you'll be surprised that a large number of professional developers do get paid to work on it. There are many besides author Robert Love in the Internet community, but he is the only one who is also an active contributor to the linux.kernel newsgroup. Robert's book does not attempt to do much hand holding for newbies. Instead, this book is an advanced treatment of "kernel space" in Linux and is intended for experienced kernel developers who have already done some kernel development. Nevertheless, this book describes each kernel-related topic nicely and it introduces new features in Linux kernel version 2.6.


As a reviewer, I have to disagree with the advanced approach in this book. Many readers of this book will be Linux coders. Normal Linux users will not pick up a book called kernel development, while coders will not be satisfied with chapters in the form of overviews. Actual code analysis and digging into the Linux source code are the only ways to make those readers happy. This is particularly a problem in chapters that discuss kernel implementations exposed to "user space" programming. As the foreword of this book points out, it's only a stepping stone for aspiring kernel developers. It is important to get those developers' hands dirty.

Take the scheduling chapter as an example. This is described in chapter three and is available as a free download from the book's web site. The whole chapter describes the preemptive multitasking that we all have heard about. Although the chapter provides some details about the inner workings of this famous design, it doesn't discuss some obvious questions. Exactly where is the code in the Linux kernel that implements time-slicing? Is there a processor dependency for multitasking design and how about time-slicing in a multiprocessor machine? How is the "nice" value on UNIX and Linux gets processed in a multitasking environment? Is there any experience in modifying codes for multitasking that can be shared with the readers?

Similar questions can be asked in the chapter on the file system. It's nice to see several structures listed in the book, but where is the code in the Linux kernel that employs those structures? How does the file system handle non-Linux file systems? Where in the Linux kernel is the code that handles device mounting? How do some Linux vendors make the mounting process more automatic?

The topics of this book appears to be on the OS core, but its examples are detailed as if from a device driver developer standpoint. It's important for books like this to provide guidelines to advise readers about what can and what cannot be changed. An obvious chapter topic for this book is the history of Linux development in the form of code improvements over time. The author does describe, at the end of the book, the process of submitting patches. However, the book doesn't touch the various debates about whether or not a company needs to give out source code to everyone or only to buyers of the binary products. I'd also like to see some coverage of API development for Linux as well as coverage of the interfaces to some of the famous user space applications.

This book does have its merits. It's definitely an excellent textbook for an advanced course on the Linux kernel and constitutes a rich collection of topics on Linux kernel. The writing style is easy to follow, but the approach to the subject matter leaves much room for further research and code searching.



© Copyright 2000-2007 All rights reserved. legal notice
home | previous reviews | forums | about us | search | store | subscribe


Forums Search Home Previous Reviews About Us Store Subscribe