Understanding the LINUX Kernel: From I/O Ports to Process Management
Understanding the Linux Kernelis intended to be read by those  who are happy to check points off against the source code. The first thing you  learn is how Linux, released from commercial constraints, is able to take  advantage of the best ideas from other systems, implemented in wonderfully  flexible ways. A good example is the Virtual File System (VFS), which has made  it easy to add support for file systems from almost every other OS. It's  fascinating to find out how such features are implemented. Then, there are  loadable modules, I/O, scheduling, multitasking, multiprocessing, interrupts,  spin locks, semaphores, and all of the other goodies that are involved in making  a kernel work.The authors are concerned primarily with the Linux 2.2 kernel. They discuss how  Linus Torvald's decisions on kernel issues translate into architecture; for  example, how the Linux memory management uses a slab allocator on top of a buddy  system for greater efficiency. Similarly, at the cost of a little complexity,  the decision to use three-level memory paging, when two work fine on 32-bit  systems, makes it possible to port to 64-bit processors without changes. The  tradeoffs between complexity and efficiency are discussed for most kernel  features, and each chapter finishes with related new features in kernel 2.4.Despite the lucid and knowledgeable writing, you'll come up against some brain-stretching complexity. Nevertheless, this book is an important addition to the  Linux canon.--Steve Patient, Amazon.co.uk