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