The books on the kernel can be described in voluminous, but only some of the classic gods have been tested. First, there are 5 time-tested deities (the individual is summed up as "2+1+2", and the first 2 refers to 2 books that fully explain the kernel, in the middle of the 1 refers to 1 of the book Drive Development, the following 2 refers to 2 of the kernel-specific subsystem of the book, Do you think of a certain ad three people suddenly stood up one arm to raise the shouting "1比1比1" of the scene. )。
"Linux kernel design and implementation"
Short LKD, starting from the beginning, introduced such as process management, system calls, interrupt and interrupt handlers, kernel synchronization, time management, memory management, address space, debugging technology, and so on, the content is easy to understand, the individual is considered to be the first new kernel must read books. The new man has to have this book, enough.
Deep understanding of the Linux kernel
For short Ulk, the content of the LKD is not deep enough and the coverage is not wide, Ulk is much more thorough.
In front of these two, a sketchy, a comprehensive in-depth.
"Linux Device Drivers"
For short LDD, driver developers have to hand one.
"Deep understanding of Linux virtual Memory management"
Abbreviated as LVMM, is a book about the Linux virtual memory management mechanism. If you want to delve into the Linux memory management subsystem, careful study of the book is certainly the best choice.
Deep understanding of the inside Linux network
A book explaining the implementation of the network subsystem, through this book, we can understand how the Linux kernel is to achieve complex network functions.
These 5 books have their own emphasis, as the following figure shows, it just stands for the kernel learning method that the individual has always advocated: first, through LKD or Ulk understand the design of the kernel of the characteristics of the kernel has a global understanding and understanding of the whole, and then can be divided into two fork, if engaged in driving development, then delve into LDD, If you want to the kernel is not a generalities but a more in-depth understanding, you can choose a subsystem of their own interest, carefully analyze its code, do not understand the place through the community, mailing list or direct email to maintainer advice and other ways to understand, do not muddle through, so analyzed, to sync , interrupts and so on many of the mechanisms of the kernel will also be very understanding, as the saying goes, a general rule is this truth. Of course, if you choose to study memory management or network, you can have the above two books to learn, if it is the other subsystems, may not have such good luck.
In addition, Linux has the following major subsystems
1: interface between kernel user space and kernel space interactive management system. The system call system calls the interface
2: Memory management subsystem.
3: Process Management subsystem.
4: Architecture-related systems. CPU-related code ...
5: Virtual file system.
6: Network subsystem.