linux內(nèi)核代碼算是開源社區(qū)里面一盞明燈般的存在,雖然代碼是開源但是核心領(lǐng)域能夠看懂并且能夠真正修改的數(shù)量極其的稀少了,大部分代碼的更新更多是外圍設(shè)備功能的增添,這種修改距離內(nèi)核級別的改動還是存在本質(zhì)的差異,而且很多中國的程序員已經(jīng)參與到很多模塊代碼的提交了,證明了中國軟件行業(yè)也在快速發(fā)展壯大過程中源碼,證明了很多國內(nèi)程序員已經(jīng)度過了最原始的積累過程。
從一個程序員對于編程系統(tǒng)掌握的層次來講,首先是基礎(chǔ)編程語言的語言學(xué)習(xí)過程,然后是能夠看懂代碼,最后是代碼的項目實戰(zhàn)過程中,其實看代碼和寫代碼的過程兩者屬于相輔相成的過程,不斷的研究代碼機構(gòu)從中汲取精華然后應(yīng)用到實際環(huán)境中,在實際項目中找到具體的場景把自己掌握的一些理論模型在實戰(zhàn)中發(fā)揮出來,這種屬于學(xué)以致用的典型,所以一個成熟的程序員需要不斷的研究新的代碼機構(gòu),然后想辦法在實踐中展示自己的能力,形成良性的循環(huán)在現(xiàn)實中很多程序員在初級入門階段還是積極的學(xué)習(xí)優(yōu)秀的代碼,在掌握了一定層次的編程能力之后就放慢了學(xué)習(xí)的腳步,這種模式下非常容易慢慢落伍。
如果從一個普通C++程序員的角度慢慢學(xué)習(xí)linux內(nèi)核,需要具備以下幾種基礎(chǔ)首先由一個認知linux內(nèi)核的代碼是C語言和匯編完成,單純的C++未必能夠滿足其基本的研究需要,所以先要把C語言的基礎(chǔ)語法以及內(nèi)部關(guān)鍵的語法掌握清楚,同時掌握一定的匯編知識,在linux內(nèi)核的影響效率的地方會使用匯編,所以掌握了匯編和C語言基礎(chǔ)的語法之后再去嘗試研究linux內(nèi)核源碼,如果不準(zhǔn)備好基礎(chǔ)編程語法,去研究linux內(nèi)核將是一種災(zāi)難般的存在;對linux內(nèi)核的api接口有一定的了解,了解外圍的調(diào)用接口才能有助于了解內(nèi)部是如何實現(xiàn)的,對于linux內(nèi)核的驅(qū)動常規(guī)知識也需要有一定程度的掌握。
至于需要多長的時間能夠看完linux內(nèi)核知識,這種時間是無法確定有些人linux內(nèi)核已經(jīng)研究十幾年了還是覺的里面有很多不了解的地方,可以嘗試先從基礎(chǔ)的模塊開始熟悉從宏觀上了解其工作原理,然后根據(jù)自己的興趣愛好找到感興趣的模塊進行研究學(xué)習(xí)源碼,不要指望多長時間能夠掌握透徹,能夠當(dāng)成一輩子研究的事業(yè)去做,不要嘗試給自己設(shè)定時間去完成學(xué)習(xí)linux內(nèi)核這種巨大的工程,可以設(shè)定時間掌握宏觀的框架,但更合適的做法是當(dāng)成一種興趣愛好長期去做,希望能幫到你。