學習linux內核,這個可不像學一門語言,c或者java一個月或者3月你就能精通掌握。學習linux內核是需要一步一步循序漸進,掌握正確的linux內核學習路線對學習至關重要,本篇文章就來分享學習linux內核的一些建議吧。
1. 瞭解操作系統基本概念。如果不會,可以學習《操作系統:設計與實現》Andrew S.Tanenbaum 寫的那本。以MINIX為例子講解操作系統的概念。非常推薦。
2. 有了操作系統的基本概念以後,可以瞭解Linux的機制了。推薦《Linux內核設計與實現》Robert Love 寫的。這本書從概念上講解了Linux有什麼,他們是怎麼運行的。這本書要反覆認真看透。
3. 有了Linux內核的瞭解,還需要具體研究Linux內核源碼。經典的就是《深入理解Linux內核》Daniel P. Bovet 寫的。學習這本書的時候,要對着內核代碼看着學。這本書學起來相當費力了,那麼多多代碼要研究。不過這本書如果學明白了,恭喜你,Linux內核你已經很熟悉了。
4. 如果要開發設備驅動,可以學習《linux設備驅動程序》O'Reilly出版社的。這本作為驅動的入門是很好的資料。另外還有一本《精通Linux 驅動程序開發》也是不錯的教材,可以參考着看。學習驅動,免不了要學習一些硬件的協議和資料,研究哪個就找到相應的硬件文檔,把硬件的工作原理搞明白。這些就不細説了。
5. 網絡部分,學些Linux網絡部分就學習《深入理解LINUX網絡技術內幕》。這本書把Linux的網絡部分講的非常清晰透徹。但是通常不做這方面的工作研究,也不用研究這麼深,畢竟現在相關職位較少。
6. 現在Linux相關的工作,多集中在一些嵌入式開發領域,arm,mips等,要學習以下這些體系架構的的資料,瞭解CPU的設計和工作方式。ARM就看對應的芯片手冊,講的很細緻。MIPS就看 《see mips run》,有一二兩版,兩版內容有些差異,推薦都看。
7. 補充一點經驗。不要認為Linux很龐大,很複雜,就覺的很難學。任何東西認真學下來都是能學會的,看你都恆心和毅力了。另外,不要走彎路,不要看市面上講什麼Linux0.11的那些書,直接學你要學的東西。就像學C語言看什麼譚浩強一樣,彎路走了,力氣沒少花,還嚴重影響學習效果。
關於linux內核學習路線,再多説幾句應用編程,有時候經常會需要的:
1. 學習Linux應用編程,建議看《unix環境高級編程》,把裏面的例子都做一遍,會對整個Linux編程有系統都認識。
2. 針對Linux,有本 《Linux系統編程》,學完上一本,這本很快看一遍就懂了。主要是針對Linux具體懂一些內容,講的挺全了,很實用。
3. Linux網絡編程,系統的學習一下《unix網絡編程.卷1,套接字聯網api》,基本上網絡應用相關的程序就都沒問題了。
在嵌入式linux學習過程中,你是否會經常有下面的這些感覺:
▪ 是不是學完操作系統原理後覺得紙上談兵不過癮?
▪ 是不是面對浩若煙海的Linux內核源代碼,迷失在代碼的海洋裏,無從下手不知所措?
▪ 是不是還沒有清晰地理解進程調度算法的實現,操作系統的工作機制?
針對linux內核的學習內容:
▪ 你知道Linux內核的架構、常用數據結構,以及內核模塊是怎樣開發的嗎?
▪ 你清不清楚Linux網絡協議棧,並對計算機網絡TCP/IP通信原理有深入的理解?
▪ 你有沒有試過自己動手開發一個內核防火牆?
機會來了!海信集團(Hisense)資深網絡工程師丁光宇講師,現場做客電子發燒友直播間,給大家帶來一場精彩的基於Linux內核驅動開發、Linux內核網絡協議棧,計算機網絡TCP/IP協議的現場直播,手把手教會大家玩轉Linux網絡協議棧!
直播主題:硬核解析之Linux內核 網絡防火牆開發