There are several stages. Start viewing ulk,
The best thing about ulk is that he advocated a particularly good learning method. When you want to learn something, first read the header file and do not look at the implementation code before figuring out each data element in each data structure.
After reading the header file, it means that the relationship between the organizational relationship and other places is clear. At this time, you can see the implementation code and you will find that what you have done is exactly what you think.
Follow ulk to understand these basic concepts. At least when you finish reading a chapter, you need to know what it is next time you see this concept elsewhere. In comparison, the other books are lacking in this respect.
You can view the code again. Many people may be able to say that one or two books have gone viral. This is not correct. You need to view the Code directly.
With code, everything is ready. All you need to do is to understand the code. Of course, you may encounter something you don't understand in the middle. At this time, you can check the books. In linux, books can only be tool books,
You can check it out when you need it. I don't want c ++ or java. I have my own ideas in it. In other words, it is relatively simple. We can read it directly from books.
The development and design concepts of linux can only be obtained from the code. Because it is very difficult, few books can be understood from the whole.
In fact, in addition to linus, several core developers in the linux operating system can grasp that others are only familiar with some aspects.
I have read about 2/3 of the core chapters of these ulk books for three to four times. Browsing Linux Kernel Analysis quickly. What do I remember when I used scenario analysis?
I can't remember it because I haven't read it carefully. The Design and Implementation of Linux kernel are similar to those of ulk.
There is also a deep understanding of virtual memory management. Because vm is the most difficult, I bought a book separately.
The purpose of viewing the code is to first understand the implementation of a certain aspect. Next, the most important thing is to link the content of each place. You can check whether there is no book to understand.
So we need to read more code and understand it by ourselves. Learning linux is a step-by-step process. Never rush. Two years of experience, three years of experience is just an entry .... Here we will talk about:
Don't think about writing this code two years ago.
When you understand all the basic concepts, you also know the common implementations and things. You can use some projects to learn more about things, such as how to use cache, lock, try to understand
Recursion. These are the attempts to understand the design.
All in all, it is a hard process to learn linux. It is easy to fail without strong desire and confidence. There are not many people in China who really understand the Linux kernel. Most so-called senior engineers can only develop and write small
The device driver can only be transplanted further. This is why the Chinese people have not contributed in the linux World. Unlike c ++,
Java, after two or three years of learning, you can follow the team to do things. What you need to do is to familiarize yourself with the language.
The kernel is completely different. You need to have a comprehensive and in-depth understanding of the entire computer system. Consider the courses starting from about sophomore year:
The data structure is the most critical course in two universities and also the basis for learning kernel. The tree map in discrete mathematics is the concept of fs and device.
Knowledge required by driver. Compilation and interfaces can be used everywhere. The operating system must be closely related. Compilation principles can be used in debugging. Design Concept of osi layered model for computer networks
It is everywhere in fs. Therefore, basic computer courses must be familiar with understanding.
I don't know how big you are now, but if you want to actually do the kernel, you should learn more about this basic knowledge. They will benefit you for life.
If you are not sure about how to do this, but want to learn about linux, you can go to apue and write all the knowledge in it.
There is really no need to learn kernel. one year and two years are just getting started. I am working with motorola in the United States.
More than 90% of users have over 10 Linux kernel working experiences. My most direct feeling from them is that they have always been thinking about specific implementations in a large kernel background.
It is totally different from the mindset we try to guess from the bottom up. This is the real linux development. This takes time.
--