I have been always fascinated with operating systems. After majoring computer science and still not knowing the inside of them, I felt like a joke. So after reading the Code and this, and various other books too, I am coming closer to understanding the inner workings of the hard parts of software architectures.
I have read this book, and currently reading it second time. There is really a lot of interesting things going under the cover. I was in love with CFS and other terms which was always alien to me, like system calls, timers, threads. Not that I am completely unaware of these terms. But there was always a gap that was missing from my understanding.
I suggest this book for getting a very good understanding of OS, it is not overly detailed. So it completely okay for beginners too.
I've been somewhat of a novice kernel hacker for many years now and the few pieces of the kernel that I can say that I understand very well have been small, hard-won victories for me. There are a number of Linux kernel books out there, and most novice hackers will find, as I have, that it's very difficult to just go in "cold" and learn about a specific kernel subsystem from these books. Books like "Linux Kernel Internals", "Understanding the Linux Kernel" and "Understanding the Linux Virtual Memory Manager", are all very good references, but may be a bit overwhelming for the neophyte.
The problem is that there's just so damn much going on in the kernel. Diving too deeply too soon is likely to give the novice a sense that he/she is working without enough context to actually understand the material.
"Linux Kernel Development" acts as a nice primer for someone who wants to get an idea of how everything comes together before taking the deep dive. The book is fairly light on source code, so you're not terribly likely to come out a kernel hacker if you read this cover to cover, but in conjunction with a reference like "Understanding the Linux Kernel" and, of course, the source code, the kernel becomes much more approachable.
And, of course, while there's no substitute for source code, if you're like me, you need to know *why* something is implemented in a certain way before you're able to make heads or tails of it.
If I get lost in the source, I often find myself coming back to this book to get a sense of the "big picture". Robert Love does an excellent job in getting readers over that initial hurdle.
We read this as a book club on our dev team. It was well written and approachable for an advanced developer. Great survey of Linux Internals and reads like a book. There are even a few jokes in here! I tried reading similar books, and this one just kind of stuck.
Developing an operating system is hard and so is the material in this book. It is rather technical and doesn't really explain the concept very well. If you have prior experience in BSD or equivalent kernel development, then it will be a peace of cake. The author tends to throw some kernel specific features "A" at you explaining how it is implemented in Linux and expecting that you have the common sense to figure that every kernel has to have feature "A".
Good intro to Linux Kernel newbies who want to know how the kernel works and how to modify it.
Best used while cross-referencing with current Kernel documentation so you know what in the book is obsolete/deprecated and what APIs have been changed or introduced.
Not the best resource to understand memory management. I found so much lacking to understand the whole picture. But for the other parts, like processes, scheduling, very well covered.
I have tried reading other well know Linux Kernel literature, but Robert Love's is the most readable of all. Robert has written with a good balance of Linux Kernel fundamentals and the code walk through of Kernel where appropriate. With his long experience with Kernel development, he provides lot of context on why certain decisions were made (For example, Why scheduler's Complete Fair Queuing (CFQ) is the best scheduler in O/S world).
This book created a new level of respect for Linus Torvalds. I can't image the 1000's of decisions he has to make as the core maintainer and for every processor architecture.
If you're working in Linux for sometime and wants to know how exactly the Kernel functions internally, I'd highly recommend this book.
As with most Linux classics, this edition is getting outdated with latest additions to the kernel such as cgroups, the new BPF etc. But don't let that stop you from pick up this classic.
This is by far the best Linux Kernel books when it comes to understanding as well as implementation. He breaks down the complexity of the kernel into simple components that any computer science major can understand. He discusses each concept from an operating systems class and breaks them down to how they are implemented in the kernel. From processes, synchronization techniques, to sysfs, drivers, and even various data structures that are already implemented in the kernel; and more importantly how to use these structures.
I haven't *technically* finished the entire book, but I have read more than 60% of it and it has already proven itself to be invaluable at work and as a linux user/enthusiast. Highly recommend.
This is the second time I'm reading this book and this book is *#$*!ing awesome. Although this book is a first edition (I believe a 3rd edition is available nowadays) this book still applies (partly because Linux is still in a 2.6.x compatible version, it would probably have been a different story if this edition was published in the 2.4.x era) to today's reality AND it's just a pleasure to read this book. It only happens in very rare occasions that an author is capable to describe a technical subject at the right level (without wasting too much time at the basics) but is also capable of bringing this material in a very engaging way.
I would expect from the book like this to explain Linux concepts and philosophy, instead, it just explains some functions and structures from Linux source code. Sometimes there is more conceptual parts, but not as often as I expect them to be.
Excellent insight into the design of the Linux kernel, abounding with practical information for anyone needing to add features or use existing ones. Example code and structures are well-chosen and clearly annotated, and the accompanying text is written in a very readable, often entertaining style.
I think this would've made a good companion to Tannenbaum as textbooks for my undergrad operating systems course. Very focused on the details of implementation of central parts of linux 2.6, whereas Tannenbaum is more theoretical and not focused on implementation details. However, that specificity has caused this work to not age so well, as the 2.6 kernel is now quite outdated, and in certain cases his recommended ways of doing things are now outdated too (his enthusiasm for uevents has, I believe, not been borne out by time). I had a few other minor complaints:
* The background knowledge assumed (or not assumed) by the author was in some places rather unusual; I feel like if a potential kernel dev has never seen a linked list or binary tree before, there's already a problem. * In certain chapters (I'm thinking of the VFS here as the most serious case), long sections were spent talking about all the fields of various structs and all the functions of various operations on struct types, but there wasn't quite enough pulling it all together to give me a good picture of (say) the lifecycle of a file and all the structs associated with it. If he'd gone one layer of abstraction up, from documenting the API to linking all the parts together, that would've been really useful. As it stands, I probably need to go re-read that chapter, and then the source, to get that holistic understanding of file management. * I'm really curious what the Debugging chapter would look like now, what with kASAN and kmemleak and all these other good tools coming out.
All that said, I have found this useful for my work and expect to continue to do so.
Robert Love has written an excellent book covering the major systems of the Linux Kernel. It starts off with describing the main systems and how they are inter-related with each other. These include the virtual filesystem, the memory manager, the drivers, the process schedulers and more. All of them include the relevant snippets from the Linux Kernel.
Although the book was written around 10 years ago, it is still extremely relevant today. I had the kernel source open in another window and I was browsing through the relevant parts of the code while reading what the author had written. It gave me more insight into what the author was trying to say.
If you want a good introduction to Linux and a basic tour of the systems embedded in the source code, this is the book for it.
P.S: This will be extremely useful for those pesky Linux questions in interviews as well.
Well written and very informative book. I did not understand it entirely as I am not by any means a kernel hacker, although it gave me the opportunity to understand most of the Linux kernel characteristics. Sure this book is old enough and is written for kernel 2.6, although I am pretty sure it will give you an insight on several kernel structures.
The author does a wonderful job of explaining everything you need to know. He builds based on the previous chapters to help you understand more complex ideas in future chapters. It's well written and reads like a friend took time to explain it in a way that I understand.
not too deep and dwells on impl details like 'understanding the linux kernel' easy to soak in but not suitable for those who are not familiar with OS concepts
the author is a bit condescending there are places he does not explain it when he could have, instead he makes it ambiguous and then teaches you a lesson with oral language later.
After you read any OS book, this one may be one of the best books to know more about operating systems. Most OS books only talk about ideas and concepts, this one gives us more details but not the whole detail. Great book!
Must read for all middleware or system level developers. Preemption, context switch, process scheduling all here and well explained. I wish I read this book 10 years earlier)
Quality of chapters vary widely, and some of the content is out of date. Provides enough context to be a high-level companion while hacking the kernel.
This book is a great reference manual for Linux APIs. The chapters are laid out so that readers can ease into the complex subject of Operating System. The book serves as an important source for my Operating System class, and it helps me understand how different pieces fit together.
Linux Kernel code base is big, lack of clear structure to beginners. The book explains in details how each pieces fit together, the functions of each API calls. It is a great book to have by desk for people who do low-level system work.
Very good book for beginners to understand the Linux kernel API's and mechanisms. It has a good complete chapter devoted to Bottom Halves mechanisms like SoftIRQ, Tasklets, Work queues, etc. A must read for Linux enthusiasts. However, it lacks exercises and some text is old (2.6.xx) as compared to the rapidly changing Linux kernel versions (3.16.xx). Looking forward to buy the 4th edition.
Excellent book even if you are NOT a kernel developer, it really helped me to understand how the Linux kernel works and solved a lot of my misunderstandings (dentries, path, buffer/page cache etc.).
Process Management, scheduling, System calls, MM, VFS, Block I/O layer, Process Address Space, Page Cache and Page Writeback, Modules, Debugging, these chapters are brilliant.