These days, after reviewing the Linux kernel, I thought about the Linux kernel, but I heard many friends say that they have never seen the Linux kernel. I think it is not easy. Then I collected information on the Internet, let's take a look at all the basics required, which are listed below.
Preparations for learning Linux kernel:
1. Basic knowledge about operating system theory. You do not need to read and understand the major issues such as operating system concepts and modern operating systems, but always know the differences between time-shared and real-time, what is a process, what is a file system, the relationship between CPU and system bus, and memory (very rough), and so on.
2. C language. You do not need to be very proficient in C language. As long as you are proficient in Writing C Programs, you can understand the C implementation of data structures such as linked lists and scattered lists, and you can use the GCC compiler. Of course, if you are already proficient in the C language, it is obviously a huge advantage.
3. Knowledge about CPU. This part can be supplemented in the kernel learning process. However, you need to read a detailed book, for example, situation analysis, which will be mentioned later. Are you familiar with Intel 80386 CPU? Try to answer these questions to judge: 1) tell the difference between 80386 of the broken door and trap door; 2) tell the difference between the protection mode and the real mode; 3) on a multi-processor machine, why do we need special measures to protect the read-write-back memory. And so on. The book on linux kernels based on other CPUs seems to have only one "ia64linux kernel: design and implementation"-Or intel at present. The rest are about ia32-based.
4. In terms of knowledge, I would like to add another article: Compile the kernel.
In view of the above points, I have not learned well and have a solid foundation. I plan to master the C language first, and then study the operating system with my postgraduate study. have a deep understanding of the concepts, mechanisms, and frameworks, and wait until the end of the postgraduate entrance exam to start watching the Linux kernel. At the beginning, I first learned about Zhao Ke's "Linux Design and Implementation". Then make the plan after having the foundation.
This article is original in zeroclock, but it can be reproduced, because we are brothers.