史上最經典的Linux核心學習方法論
轉載
待到山花爛漫時,還是那些經典在微笑。
有關核心的書籍可以用汗牛充棟來形容,不過只有一些經典的神作經住了考驗。首先是5本久經考驗的神作(個人概括為“2+1+2”,第一個2是指2本全面講 解核心的書,中間的1指1本講解驅動開發的書,後面的2則指2本有關核心具體子系統的書,你是否想到了某某廣告裡三個人突然站起單臂齊舉高呼“1比1 比 1”的場景?)。
《Linux核心設計與實現》
簡稱LKD,從入門開始,介紹了諸如程序管理、系統呼叫、中斷和中斷處理程式、核心同步、時
間管理、記憶體管理、地址空間、除錯技術等方面,內容比較淺顯易懂,個人認為是核心新人首先必
讀的書籍。新人得有此書,足矣!
《深入理解Linux核心》
簡稱ULK,相比於LKD的內容不夠深入、覆蓋面不廣,ULK要深入全面得多。
前面這兩本,一本提綱挈領,一本全面深入。
《Linux裝置驅動程式》
簡稱LDD,驅動開發者都要人手一本了。
《深入理解Linux虛擬記憶體管理》
簡稱LVMM,是一本介紹Linux虛擬記憶體管理機制的書。如果你希望深入的研究Linux的記憶體管理
子系統,仔細的研讀這本書無疑是最好的選擇。
《深入理解LINUX網路內幕》
一本講解網路子系統實現的書,通過這本書,我們可以瞭解到Linux核心是如何實現複雜的網路功能的。(忘了宣告下,我這列出來的書名是中文的,但是並不代表我建議大家去看他們的中文版,其中有的翻譯的實在太??了,呵呵)
這5本書各有側重,正如下面的圖所展示的那樣,恰好代表了個人一直主張的核心學習方法:首先通過LKD或ULK瞭解核心的設計實現特點,對核心有個整體全域性的認識和理解,然後可分為兩個岔路,如果從事驅動開發,則鑽研LDD,如果希望對核心不是泛泛而談而是有更深入的理解,則可以選擇一個自己感興趣的子系統,仔細分析它的程式碼,不懂的地方就通過社群、郵件列表或者直接發Email給maintainer請教等途徑弄懂,切勿得過且過,這樣分析下來,對同步、中斷等等核心的很多機制也同樣會非常瞭解,俗話說的一通則百通就是這個道理。當然,如果你選擇研究的是記憶體管理或者網路,則可以有上面的兩本書可以學習,如果是其他子系統可能就沒有這麼好的運氣了。
核心社群
最近幾年,社群網站非常的熱火,不過此社群非彼社群。
Linux最大的一個優勢就是它有一個緊密團結了眾多使用者和開發者的社群,它的目標就是提供盡善盡美的核心。核心社群的中心是核心郵件列表(Linux Kernel Mailing List,LKML),我們可以在http://vger.kernel.org/vger-lists.html#linux-kernel上面看到訂閱這個郵件列表的細節。
核心郵件列表的流量很大,每天都有幾百條訊息,這裡是大牛們的戰場,小牛們的天堂,任何一個核心開發者都可以從中受益非淺。除了LKML,大多數子系統也有自己獨立的郵件列表來協調各自的開發工作,比如USB子系統的郵件列表可以在http://www.linux-usb.org/mailing.html上面訂閱。
其他網路資源
除了核心郵件列表,還有很多其他的論壇或網站值得我們經常關注。我們要知道,網路上不僅有獸獸和鳳姐,也不僅有犀利哥和韓局長。http://www.kernel.org/ 可以通過這個網站上下載核心的原始碼和補丁、跟蹤核心bug等。http://kerneltrap.org Linux和BSD核心的技術新聞。如果沒時間跟蹤LKML,那麼經常瀏覽kerneltrap是個好主意。http://lwn.net/ Linux weekly news,創建於1997年底的一個Linux新聞站點。http://zh-kernel.org/mailman/listinfo/linux-kernel 這是核心開發的中文郵件列表,裡面活躍著很多核心開發領域的華人,比如Herbert Xu,、Mingming Cao、Bryan Wu等。