深入理(li)解Linux內核 學習Linux內核的一些建議
時間:2018-09-29 來(lai)源:未知(zhi)

之所以(yi)學(xue)習(xi)Linux內(nei)(nei)核(he)的(de)(de)(de)(de)(de)(de)理由(you)是(shi),我(wo)喜歡(huan)它,想搞(gao)清楚他的(de)(de)(de)(de)(de)(de)原理,而且也愿意花時間去(qu)研究。興趣(qu)是(shi)好(hao)的(de)(de)(de)(de)(de)(de)老師,只有(you)真正的(de)(de)(de)(de)(de)(de)喜歡(huan)一(yi)(yi)個東(dong)西,才能(neng)把它學(xue)好(hao)。此外,程序員的(de)(de)(de)(de)(de)(de)好(hao)奇心是(shi)天生的(de)(de)(de)(de)(de)(de),要(yao)是(shi)不(bu)(bu)弄(nong)明白一(yi)(yi)件事,就會吃不(bu)(bu)下飯,睡(shui)不(bu)(bu)著覺(jue)。沒有(you)好(hao)奇心的(de)(de)(de)(de)(de)(de)程序員不(bu)(bu)是(shi)真正的(de)(de)(de)(de)(de)(de)程序員。想要(yao)深入理解Linux內(nei)(nei)核(he),學(xue)習(xi)Linux內(nei)(nei)核(he)有(you)什么(me)建(jian)議(yi)呢?下面我(wo)們(men)來看看華(hua)清大神為我(wo)們(men)列出的(de)(de)(de)(de)(de)(de)深入理解和學(xue)習(xi)Linux內(nei)(nei)核(he)的(de)(de)(de)(de)(de)(de)一(yi)(yi)些(xie)建(jian)議(yi)。
1. 了解操(cao)作系(xi)統基(ji)本概念。如果不會,可(ke)以學(xue)習《操(cao)作系(xi)統:設計與(yu)實現》Andrew S.Tanenbaum 寫的(de)那(nei)本。以MINIX為(wei)例(li)子講(jiang)解操(cao)作系(xi)統的(de)概念。非常推薦。
2. 有了(le)操作(zuo)系統的基本(ben)概念(nian)以后,可以了(le)解Linux的機制(zhi)了(le)。推薦《Linux內核(he)設計與實現》Robert Love 寫的。這本(ben)書從概念(nian)上講解了(le)Linux有什(shen)么(me),他們是怎么(me)運(yun)行的。這本(ben)書要反復認真(zhen)看透。
3. 有了(le)Linux內核(he)的(de)了(le)解,還需要具體研究Linux內核(he)源碼。經(jing)典的(de)就是《深(shen)入理(li)解Linux內核(he)》Daniel P. Bovet 寫的(de)。學習(xi)這(zhe)本書(shu)的(de)時候(hou),要對著內核(he)代(dai)碼看著學。這(zhe)本書(shu)學起來(lai)相當費(fei)力了(le),那么多多代(dai)碼要研究。不(bu)過(guo)這(zhe)本書(shu)如果(guo)學明白了(le),恭喜你(ni),Linux內核(he)你(ni)已經(jing)很熟悉了(le)。
4. 如果要開發設備驅(qu)(qu)動(dong),可(ke)以(yi)學(xue)習(xi)《linux設備驅(qu)(qu)動(dong)程(cheng)序(xu)》O'Reilly出(chu)版社的(de)(de)。這本作為驅(qu)(qu)動(dong)的(de)(de)入門是很好(hao)的(de)(de)資(zi)料。另外還有一本《精通Linux 驅(qu)(qu)動(dong)程(cheng)序(xu)開發》也是不錯的(de)(de)教材(cai),可(ke)以(yi)參考(kao)著(zhu)看。學(xue)習(xi)驅(qu)(qu)動(dong),免(mian)不了(le)要學(xue)習(xi)一些硬(ying)(ying)件(jian)的(de)(de)協議和資(zi)料,研究哪個就找到相應的(de)(de)硬(ying)(ying)件(jian)文檔,把硬(ying)(ying)件(jian)的(de)(de)工作原理搞(gao)明(ming)白。這些就不細說了(le)。
5. 網(wang)絡(luo)部分(fen),學些Linux網(wang)絡(luo)部分(fen)就學習《深(shen)入理解LINUX網(wang)絡(luo)技術內幕(mu)》。這(zhe)(zhe)本書把Linux的(de)(de)(de)網(wang)絡(luo)部分(fen)講(jiang)的(de)(de)(de)非(fei)常清(qing)晰透徹。但是通(tong)常不(bu)做這(zhe)(zhe)方面的(de)(de)(de)工(gong)作研究,也不(bu)用研究這(zhe)(zhe)么深(shen),畢竟現在相關職位較少(shao)。
6. 現在(zai)Linux相關的(de)(de)工(gong)作,多集(ji)中在(zai)一些嵌入式開發領(ling)域,arm,mips等,要學習以下這些體(ti)系架構的(de)(de)的(de)(de)資(zi)料(liao),了解CPU的(de)(de)設計和工(gong)作方(fang)式。ARM就(jiu)看對應的(de)(de)芯片手(shou)冊,講(jiang)的(de)(de)很(hen)細致。MIPS就(jiu)看 《see mips run》,有(you)一二(er)兩(liang)版,兩(liang)版內(nei)容有(you)些差異,推薦都看。
7. 補充一點經驗(yan)。不(bu)要認(ren)為Linux很龐大(da),很復雜,就(jiu)覺的很難學(xue)(xue)。任(ren)何東(dong)西認(ren)真(zhen)學(xue)(xue)下來都是能(neng)學(xue)(xue)會的,看(kan)你(ni)都恒心和毅力(li)了(le)。另外,不(bu)要走(zou)(zou)彎路(lu),不(bu)要看(kan)市面上講什么Linux0.11的那些書,直接學(xue)(xue)你(ni)要學(xue)(xue)的東(dong)西。就(jiu)像學(xue)(xue)C語言看(kan)什么譚浩強一樣(yang),彎路(lu)走(zou)(zou)了(le),力(li)氣(qi)沒少(shao)花,還嚴重影響學(xue)(xue)習效果。
除(chu)了這(zhe)些,在我們(men)學習(xi)Linux的時候(hou),還(huan)需要注意以下幾點:
1. 學習Linux應(ying)用編(bian)程(cheng),建議看《unix環境高級編(bian)程(cheng)》,把里面的例(li)子都做一遍,會(hui)對(dui)整個Linux編(bian)程(cheng)有系(xi)統(tong)都認識。
2. 針對(dui)Linux,有本(ben) 《Linux系統編程》,學完上一(yi)本(ben),這本(ben)很(hen)快(kuai)看一(yi)遍就懂了(le)。主要(yao)是(shi)針對(dui)Linux具體(ti)懂一(yi)些內容,講的挺全(quan)了(le),很(hen)實(shi)用。
3. Linux網絡(luo)編(bian)(bian)程(cheng)(cheng),系(xi)統的學(xue)習一下(xia)《unix網絡(luo)編(bian)(bian)程(cheng)(cheng).卷(juan)1,套(tao)接字(zi)聯(lian)網api》,基本(ben)上網絡(luo)應用相關的程(cheng)(cheng)序(xu)就(jiu)都沒問題(ti)了。
以上就是深入理(li)解和學習(xi)(xi)Linux內核(he)的(de)一些建議,但愿對大(da)家學習(xi)(xi)Linux內核(he)有一定的(de)幫(bang)助,更深入理(li)解Linux內核(he)。

