學習kernel編程的建議

我把我學習kernel編程的過程介紹給你們,但願你們有個參考。linux

學習kernel編程須要閱讀大量的kernel方面的書籍,在此我列舉一下我讀過的kernel書籍(按時間前後順序),並給一些建議。shell

1. LDDv3(Linux Device Driver Program)linux設備驅動編程編程

2. Linux內核情景分析,上,下網絡

3. ULK(Understanding Linux Kernel)v2, v3學習

4. Linux 0.11內核徹底註釋spa

5. ULN(Understanding Linux Networking) 設計

以上是我閱讀過的算是大部頭的Linux Kernel編程方面的書籍。固然若是你剛開始學習Linux編程,並但願向底層發展,那麼我建議你先閱讀:內存

1. C語言程序設計同步

2. APUE(Advanced Programming in the UNIX Environment)Unix高級環境編程網絡編程

3. Unix網絡編程,卷一,卷二

4. TCP/IP詳解,卷1、卷2、卷三

5. C語言標準與實現(選讀,強烈推薦你讀一下,讀完後會對C語言有很深刻的瞭解)

初學Linux,讀完以上這3類書籍,你對Linux系統編程就會至關的瞭解了,建議還要至少讀一本shell編程方面的書,緣由就不用說了吧。

好如今你有了必定的系統知識和C語言編程技能了,那麼來講說你怎麼讀kernel的書籍。

上面列出的5種書籍我都讀過,建議你這樣閱讀。

首先讀LDDv3,讀到內存映射部分,這時好多概念你不容易理解,能夠等之後精度,到這之後能夠先馬虎的讀一遍。

而後讀Linux內核情景分析,上,下,這兩本書是我見過的最厚的書了,必定要堅持讀下來,講述的2.4內核的情景。(閱讀時最好把代碼打開,講到哪你看到哪,我是這樣的)

再後能夠讀ULK v2或v3,ULKv2講的是2.4的內核,ULKv3講的是2.6的內核,直接讀v3沒有問題,要儘可能的理解所有內容。

這時若是以上你都讀完了,那麼能夠把LDDv3內存映射開始章節和日後的章節重讀一遍,你會徹底理解了。

關於0.11內核徹底註釋,這本書你能夠如今讀了,這本主要是鍛鍊你的基本編程知識,包括對一些ATT彙編也有了一些認識,對你看當今最新的內核原理方面沒有什麼幫助。

但也推薦你看看,這本書會告訴你諸如printf是怎麼實現的,仍是頗有意思的。(要打開代碼同步閱讀,最好)

ULN是徹底講述的Linux網絡子系統,當你對Linux Kernel編程有必定基礎和概念了能夠開始閱讀了,我是最後閱讀的,你會徹底在概念上了解Linux網絡子系統的實現。

 

讀了那麼多的書,該行萬里路了,寫代碼來實踐是很是重要的,沒有目標就本身想象一個,例如,讀完怎樣編寫網絡驅動後(LDD中),能夠本身寫個虛擬網卡,當你ping你虛擬網卡地址時,

你在驅動中把IP地址對調,並修改協議爲ICMP回顯,而後再發回給kernel,這樣ping命令就會有回顯,好像你真ping到了那個地址,實際上是你本身在kernel中作了點手腳。

有實際的工做目標是最好的了,多實踐仍是硬道理。祝你成功!

相關文章
相關標籤/搜索