Linux內核學習四庫全書
轉自 : http://blog.csdn.net/21aspnet/article/details/6585602
關於內核學習我建議不要上來就讀內核而是先了解內核的構成和特性,然後通過思考發現疑問這時再去讀內核源碼。即先了解概貌在讀局部細節。而且內核分成好多部分,不要只是按照順序去讀,應該針對某一部分比如內存管理或進程管理橫向讀幾本書,這樣可以理解很全面。
Linux Kernel 四庫全書
1. Linux內核設計與實現 Edition 2
2. Linux設備驅動 Edition 3
3. Linux內核源代碼情景分析
4. 深入理解Linux內核(第三版)
1.《Linux內核設計與實現》
本書重在原理。適合入門的最佳圖書。作者是爲2.6內核加入了搶佔的人,對調度部分非常精通,而調度是整個系統的核心,因此本書是很權威的。
2.《深入理解Linux內核》
此書比上一本多了些細節。是Linux內核黑客在推薦圖書時的首選。寫的比較簡單易懂,適合剛剛接觸LINUX內核的。
此書圖表很多,形象地給出了關鍵數據結構的定義,與《Linux內核源代碼情景分析》相比,本書內容緊湊,不會一個問題講解動輒上百頁,有提綱挈領的功用,但是深度上要遜於《Linux內核源代碼情景分析》。
3.《LINUX設備驅動程序(第3版)》
這書強調動手實踐!但它是講解“設備驅動”的,不是最核心的東西,而且有些東西沒硬件的話無法實踐,可能更適合驅動開發的程序員吧
其中關於同步與互斥、內存分配的部分,感覺很不錯。
4.《Linux內核源代碼情景分析》
書很好,很經典,是浙大教授毛德操寫的,可惜成書於2001年之後一直沒有更新。分上下冊。
很多是基於2.4內核講解的需要注意。如果學習的話也建議學習2.6,2.6跟2.4比發生了很多顯著改善,應該學習的。
全書內容博大精深,不是非常好懂,對細節問題描述比較清晰。但是感覺對內核的整體感覺不夠強。另外缺少網絡部分的分析。覺得不是很適合初學者。
上冊講解內存管理、中斷、異常與系統調用、進程控制、文件系統與傳統Unix IPC;下冊講解socket、設備驅動、SMP和引導。
本書基於Intel IA32體系,由於厚度大,很多體系上的知識都捎帶講解了,所以如果你想深入瞭解內核的工作機制而又不非常熟悉Intel CPU的體系構造,本書是最合適的。
===================================================
擴充閱讀:
5. 《LINUX KERNEL技術手冊》
參考手冊,很薄,值得一看。
6.《深入Linux內核架構》
這本書針對的是比較新的內核版本2.6.24;內容比較全面,深入淺出。
如果沒有對Linux內核的初步結構的認識,那麼會看得比較吃力。 建議可以一邊去翻在國內已經聞名已經久的四本Linux內核著作(《Linux內核原代碼情景分析》、《Linux內核設計與實現》、《深入理解Linux內核》、《Linux設備驅動程序》),再一邊看這本書,把這本書當作一個補充或者當作一個內核框架圖譜說明書來閱讀,收效會更好。
7.《Linux內核完全註釋》
此書出自同濟一個博士--趙炯。
本書作者趙炯談《Linux內核完全註釋》和《Linux內核源代碼情景分析》..
主要描述和註釋了Linux 0.11內核全部源代碼。對於初學Linux內核操作系統的人來講,該書能夠引領讀者快速入門,並且能全面瞭解一個簡單操作系統的工作機理。對於進一步學習現在的Linux內核具有非常大的指導作用。對於學習嵌入式應用的技術人員來講,通過《完全註釋》一書的學習也能迅速融入嵌入式應用領域。同樣,該書也能作爲閱讀現代Linux內核源代碼的一本參考手冊使用。由於該書是對代碼逐條進行註釋的,因此也能作爲深入學習C語言編程的參考書。另外,該書不僅配備有完整的Linux 0.11系統試驗環境,而且本人還在一年前就在網上專門建立了一個針對該書的網站“www.oldlinux.org”,專門開闢了一個討論該書所涉及的Linux內核實現的論壇。目前該網站的內容已經被權威Linux內核發佈網站www.kernel.org全部作了鏡像(mirrors.kernel.org)。
http://oldlinux.org/index_cn.html
網站宗旨:
收集Linux從醞釀到開發初始版本有關的所有資料和信息(1991-1995);
重新建立起最古老的Linux可運行系統,這些系統在其它地方很難再找到了;
爲初學者提供一個學習Linux內核基本工作原理的最簡單方法。
本書新版:《Linux內核完全剖析--基於0.12內核》
2009年出的,很厚。
8.《Orange S:一個操作系統的實現》
作者:於淵
出版社: 電子工業出版社; 第1版 (2009年6月1日)
本書第一版2005年出版,這是第二版。
從只有二十行的引導扇區代碼出發,一步一步地向讀者呈現一個操作系統框架的完成過程。
_________________________________________________________________________
本人寫的另外系列,配合一起看效果更好,因爲C語言是語言,還需要到實際環境Linux中去用,而Linux環境下網絡編程自然需要TCP/IP的知識: