Linux內核學習方法

之前也有看Linux內核,但是看的不深,最近想深入學習一下。和往常一樣,網上找了下前人學習的方法和經驗,以供參考,避免走彎路。這裏記錄一下:

幾本書

《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等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章