18 of 18 people found the following review helpful
on February 7, 2006
About one year ago I was browsing the univerity book store, not really knowing what I was looking for. Being all fed up with math thesis stuff I was certain that I wanted somthing practical and funny to read. By chance I saw a book called "Linux Kernel Development". At first I did not give it much attention because normaly writing kernel code does not make me relax at all. When I was leaving the book store, curiosity took over and I decided to find out who the author was - expecting to see some no name punk I was really surprised that it was Robert Love, known of much programming fame in the kernel community. Naturaly I bought the book, read it in 2 days and I loved it. Here for the first time was a book that precendet the art of kernel programming in an easy, understandebel and about all funny way. This was 2004, last week I discovered that a second edtion was out. I quickly bought it on Amazon and while I loved the first edition I must admit that this one is even better.
Robert takes you gently but thoroughly through most of the facets of kernel programming, including system call registration, coding guidelines, synchronization and the VM layer. This is a great book which while being short and precise still manages to get you hacking on the kernel without suffering two much headache. The only thing I feel is missing is a chapter or two devoted to debugging the kernel - but in that regard one could also pickup "Linux(R) Debugging and Performance Tuning " by Steve Best which is a complete book on the fine art of bug/bottleneck hunting. Anyway this is one of the best written tech book I have ever had the joy of reading and it fully deserves to be put next to computer science classics such as "Introduction to Algorithms" and "The C Programming Language".
13 of 13 people found the following review helpful
on August 19, 2005
Everybody should introduce their background before reviewing, since that helps a lot when other people read your opinion. In my case I'm an EE, and never took a course in OS or have a lot of experience in OS design or the like. My work has been in low level design of embedded systems, including HW and SW. We'll be porting the Linux Kernel to our own HW architecture, and bought this book as a reference to understand what to touch.
Now on to the book: I think it's great. I haven't got to the point where we touched actual code though. I've read the book and got a great idea of how Linux handles all the tasks an OS should. It also helped me understand a lot about OS design in general, without being a beginner's book (you know, those that have just the basic stuff that you can't do anything with).
I believe the idea behind the book is to teach you the philosophy behind the OS, with samples of the algorithms and C cde, and then point you in the right direction (where in the source to go for each thing). After that, you need to dig into the source code yourself.
I'd really recommend this book for someone with my background or even for experienced SW types or students who need to get started with the Linux Kernel and want to understand how it is designed. The great thing is that it covers the latest release (2.6) and also talks about how things were done in previous releases.
If you'll be implementing a Linux System this book should be complemented with some driver design reference for Linux, since this book only covers the Kernel (and entry points for the drivers, but not driver design).
12 of 12 people found the following review helpful
on June 29, 2005
I just got my order (the 2nd edition) yesterday. This is my second book about Linux Kernel, the other one is "Understanding The Linux Kernel" by Daniel P. Bovet, Marco Cesati. I was having hard time to understand reading the Bovet's book, but when I read this book it was really fun. I even couldn't stop reading it when the time past midnight (wow, it is like reading a thrilling novel book :-).
I love the way the author tries to explain in a "human plaintext" language (w/ some humors), and gradually he introduces some jargons w/ clear explanations. The book is intended for intermediate to advanced programmers who now C and have some experience in building their kernel from source code. Although, it still guides readers how to compile, to patch and so on (chapter 2).
Another good thing is that, unlike many other Linux Kernel books, the author emphasizes concepts of the Linux Internals. So he tries to minimize a copy-paste of the source code on the book (you can just open the source code and see it, no need to have a book for that). This is what I have been looking for. Besides, when there is a new patch/version, the book will be still relevant long into the future.
Here is the list of the chapters:
1. Intro to the Linux Kernel
2. Getting Started w/ the Kernel
3. Process Management
4. Process Scheduling
5. System Calls
6. Interrupts and Interrupt Handlers
7. Bottom Halves and Deferring Work
8. Kernel Synchronization Intro
9. Kernel Synchronization Methods
10. Timers and Time Management
11. Memory Management
12. The Virtual Filesystem
13. The Block I/O Layer
14. The Process Address Space
15. The Page Cache and Page Writeback
17. kobjects and sysfs
20. Patches, Hacking and the Community
Appendix (Linked Lists, Kernel Random Number Generator, Algorithmic Complexity)
My suggestion is first read this book thoroughly, then may continue with "UNderstanding The Kernel" and also "Linux Device Drivers", 3rd Edition by Jonathan Corbet. If you want to know more about TCP/IP stack in the kernel, "The Linux TCP/IP stack" by Herbert may be good too (I bought this book too, but I have not read it yet, but from what I saw on the table of content seems it is interesting). The last but not the least, another book about wi-fi "Linux unwired" may also compliment your personal library of Linux.
8 of 8 people found the following review helpful
on January 29, 2006
This book will take you from being a 'C' application developer to being ready to modify your first Linux kernel code. It covers the major systems of the kernel and provides enough detail to point you in the right direction should you need to actually make changes. This is the book to start with in your journey to modifying the kernel.
It's important to realize what this book is *NOT*. It will not get you started writing kernel device drivers. It will not cover every data structure in the kernel. Rather, it hits on the major points with great technical accurace and readability.
It's also important ou meet a few prequisites before buying this book, otherwise you will not get the most from it. You should have:
* A good working knowledge of the 'C' programming language
* A good basic background of operating system concepts
* A good working knowledge of basic data structures
For example, if you aren't adept with 'C' pointers, you will struggle to read the code examples. For example, if you don't already know the difference between a physical address and a logical address, you will have a higher hill to climb to get through the chapter on process memory. For example, if you don't know what a queue, stack, and linked-list are, you will struggle through some of the algorithm descriptions.
This book is first rate and the material is described with accuracy and readability. The right audience will find the material here indispensible.
8 of 8 people found the following review helpful
[A review of the 2ND EDITION 2005.]
You should find this to be a graceful description of what it means to change the linux kernel. Love goes into enough detail to give practical guidance with code mods. But he also writes clearly of the reasons behind the various kernel operations. The choice of using the current 2.6 kernel means this book may be more relevant than earlier linux kernel texts.
A point of some amusement is the table of supported linux architectures. Surely some of these will be exiting the stage soon. Who is going to keep developing linux for the DEC Alpha or the 32 bit MIPS?
Don't be put off by the Novell logo on the cover. Love works for them and they approved the book. But in going through it, there seems to be no pro-Novell slant. It may also be that Novell is trying to burnish its open source credibility with books like this.
24 of 30 people found the following review helpful
on September 17, 2005
The book is easily readable. It gives a higher-level overview of the architecture of the linux kernel. Most important subsystems are covered, but in-depth descriptions are sorely missing. It is easily readable and generally useful as a guide through more stable parts of the kernel.
One star less because some subsystems are not mentioned at all, like networking, SCSI, ATA, USB or FireWire. For these parts the would-be kernel hacker is doomed to having they way around just the kernel source - no help from this book.
Another star less because of technically incorrect material written in the portability chapter. The problem is that the author is talking about the "C language" and his statements are simply incorrect in that context (although they may be valid for the gcc compiler restricted to the architectures supported by linux).
One example is saying that the unsigned long type is the natural size of the machine word (i.e. 32 bits on 32-bit machines and 64 bits on 64-bit ones). This is simply not correct in the context of the C language as such where unsigned long has to be at least 32 bits, but it doesn't say that on 64-bit machines must be 64 bits.
There are many int-to-pointer and vice-versa conversions in the kernel for which the above comment is very relevant.
Another example is saying that the char type has always 8 bits in C. This is also not true - it has CHAR_BIT bits, defined by the implementation. CHAR_BIT can be arbitrary as far as the C standard is concerned.
5 of 5 people found the following review helpful
on October 12, 2006
This book presents the kernel basics in a lucid language with the necessary details, that both newbies and experienced kernel programmers can grasp. My favorite section is the one about the new 2.6 scheduler. A chapter on the open source community is also included towards the end.
Once you have read this book and understood the kernel a bit, it would be helpful in dwelling into subsystem specifics that this book might not have gone into. I suggest reading the Linux Device Drivers by Corebet, Rubini, Kroah-Hartman for that purpose. These books, together with articles on the web, should certainly help anyone interested.
4 of 4 people found the following review helpful
on February 10, 2006
The book "Linux Kernel Development",
explains clearly the inner workings of the
current 2.6 Linux kernel.
The presentation is at an academic - algorithmic
level of detail,
the authors describe the main important data structures,
and the more significant chunks of code,
but they avoid a detailed description of the code.
The book is useful to any serious
Linux kernel developer, mainly as a first book.
The clear exposition of the Linux kernel
workings can speed significantly the
reader's learning curve.
The level of the book is advanced and the reader
should have a good C programming and
Operating Systems Design background.
However, also the book fits very well at the context
of an "Operating Systems Design" academic course
and the students can learn a lot from the
technologically advanced Linux 2.6 kernel implementation.
They can modify/recompile and install their own versions
of one of the most complex and elegant systems ever built,
as the Linux 2.6 kernel!
3 of 3 people found the following review helpful
on April 15, 2005
It is a compact book and easy to read. Although it does not go deep into many parts of the kernel, it kind of makes you feel good that you can grasp the fundamentals in a short time. The chapters are kept rather short, such that you can go through a few in several hours. Contrasting it with The Design and Impl. of FreeBSD, the FreeBSD book provides more depth into how the general Unix concepts (e.g. explaining how sessions work in FreeBSD etc.) are implemented in the kernel. In summary, I would definitely finish reading this book, get the big picture, and then try to specialise on a particular kernel subsystem.
3 of 3 people found the following review helpful
on June 13, 2005
This is a great book. I liked the fact that it covers the latest 2.6.x kernel and explains in detail both the theoretical concepts as well as the technical aspects of the kernel architecture and its implementation.
It concentrates more on the core kernel subsystems like: Process Scheduling, Memory Management , Interrupts Handlers, Synchronization, Timers, Virtual File Systems and Modules. But nothing much about the Network Subsystem. There are other books which explain in details the Linux Networking Architecture and the Linux TCP/IP implementation.