Paperback: 440 pages
Publisher: Addison-Wesley Professional; 3 edition (July 2, 2010)
Product Dimensions: 6.9 x 1.2 x 8.7 inches
Shipping Weight: 1.8 pounds (View shipping rates and policies)
Average Customer Review: 4.6 out of 5 stars See all reviews (102 customer reviews)
Best Sellers Rank: #73,823 in Books (See Top 100 in Books) #1 in Books > Computers & Technology > Operating Systems > Linux > Kernel & Peripherals #22 in Books > Computers & Technology > Operating Systems > Linux > Programming #29 in Books > Computers & Technology > Programming > Languages & Tools > C & C++ > C
I have been doing Linux kernel/system level development on and off since 1999. This is the book that I think should be owned by any Linux newbie who wants starting their kernel hacking. Even if people do not directly do Linux kernel development, it is a good book complementary to any serious operating systems course in college - it helps gain a better idea of how and why.The book is quite easy to follow and read and does not try to overwhelm readers with tons of information (consequently it does not address many details in Linux kernel). I consider this is a major strength of the book which parts away from other books (comparing to "Understanding the Linux Kernel", which has quite some details on each subsystem, but if you take the book as your guide to kernel programming, you feel you are overwhelmed by the information and often clueless on where to start to write some simple stuffs. This does not mean I think the latter is a bad one - it is a very good one indeed). Considering the fact that Linux kernel evolves so fast, it may make sense to focus on the core parts and once you understand them, it may become easy for you to track and understand changes later. Even as a professional programmer doing kernel development, occasionally referencing a well-written book like this is very helpful.I am a bit reluctant to rate it 5 stars though due to many typos observed, which I guess is the result of rush to publishing (and the poor job of proofreading). Fortuanately, most can be understood by reading the contexts around them. But a few are really misleading or totally wrong. For example, on page 169, there is a sample code to show how page allocation/free is done in kernel. It uses __get_free_pages() to allocate pages, but uses free_pages() to free these pages. As the author has just said a page ago, __free_pages() should be used to free (struct page*) pages, otherwise corruption will ensure (free_pages is used to free pages with logic address as parameter).
I was shopping for a good overview reference book of the Linux kernel, I did not want too much depth into each component, what I wanted was a "brief" overview of all the different components. If you're looking for depth into each module, then this is not the book for you. If you're interested in Linux and want a good overview book that you can finish quickly and have a working knowledge of the different components and how they tie in together then this is a great piece. I think "Linux Device Drivers" by Corbet is a better reference if your interest is strictly device driver and "Understanding Linux Networking Internals" by Benvenuti is better if you want to know more about the IP stack. Overall Robert Love goes through kernel development at a great level for an overview with just enough depth and enough examples. I use the book not every day but I often have it on my desk for reference.
I was a Linux kernel newbie writing a device driver and started reading "Linux Device Drivers" by Rubini. On hindsight, this was a bad idea. Rubini's book goes deep into driver code quickly with good details but it only sparingly touches the higher level kernel overview or essential concepts. These missing pieces are covered very well in Love's book and I should have understood them before reading Rubini's book; important basic concepts covered in good detail include: - user thread vs kernel thread. - kernel-space process context vs kernel-space interrupt context. - tasklet as a non-concurrent form of softirq and is not related in any way to tasks. - bottom-half methods comprising softirq, tasklet and work queue; and that BH and task queue are obsolete and deprecated. - semaphore sleeping vs spinlock spinning (busy-wait). - spinlock adversely affecting scheduling latency while semaphore does not.Love's book shows ambly that he is an expert in Linux kernel matters and speaks with authority. At the same time he has the ability of a good teacher to explain obscure and critical kernel concepts clearly. I heartily recommend this as the first book one should read about the Linux kernel, well before books such as Bovet's "Understanding the Linux Kernel" or Rubini's device driver book.This 2nd edition introduces more materials and explanation to cover the updated 2.6 kernel. As far as I can see, it is a worthy new edition to own.
This book is for a reader who is an accomplished C programmer and for someone who wants to learn how to do Linux Kernel Development. The author has been contributing to Linux for more than 15 years and he was a member of the team that developed Android mobile platform's kernel. Although the author explains some of the topics in detail (for example Process Scheduling), he glosses over some of the other topics (for example Process Management). In order to understand some of the theoretical concepts presented in the book, it is better to have a background of Operating Systems. Therefore, it is better to study this book along with a theoretical book on Operating Systems (Silberschatz, Galvin). Having said that, this book can serve as a useful introduction to someone who wants to know the design and implementation of the Linux kernel.In the first few chapters, the author provides instructions for obtaining the Kernel source code and compiling it. In the rest of the chapters, the author gives details of each of the parts of the Linux kernel. In the chapter on Kernel Data Structures (Chapter 6), the author gives a detailed explanation of the most important data structures that are used in Linux (linked lists, queues, maps and red-black trees). The chapter on Debugging (Chapter 18) is full of useful tips for debugging the Linux Kernel. What I like most about the book is that the author is very practical with his approach and concludes his book by saying that "the only way to start (learning the Linux Kernel) is by reading and writing code".
LINUX: Linux Command Line, Cover all essential Linux commands. A complete introduction to Linux Operating System, Linux Kernel, For Beginners, Learn Linux in easy steps, Fast! A Beginner's Guide Linux: Linux Guide for Beginners: Command Line, System and Operation (Linux Guide, Linux System, Beginners Operation Guide, Learn Linux Step-by-Step) Linux Kernel Development (3rd Edition) Linux: Linux Mastery. The Ultimate Linux Operating System and Command Line Mastery (Operating System, Linux) uC/OS-III, The Real-Time Kernel, or a High Performance, Scalable, ROMable, Preemptive, Multitasking Kernel for Microprocessors, Microcontrollers & DSPs (Board NOT Included) Kernel of the Kernel (Suny Series in Islam) Linux Kernel Development (2nd Edition) Linux Kernel Programming (3rd Edition) Linux Kernel Internals (2nd Edition) Learning Linux Kernel - Process management and scheduling (Japanese Edition) Understanding the Linux Kernel, Third Edition Professional Linux Kernel Architecture Understanding the LINUX Kernel: From I/O Ports to Process Management The Linux Kernel Book Linux System Programming: Talking Directly to the Kernel and C Library Linux PCI Device Driver - A Template (Linux Driver Development) Linux Char Device Driver - A Template (Linux Driver Development) Android: App Development & Programming Guide: Learn In A Day! (Android, Rails, Ruby Programming, App Development, Android App Development, Ruby Programming) Android: Programming & App Development For Beginners (Android, Rails, Ruby Programming, App Development, Android App Development) Personal Development: 5 Book Collection (Self Help, Personal Development, Self Development)