Amazon.com Customer Reviews
N00BSp3Ak - Deciphering the Linux Kernel - Review written on July 17, 2007
Rating: 5 out of 5
3 customers found this review helpful.
To be honest, I am a complete newbie to Linux (more so, the kernel), having only recently shifted to Ubuntu (which, appropriately enough, is often called a "newbie's distribution"). Fortunately, I've had my share of background in C programming both in university and as an employee.
I've only recently delved into the "deeper" side of C - the kind that involves mapping memory and handling register sets to control hardware components. So far as I have read, this book is probably not suitable for the inexperienced, but with a little re-reading, anyone who has the least bit background in computer architecture, operating systems, and, of course, programming can catch up.
"Understanding the Linux Kernel" presents Linux in an abstracted manner, using diagrams whenever possible to illustrate how certain mechanisms - such as, let's say, memory allocation - are executed in the Linux kernel. The presentation, reviewed in line with the Linux kernel code itself, allows the average skilled programmer to obtain at least a basic understanding of Linux and the concept of operating systems in general. In the long run, this material will definitely add to (or completely revolutionize) your repertoire of programming techniques.
Required knowledge to be comfortable with the content are the C syntax, data structures, and an understanding of the binary and hexadecimal number systems.
Excellent, but not for beginners - Review written on August 02, 2006
Rating: 5 out of 5
27 customers found this review helpful.
Understanding the Linux Kernel is an excellent guide for those who have some experience using Linux, and would like to know what's going on under the hood. It's a comprehensive guide that not only describes how Linux boots and initializes itself, and how programs call functions inside the kernel, but actually goes down to the murky depths of interrupts, process switching, inter-process communication, and even memory management down to the level of the 80x86 processor instructions, registers and features (actually if you add it all up, memory management takes up most of the book -- a good thing!). Furthermore there are chapters about essentials such as file systems and device drivers.
The book specifically and explicitly focuses only on the 80x86 PC architecture so if you're interested in Linux on different platforms or if you're looking for a generic Linux kernel book, this one's not for you. Also, if you're just starting out with Linux (whether it be as user, programmer or administrator), there's a lot of information in here that you don't really need to know.
An important part of the kernel that's missing from the book is how networking is implemented. This is understandable, because it would probably require another 900+ pages (that's how thick this one is) to cover in as much detail as what the book DOES cover.
All in all, as an intermediate Linux administrator/user and a novice Linux programmer, I thought this was an excellent addition to my collection, even though I skipped some of the truely low-level parts where the authors go into Pentium registers and stuff like that. The fact that "80x86" is consistently printed as "80 Ã 86" (notice the multiplication character replacing the letter "x") was not enough of a nuisance to take away any of the 5 stars that I'm giving this one.
VERY VERY HIGHLY RECOMMENDED!! - Review written on June 08, 2006
Rating: 5 out of 5
14 customers found this review helpful, 2 did not.
Are you curious about how Linux works and why it is so efficient? If you are, then this book is for you! Authors Daniel Plerre Bovet and Marco Cesati, have done an outstanding job of writing a practical book that will help you find your way through the many thousands of lines of code.
Bovet and Cesati, begin by presenting a general picture of what is inside a Unix kernal and how Linux competes against other well-known Unix systems. Then, the authors explain how 80x86 processors include special circuits to address data in memory and how Linux exploits them. They continue by explaining how each process runs either in an unprivileged User Mode or in a privileged Kernal Mode. Then, the authors introduce interrupts and exceptions. Then, they discuss how synchronization mechanisms are needed so that all these requests can be serviced in a interleaved way by the kernal. Next, the authors discuss timing measurements. Then, they explain how Linux executes, in turn, every active process in the system so that all of them can progress toward their completions. They continue by describing the sophisticated techniques required to handle the most precious resource in the system. Next, the authors show you how the kernal copes with the requests for memory issued by greedy application programs. Then, they explain how a process running in User Mode makes requests to the kernal. They continue by describing how a process may send synchronization signals to other processes. Then, the authors introduce a general layer that supports many different filesystems. Next, they offer insights into special files and on the corresponding hardware device drivers. They also show you how to reduce disk accesses through the use of RAM. Then, they show you how user applications access normal files. Next, the authors explain the techniques used by Linux to ensure that enough memory is always available. Then, they illustrate the most frequently used Linux filesystem, namely Ext2 and its recent evolution, Ext3. They continue by introducing communication mechanisms other than signals available to User Mode processes. Finally, the authors explain how user applications are started.
This most excellent book helps you distinguish between crucial data structures and secondary ones. More importantly, this book helps you become a true Linux hacker.
A Valuable Resource - Review written on November 30, 2005
Rating: 5 out of 5
14 customers found this review helpful, 1 did not.
The third edition of this valuable resource incorporates descriptions of the latest changes in the 2.6 Linux kernel series. There is simply nothing else out there resembling this work in either depth or breadth, and as such every developer active in Linux kernel work (or trying to understand how it all fits together) needs to have this book.
While there are a few other books out there that describe the Linux kernel on a conceptual level (a very few of which have quality), there is really nothing (recently) that examines the actual code at this level of detail (each edition keeps getting fatter.)
As academics the authors are interested in presenting a complete snapshot of the Linux kernel, and unravelling how it works. This is unlike in method (but complementary to) the engineer's approach of its excellent companion book from O'Reilly, Linux Device Drivers, by Corbet, Rubini and Kroah-Hartmann. They also focus more on the x86 architecture in order to be definite. Because of its focus on being an entire picture, understanding this book doesn't require extensive pre-knowledge of the Linux kernel, only a good general grasp of principles.
I have used the earlier editions as companion textbooks for classes on the Linux kernel, and intend on using this edition in the same fashion. Don't miss out on this unique book.