linux內(nèi)核分析方法

linux內(nèi)核分析方法

ID:30777978

大?。?75.29 KB

頁數(shù):18頁

時間:2019-01-03

linux內(nèi)核分析方法_第1頁
linux內(nèi)核分析方法_第2頁
linux內(nèi)核分析方法_第3頁
linux內(nèi)核分析方法_第4頁
linux內(nèi)核分析方法_第5頁
資源描述:

《linux內(nèi)核分析方法》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、Linux內(nèi)核今斬方該Linux的最人的好處之一就是它的源碼公開。同時,公開的核心源碼也吸引著無數(shù)的電腦愛好者和程序員;他們把解讀利分析Linux的核心源碼作為口己的最大興趣,把修改Linux源碼和改造Linux系統(tǒng)作為H己對計算機(jī)技術(shù)追求的最大目標(biāo)。Linux內(nèi)核源碼是很具吸引力的,特別是當(dāng)你弄懂了一個分析了好久都沒搞懂的問題;或者是被你修改過了的內(nèi)核,順利通過編譯,一切運(yùn)行正常的時候。那種成就感真是油然而生!而且,對內(nèi)核的分析,除了出白對技術(shù)的狂熱追求之外,這種令人生畏的勞動所帶來的回報也是非常令人看迷的,這也正是它擁有眾多追隨者的主耍原因:?首先,

2、你可以從中學(xué)到很多的計算機(jī)的底層知識,如后面將講到的系統(tǒng)的引導(dǎo)和硬件捉供的中斷機(jī)制等;其它,象虛擬存儲的實現(xiàn)機(jī)制,多任務(wù)機(jī)制,系統(tǒng)保護(hù)機(jī)制等等,這些都是非都源碼不能體會的。?同時,你還將從操作系統(tǒng)的整體結(jié)構(gòu)中,體會整體設(shè)計在軟件設(shè)計中的份量和作用,以及一些宏觀設(shè)計的方法和技巧:Linux的內(nèi)核為上層應(yīng)用捉供一個與具體硬件不相關(guān)的平臺;同時在內(nèi)核內(nèi)部,它乂把代碼分為與體系結(jié)構(gòu)和硬件相關(guān)的部分,和可移植的部分;再例如,Linux雖然不是微內(nèi)核的,但他把大部分的設(shè)備驅(qū)動處理成相對獨(dú)立的內(nèi)核模塊,這樣減小了內(nèi)核運(yùn)行的開銷,增強(qiáng)了內(nèi)核代碼的模塊獨(dú)立性。?而且你還能

3、從対內(nèi)核源碼的分析中,體會到它在解決某個貝-體細(xì)節(jié)問題時,方法的巧妙:如后而將分析到了的Linux通過Botoom_half機(jī)制來加快系統(tǒng)對中斷的處理。?最重要的是:在源碼的分析過程中,你將會被一點(diǎn)一點(diǎn)地、潛移默化地專業(yè)化。一個專業(yè)的程序員,總是把代碼的清晰性,兼容性,可移植性放在很重要的位置。他們總是通過定義大量的宏,來增強(qiáng)代碼的清晰度和可讀性,而乂不增加編譯后的代碼長度和代碼的運(yùn)行效率;他們總是在編碼的同時,就考慮到了以后的代碼維護(hù)和升級。英至,只要分析百分之一的代碼示,你就會深刻地體會到,什么樣的代碼才是一個專業(yè)的程序員寫的,什么樣的代碼是一個業(yè)余

4、愛好者寫的。而這一點(diǎn)是任何沒有真正分析過標(biāo)準(zhǔn)代碼的人都無法體會到的。然而,山于內(nèi)核代碼的冗長,和內(nèi)核體系結(jié)構(gòu)的龐雜,所以分析內(nèi)核也是一個很艱難,很需耍毅力的事;在缺乏指導(dǎo)和交流的情況下,尤其如此。只有方法正確,才能事半功倍。正是基于這種考慮,作者希望通過此文能給大家一些借鑒和啟迪。山于本人所進(jìn)行的分析都是基于2.2.5版木的內(nèi)核;所以,如果沒有特別說明,以下分析都是基于i386單處理器的2.2.5版木的Linux內(nèi)核。所侑源文件均是相對于目錄/usr/src/linux的。方法之一:從何入手要分析Linux內(nèi)核源碼,首先必須找到各個模塊的位置,也即要弄懂

5、源碼的文件組織形式。雖然對于有經(jīng)驗的高手而言,這個不是很難;但對于很多初級的Linux愛好者,和那些對源碼分析很有興趣但接觸不多的人來說,這還是很有必要的。1、Linux核心源程序通常都安裝在/usr/src/linux下,而且它有一個非常簡單的編號約定:任何偶數(shù)的核心(的二個數(shù)為偶數(shù),例如2.0.30)都是一個穩(wěn)定地發(fā)行的核心,而任何奇數(shù)的核心(例如2.1.42)都是一個開發(fā)小的核心。2、核心源程序的文件按樹形結(jié)構(gòu)進(jìn)行組織,在源程序樹的最上層,即目錄/usr/src/linux下有這樣一些目錄和文件:?COPYING:GPL版權(quán)申明。對具有GPL版權(quán)的

6、源代碼改動而形成的程序,或使用GPL工具產(chǎn)生的程序,具有使用GPL發(fā)表的義務(wù),如公開源代碼;?CREDITS:光榮榜。對Linux做出過很人貢獻(xiàn)的一些人的信息;?MAINTAINERS:維護(hù)人員列表,對當(dāng)前版本的內(nèi)核各部分都有誰負(fù)責(zé);?Makefile:第一個Makefile文件。用來組織內(nèi)核的各模塊,記錄了個模塊間的相互這間的聯(lián)系和依托關(guān)系,編譯時使用;仔細(xì)閱讀各子日錄下的Makefile文件對弄清各個文件這間的聯(lián)系和依托關(guān)系很有幫助;?ReadMe:核心及其編譯配置方法簡單介紹;?Rules.make:各種Makefilemake所使用的一些共同規(guī)則

7、;?REPORTING?BUGS:有關(guān)扌艮告Bug的一些內(nèi)容;?Arch/:arch子冃錄包括了所有和體系結(jié)構(gòu)相關(guān)的核心代碼。它的每一個子冃錄都代表-種支持的體系結(jié)構(gòu),例如>386就是關(guān)于intelcpu及與Z相兼容體系結(jié)構(gòu)的子目錄。PC機(jī)一般都基于此冃錄;?Include/:include子1=1錄包括編譯核心所需要的人部分頭文件。與平臺無關(guān)的頭文件在include/linux子H錄下,與intelcpu相關(guān)的頭文件在include/asm-i386子冃錄卜:而include/scsi目錄則是有關(guān)scsi設(shè)備的頭文件目錄;?Init/:這個目錄包含核心

8、的初始化代碼(注:不是系統(tǒng)的引導(dǎo)代碼),包含兩個文件main.c和Version

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。