The path to the quest for Linux cores-about books

Source: Internet
Author: User

Original from http://blog.chinaunix.net/uid-20608849-id-3029223.html

The author's summary of the book is in place, watching a kind of clairvoyant feeling. Back up, in case you can't find them later.

There are a lot of books and web resources to learn about the Linux kernel code, but not all books and resources can help you move forward, or you can lead you to the right and efficient path.

In some stages of learning, you may need a different book, for example, in the first stage, some basic books are available for reference. There are many books at this stage, such as the bird's Linux private dish, which introduces the basic concepts and uses of the Linux system. The Advanced Bash Scripting Programming Guide can be a powerful tool for learning the shell, and informative examples and explanations are enough to make you a shell expert. In addition, some common servers can be built on the Linux platform to increase the practice.

Since most people have studied C in college, it is still possible to keep the classic rectification reader handy as a reference manual at the second stage of the study. "Linux C Programming One-stop learning" This book introduces standard C while preferring the programming of the Linux platform: Network programming, ELF format parsing, linking principles and makefile. At this point, if you do not mention the famous "UNIX Environment Advanced Programming" and "UNIX Network Programming" two books, will be bound to be protested. Although the title contains UNIX, because Linux is a UNIX-like system, these two books also apply to the Linux environment.

Advanced Programming for the UNIX environment is known as the UNIX Programming Bible and is reprinted in a single edition. Its chief author, W.richard Stevens, is an internationally renowned UNIX and networking expert, a respected computer book writer, and a popular teacher and adviser. Mr. Stevens died on September 1, 1999. Dennis Ritchie, the original author of the UNIX operating system, evaluates the book as "a well-known masterpiece of Excellence." No more praise, because in addition to reference system functions or GLIBC library functions of the document or direct view of the source can obtain more comprehensive information than the book, there seems to be no other way. If you can get more detailed description and analysis on some websites or books than the book, then it must not be wrong to use it as a reference. Very much like the "standing on shoulders of giants"-on the home page of this book--standing on the shoulders of giants.

"UNIX Network Programming" with W.richard Stevens another masterpiece, it makes up for the "UNIX Environment Advanced Programming" in the network programming aspects of the shortcomings, and the book enjoys the same status. The latest version of the book was revised by world-renowned network experts, adding IPV6,SCTP and Key management-related content. So thankfully: Neither of these books has lost the vitality of the times because of Mr. Stevens's departure.

The achievements of outstanding people are always admired, and they are amazed. The "Details of TCP/IP" (three volumes) is also a biblical book that understands the principles of the Internet in the prevailing world. "Richard Stevens, in his writing style and works, erected a monument in the field of TCP/IP programming, making other authors Gaoshanyangzhi, yearn."

Here in a Stevens about Mr. Wang's three books, should no one will be criticized. If you don't find the names of the three books in the bibliography of some of the senior books on Linux programming or networking, it's a bit of a mystery.

In reference to the above books, and in the case of personal efforts and work experience, to arrive at the third stage is the matter. This seems to be a crucial moment: either stay where you are or go into a completely different area. Books on exploring the Linux kernel code have been quite varied over the years. If they are roughly categorized, it might look like this:

Some books may have a lot of reference code, but do not detail the principle and details of the function module, at most in the source code to give some translated comments. This type of book is suitable for reference, but it does not apply to the systematic study of kernel principles. Otherwise soon will enter the "bang, and then decline" situation, because more and more doubts will exhaust your passion, and finally in addition to the confusion, it is possible to learn the kernel is too difficult to conclude. There are some criticisms of this genre, but they are still valuable as references. In the recent period of related publications, such books have become less and fewer, and a group of high-quality domestic books began to show.

Some books are directed to specific areas of the kernel or subsystems, such as kernel drivers, network implementations, and so on. This kind of books are more targeted, more attention to detail, can be more thorough analysis of some problems, another advantage is that this book is often relatively thin, easy to accept. Of course, that means it doesn't give you effective guidance in another kernel functional area. Typical representatives of this genre are: "In-depth understanding of Linux Network Insider", "in-depth understanding of Linux virtual Memory Management", "Linux device Drivers" and "Embedded Linux Primer". More specifically, the latter two are not about the kernel principle, they are aimed at the application of the kernel, so in the choice should be differentiated, but "Essential Linux device Drivers" This book has replaced the "Linux equipment driver" trend, It complements the driver-related kernel principles section.

There is a kind of book, which is not very good for classifying it, they are very helpful in understanding the basic principles of the underlying hardware, but after all, the kernel version described is far from the current version of the 2.6 kernel, such as the 0.1 version of the analysis, if the single from these resources to learn the current kernel version seems a little "Shejinqiuyuan". Their true value lies in the analysis of the kernel's point of view, that is, they do not follow the flow of the existing works, but rather a unique way to reveal the ancient veil of Linux from another side. This book's representative has "the Linux kernel Complete anatomy" and "The Linux kernel design Art", from the latter content can see that it should be able to represent the current domestic in the Linux domain some research level.

Well, if there are not some heavyweight players in this field, it's not a good bet. "In-depth understanding of the Linux kernel" and "Linux kernel design and implementation", the two books are abbreviated to Ulk and LKD, they should be considered a heavyweight. And the way it is discussed is very much like the operating system principle, but it is the system principle that unifies Linux. It is very good to use them as teaching materials. Ulk can be said to be the Linux version of the system principle, from the writing style, the knowledge point of cut-in method is basically belong to the academic school: The first is the introduction of sketchy, then the breakdown of the main points in detail, and then quoted a small number of code. LKD is very similar to Ulk, but it is obvious that it has more reference to the code, more practical, such as it will talk about the code structure of the kernel, compilation, debugging, GLIBC Library and the code style of Linux, belong to the practice, but not completely, because it than the practice of the book more than the introduction of the theory, But the code refers to too little, if you follow it completely through the Development Board to practice the relevant functional subsystem, can be said to be able to stones very little time, most of the key code will not find clues from the book. In addition, due to its page limit, many kernel features are ignored, although the third edition of the English version has been issued, in addition to the last chapter of the content has changed substantially, the basic continuation of the previous version of the knowledge of the scope of the narrative. As a result, it gradually became a danger of being replaced by the later "Deep Linux kernel Architecture" Lka.

Book Name

Author

Publication time

Kernel version

Understanding the Linux Kernel, 3rd Edition (Ulk)

Daniel P. Bovet,

Marco Cesati

November 2005

2.6.11

Linux Kernel Development, 3rd Edition (LKD)

Robert Love

June 2010

2.6.34

Professional Linux Kernel Architecture (LKA)

Wolfgang Mauerer

January 2008

2.6.24

Classic Linux Kernel Books

Ulk is basically a book belonging to the academic school, both authors are professors in the university, they naturally consciously or unintentionally will be more focused on operating system principles and algorithms, and more or less limit the implementation of the Code of the Exposition. So it belongs to the general operating system principle works but also to Linux to achieve near the theory of a transition, because Ulk will all the space on the implementation of Linux to the operating system, so it is in the theoretical level of the discussion can be said that few challengers. Overall look at the relationship between Ulk and LKD, it is easy to find that LDK's appearance is used to make up for ulk in the practice of this piece of the missing, but I do not know why LKD on the practice of the exposition is not complete, but caused a kind of awkward fence potential.

Consider the following reasoning hypothesis: If, over the years, the kernel code is maintained in a limited circle, these people are computer hackers or kernel code enthusiasts, who are fully capable of maintaining their own responsible code parts. However, with the increase of the function, the code is increasing, and the increase of code will affect the complexity of the code in a non-linear way, which leads to a very difficult to grasp the code, the difficulty of maintenance is conceivable. Until today, kernel code maintainers are a bit lean. So the reasonable guess is that LKD initially appeared to be an introductory guide to the Novice kernel developer, so it took a few chapters to introduce the Linux code structure, compilation, debugging, and code style.

Lka was completed by the German Wolfgang Mauerer. So its original version is in German, and the English version has been in the 2008 years. The book's launch in the country has been postponed to the latter half of the 2010-year period. Although the author only read a few chapters of the book, but can not be expanded to say that it is in the field of Linux practice a relatively comprehensive exposition of the synthesizer. Read a book to grasp the depth and fineness of the knowledge point, as long as it looks at the most complex memory management mechanism of the Linux kernel, such as its description of the function of the memory area type zone_movable, in most similar books, it is difficult to find a detailed description of it. Another point to be sure is that it has very good coherence in the application of the kernel code, it is feasible to use the Development Board to follow its exposition, and the Stones is practical. Because of the depth fineness and the code even inertia of the two requirements, although this book only 19 chapters, the Chinese version of the page has reached more than 1000 pages. Summary: This book is used to study the kernel, it does not pay much attention to the use of the kernel, and most people may be to learn the kernel-driven development, this LDD3 or eldd can be, using Lka instead is the opposite. But if you want to get an insight into the Linux implementation of the operating system, then choosing it is basically right.

Although Lka has a great advantage over LDA, it is not flawless, and some places may not be translated accurately, such as the use of page and page frames in memory management, and some confusion. Other sentences may not be properly translated, such as the P23 page "has a large number of debuggers available for the latter, and for the latter it is" more appropriate than "instead". In addition, original authors may experiment and study primarily on x86, so some places may be suitable for x86 architectures, but not for all platforms. For example, in P111 "NODE_START_PFN is always 0 in the UMA system", it is true that x86 's CPU allocates the physical RAM address from 0, but arm's CPU is not the same, it usually does not start from 0. P137 "Minus 0xc0000000, you can get the corresponding physical address", but you should also add an offset to the physical address on arm. Nonetheless, his flaws.

Unknown He Chao generation, the martial arts have appeared in the world's two major schools: Jian Zong and the pope. They learned from the central plains of the essence of the door of martial arts, at the right time two young each into two cases, meet the ten-year war.

Two people worship their division, bettering and cold, not dare to slack. Time flies, fleeting, ten years of spring and autumn, a flick. Is the day, Kuaiji Mountain under, saw a person fairy wind ripples, a person sword Qi Hao. The sunrise and the war, the Stars and interest. Sword out.

30 load, the air is over. Ten more, the sunrise and the war, and 3rd no interest! What's the same? See in the air, the sword is gas, the yin and yang consistency is also.

After a "bargain", it seems to find the best combination of learning kernel principles: Theory and Implementation, Ulk and Lka, seems to be abbreviated to Ulka better, so the yin and yang consistency, about the book also said this!

The last wordy: how to read? Are you watching? Or do you break it down in chapters? Obviously the one by one break is much better, and all chapters look down on the cycle too long and difficult to grasp. In fact, it depends on the degree of difficulty, and some chapters require very careful reading. In addition to pay attention to practice and theory must be combined, relatively simple function implementation, you can first practice, that is, to follow the order of Lka to look at the code, and then self-analysis, then combined with ulk theory, from the overall grasp, more complex functional modules, you can first see Ulk understand the basic system principles, Then combine Lka to practice. In essence, 90% of the time spent on the two books and in the Development Board practice, only through which they do not fully understand the situation, then refer to other books and resources, which can guarantee the efficiency of learning.

The path to the quest for Linux cores-about books

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.