Preface to kernel: Linux kernel source code introduction (China-pub)

Source: Internet
Author: User

I think the learning method mentioned by the author is worth looking.

The following is what I wrote:

Almost every beginner of the operating system kernel will feel difficult to get started. This is because the kernel involves a wide range of knowledge and requires learners to master a large amount of knowledge, including program compilation, links, loading details, operating system theory, and computer system architecture, data structures and algorithms, profound C/assembly programming skills. Such a relatively high threshold often blocks a large number of beginners. Is it necessary to learn the kernel only after learning the above knowledge? In fact, most learners encounter the same problem when learning the above knowledge, because knowledge is a net structure. Therefore, it is important not to learn the knowledge first, but to learn how to learn, to raise questions in the knowledge system that you have mastered, to learn to think, and to persistently solve your questions. Since I have learned the C/C ++ language, since the C/C ++ sample programs are all under the command line, I often want to write a Windows program, after learning MFC, I cannot figure out where messages such as wm_char and wm_lbuttondown come from. With many questions in MFC, I started to learn about Windows SDK program development, in this learning process, I felt that I had a deeper understanding of MFC, but at the same time I had a new problem. So I went on to learn about Windows DDK and then began to learn about the operating system kernel. In this process, I have encountered a lot of questions, but I need to add relevant knowledge when necessary. Therefore, beginners need to understand that learning does not have to wait until everything is ready. What is needed is to maintain curiosity, develop the habit of thinking, and establish the determination to solve the problem. Many readers are eager to find good entry-level teaching materials. Some people often ask what books can improve rapidly. But when they read the books recommended by others, they have not achieved the same result. Why? I believe that reading has the following realm:
1. In the face of a knowledge point mentioned in the book, you cannot join your own knowledge to raise questions. Instead, you only need to memorize what is on the book. Even if you have learned the highest level of knowledge, you can simply write down the knowledge points in books to form an isolated knowledge node in your mind ..
2. in the face of a knowledge point mentioned in a book, you can join your own knowledge to raise questions. However, most of the time you do not have the spirit of exploration, it is limited to other books or asking others to exclude your questions. The knowledge in my mind forms a simple mesh structure, but because of the long-term lack of exploration ability, my ability to analyze and solve problems based on my own knowledge is very limited.
3. in the face of a knowledge point mentioned in the book, you can join your own knowledge to raise questions, and add necessary knowledge based on the question to continuously analyze the relationship between the knowledge points, put forward various assumptions and verify the exclusion methods and verify them in person. If the problem cannot be solved, never stop. If the knowledge points in the mind form a complex mesh structure after long-term training, the comprehensive analysis capability will be enhanced.
4. Based on your knowledge, ask new questions and stick to the answer. This kind of realm requires profound knowledge as the basis.
Therefore, do not be intimidated if you haven't learned the kernel. To say so many things that seem unrelated to the kernel, you must first eliminate the reader's psychological concerns and establish a correct attitude, what is important is not learning, but learning. Determine which learning realm you are in, and then raise yourself to a higher level by learning a specific knowledge. In real life, it is not difficult to find that the ability to learn everything is fast and good. The root cause is that they are in a higher learning realm and form a virtuous circle!
Many people are eager to learn the kernel of the operating system, but the kernel involves a wide range of knowledge. Therefore, many people often complain about the lack of good books and teaching materials. In fact, different readers have different gains for the same book, depending on their attitudes and learning methods. The author suggests that when reading a book, you must take the questions in your own mind as the main line, instead of memorizing the knowledge in books without any questions.
How to use this book ..
The author believes that the learning of any knowledge is self-centered first, and any books and materials are used to answer your questions. Therefore, when you read a book, first, you must clarify what your questions are? This can be a very general question, for example: "What is the Linux kernel ?"; It can also be a very detailed problem, for example: "press a on the keyboard to display the internal principle of character a on the screen ". When you have questions that come from the depth of your heart and think independently, reading is a pleasure and a pleasure for you. From the heart of the question, through continuous comprehensive analysis, careful reasoning, persistent query and seeking, then open the fog to see the joy of heaven and day only after the experience. Although this book is a very thick book, it is not a fear. Don't give yourself a determination to develop a reading plan for several months. Learning is a process of active exploration rather than passive acceptance. In this process, there are too many things that no one can plan. For example, when I first learned the kernel, I saw a lot of rumors.LinuxKernel. After reading "Linux kernel Scenario Analysis", you can become a "master. As a result, I often hold thick books and wonder when I can finish reading them. However, sometimes I cannot go a few pages over the past few days, so I feel that I will be lost in my life, however, I was unwilling to move forward, so I felt the harder it was. Everyone understands the principle of "speed is not up to speed", but everyone will make this mistake before understanding it. After a long period of twists and turns, I got rid of the limitations of the book and focused entirely on my own questions, as a result, I have read a lot of documents on computer architecture, and I have never thought about reading these books, at this time, I only picked up the interrupt-related reading, and then read the kernel books. I found that I understood the principle, but I was confused when I understood the code. So I added the GCC embedded assembly, the knowledge of compiling C code to assembly code, and repeated tests. This process is very slow, but at the end of the accumulation, I found that I read very fast, or even can not read, because many places, as long as you read the previous, I learned what I want to talk about later.
So far, I still have not completed the "grand" goal I set to become a "master", because I have not fully read the "deep understanding"LinuxKernel, Linux kernel scenario analysis, Linux kernel full analysis, and so on. However, I have benefited from these works.
Now, you should know how to use this book? That is, do not stick to any dogma. Although this book has been compiled by the author from the beginning to the present, as well as the relevant notes and materials, a large number of questions for beginners can be found in this book. But everyone is unique. I hope any reader can use this book and other relevant materials to find your own answers. Ask more why, more assumptions, more thoughts, more reasoning, more experiments, and more persistence. Finally, you will feel that any "secret" in the original legend is "fake name", because after reading it, you may not be a "master ", the "master" does not need to be read. The decisive factor for becoming a "master" depends on your learning method and attitude. A good "secret" is only a catalyst.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.