內(nèi)核源碼的認(rèn)識(shí):
內(nèi)核源碼的分析的難度并不是因?yàn)樵创a本身,而是怎么使用更合適的分析代碼的方式和手段,內(nèi)核本身是一個(gè)很龐大的系統(tǒng),所以我們可能沒辦法什么都全部顧慮到,就需要用一種中間介入的手段對(duì)內(nèi)核源碼“逐個(gè)擊破”,這樣可以把握源碼的主線,更好的分析源碼。
內(nèi)核的地位是很特殊的,所以為了計(jì)算機(jī)的運(yùn)行,內(nèi)核的執(zhí)行效率必須足夠高。內(nèi)核有很多“優(yōu)美的”設(shè)計(jì),就保證內(nèi)核運(yùn)行高效而且使用時(shí)限長久。
內(nèi)核源碼分析方法:
第一布,資料搜集。資料搜集是了解源碼分析最初始的方法。通過搜集資料,了解源碼 所涉及到的內(nèi)容,從而可以定位想要學(xué)習(xí)的源碼內(nèi)容。內(nèi)核的龐大導(dǎo)致我們不可能一次性就可以把內(nèi)核源碼分析完成度達(dá)到百分百,所以就需要有一個(gè)合理的分工,根據(jù)定位去學(xué)習(xí),才可以一步一步的去學(xué)習(xí)內(nèi)核源碼。
第二步,源碼定位。在第一步里,我們已經(jīng)找到源碼相關(guān)的目錄,但是也不意味著我們就要根據(jù)這個(gè)目錄去分析源碼。我們找到的源碼目錄可能是不完整的或是分散的,所以我們需要對(duì)源碼的資料進(jìn)行分析整合,找出與之相關(guān)的核心源文件。這樣在之后的具體分析的時(shí)候,可以把之前沒有涉及到的再給它分析整理出來。
第三步,,簡單注釋。再給源碼定位好之后,要把定位進(jìn)行簡單分析,然后把每個(gè)變量、宏、函數(shù)等代碼元素的含義和功能進(jìn)行簡單備注注釋,不需要特別細(xì)致但是要把大致內(nèi)容描述出來。這就是在漸漸深入分析源碼了。因?yàn)橐鎸?duì)大量之前沒有接觸過的東西,因?yàn)樘杷砸彩呛茈y的一步。所以也要學(xué)會(huì)靜下心來慢慢分析,也是在為之后遇到類似的難點(diǎn)做準(zhǔn)備。
第四步,詳細(xì)注釋。在對(duì) 代碼分析進(jìn)行了簡單的注釋之后,對(duì)于板塊的結(jié)構(gòu)工作就完成了一大部分了,接下來的就是對(duì)代碼的深入分析和透徹理解。因?yàn)楹唵巫⑨寣?duì)于內(nèi)容的整合是大概的,所以詳細(xì)注釋就可以讓我們對(duì)內(nèi)核源碼的認(rèn)識(shí)更加精確,至少從三個(gè)方向,是什么、為什么和怎么做。
第五步,模塊內(nèi)部標(biāo)記依賴關(guān)系。第四步的時(shí)候?qū)τ趦?nèi)核源碼的內(nèi)部板塊進(jìn)行了詳細(xì)分析整理,接下來就是對(duì)每個(gè)版塊進(jìn)行細(xì)致攻克,然后找到他們之間的聯(lián)系。這樣可以清晰地展現(xiàn)模塊定義的函數(shù)包括了哪些函數(shù)、哪些變量和它們之間的依賴關(guān)系。
學(xué)習(xí)方法肯定不止這一種,掌握學(xué)習(xí)方法最后的結(jié)果是幫助我們學(xué)習(xí)內(nèi)核源碼。所以方法還是要找到最適合自己的,這樣才可以有效的促進(jìn)學(xué)習(xí),早點(diǎn)攻克難題,成為程序猿大神!
上一個(gè)教程:返回列表
下一個(gè)教程:Linux內(nèi)核,你了解這些嗎?