||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: GNU/Linux, kernel programming, C
Title: The Linux Kernel Primer
Authors: Claudia Salzberg Rodriguez, Gorden Fischer and Steven Smolski
Publisher: Prentice Hall PTR
Level: Intermediate C
Verdict: Useful and interesting but could have been better
The Linux kernel is one of those places that mere mortals fear to tread. It's a scary place to explore and beyond doing an occasional compile, most developers steer clear of delving into the heart of the Linux operating system. However, there are those who are tempted by the 'here be dragons' signs and decide they want, or need, to get down into the internals of the kernel. For those intrepid individuals the 'Linux Kernel Primer' promises to be the guidebook they need as they start the journey.
Published in the same series as the excellent Linux Programming By Example by Arnold Robbins, we had high hopes for this book too. This is a topic that's crying out for the clarity that Robbins provided in his book, but unfortunately this book fails to live up to the very high standard that Robbins achieved. Bit more on this later.
The authors make a few basic assumptions about their readers, including a knowledge of programming in C and some user experience of Linux. Anyone not meeting these requirements shouldn't really be looking at a book on kernel programming in the first place. Other than that the book aims at providing the reader with the tools and skills required to understand how the kernel works and how to make a start on working on it. The book opens with a high-level overview and then moves on quickly to looking at the tools you'll need to work with. With these preliminaries out of the way the book shifts gear and looks at the core data structures and code that make up the kernel, including: processes, memory management, I/O, file systems and the scheduler. The boot process and building the kernel are also explored.
Rather than sticking to a single architecture, the authors include coverage of the kernel on Intel x86 and on the PowerPC. This helps make the point that the Linux kernel is inherently multi-platform, but also highlights those areas of the code where the software is down at the processor level. It's a good move and it is handled in a non-intrusive manner. While the writing isn't the most captivating in the world, it is generally easy to follow, though a bit on the dry side. The choice and order of the topics is also pretty good. So what is it that stops this book getting a glowing review?
Firstly, the quality of the writing really is an issue. Authors like Arnold Robbins or Marc Rochkind manage to combine clear technical expertise with good writing skills and the ability to inspire the reader. Their books have a good 'voice' and that's something that this book just doesn't have to the same extent. Secondly the book suffers from a number of errors and that doesn't inspire confidence. Also, it's not made clear which version of the kernel is being discussed. Is it 2.5 or 2.6? With a moving target that constantly evolves having a good idea of one's bearings is important. Finally, a clearer idea of the 'big picture' would have made the book more useful. The authors seem to do best when focusing on specific topics, but having an idea of how all of these systems work together is important for the reader - otherwise it can feel like you are drowning in details.
This isn't meant to completely damn the book. On the contrary there are some real strengths on offer and the book does provide some value to the more experienced reader. However, it lacks the combination of strengths that make books like Advanced Unix Programming or Linux Programming By Example outstanding.