資源描述:
《linux內(nèi)核源代碼的閱讀和工具介紹》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、Linux內(nèi)核源代碼的閱讀和工具介紹
2、第1Linux的內(nèi)核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統(tǒng)下,/usr/src/linux目錄下的東西就是內(nèi)核源代碼。另外還可以從互連網(wǎng)上下載,解壓縮后文件一般也都位于linux目錄下。內(nèi)核源代碼有很多版本,目前最新的版本是2.2.14?! ≡S多人對于閱讀Linux內(nèi)核有一種恐懼感,其實(shí)大可不必。當(dāng)然,象Linux內(nèi)核這樣大而復(fù)雜的系統(tǒng)代碼,閱讀起來確實(shí)有很多困難,但是也不象想象的那么高不可攀。只要有恒心,困難都是可以克服的。任何事情做起來都需要有方法和工具。正確
3、的方法可以指導(dǎo)工作,良好的工具可以事半功倍。對于Linux內(nèi)核源代碼的閱讀也同樣如此。下面我就把自己閱讀內(nèi)核源代碼的一點(diǎn)經(jīng)驗(yàn)介紹一下,最后介紹此目錄包含了所有的內(nèi)存管理代碼。與具體硬件體系結(jié)構(gòu)相關(guān)的內(nèi)存管理代碼位于arch/*/mm目錄下,如對應(yīng)于X86的就是arch/i386/mm/fault.c?!rivers系統(tǒng)中所有的設(shè)備驅(qū)動都位于此目錄中。它又進(jìn)一步劃分成幾類設(shè)備驅(qū)動,每一種也有對應(yīng)的子目錄,如聲卡的驅(qū)動對應(yīng)于drivers/sound?! pc此目錄包含了核心的進(jìn)程間通訊代碼?! odules此目錄包含
4、已建好可動態(tài)加載的模塊?! sLinux支持的文件系統(tǒng)代碼。不同的文件系統(tǒng)有不同的子目錄對應(yīng),如ext2文件系統(tǒng)對應(yīng)的就是ext2子目錄?! ernel主要核心代碼。同時與處理器結(jié)構(gòu)相關(guān)代碼都放在arch/*/kernel目錄下。 核心的網(wǎng)絡(luò)部分代碼。里面的每個子目錄對應(yīng)于網(wǎng)絡(luò)的一個方面?! ib此目錄包含了核心的庫代碼。與處理器結(jié)構(gòu)相關(guān)庫代碼被放在arch/*/lib/目錄下?! cripts此目錄包含用于配置核心的腳本文件?! ocumentation此目錄是一些文檔,起參考作用?! ∏宄嗽创a的結(jié)構(gòu)組
5、成后就可以著手閱讀。對于閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程序的執(zhí)行順序逐步進(jìn)行;所謂橫向,就是分模塊進(jìn)行。這不是絕對的,而是經(jīng)常結(jié)合在一起進(jìn)行。對于Linux源代碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平臺為例): ./larch/i386/boot/bootSect.S-->./larch/i386/boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的start
6、_kernel()。而對于象內(nèi)存管理等部分,則可以單獨(dú)拿出來進(jìn)行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然后進(jìn)行專題閱讀,如進(jìn)程部分,內(nèi)存管理部分等。在每個功能函數(shù)內(nèi)部應(yīng)該一步步來。實(shí)際上這是一個反復(fù)的過程,不可能讀一遍就理解。 俗話說:“工欲善其事,必先利其器”。閱讀象Linux核心代碼這樣的復(fù)雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經(jīng)常要用到好幾個其他的相關(guān)文件,不久你將會忘記你原來在干什么。所以沒有一個好的工具是不行的。由于大部分愛好者對于Window平臺比較熟悉,并且還是常用Win
7、dow系列平臺,所以在此我介紹一個Window下的一個工具軟件:SourceInsight。這是一個有30天期的軟件,可以從.sourcedyn.下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然后按提示進(jìn)行就可以了。安裝完成后,就可啟動該程序。這個軟件使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)后,該軟件就分析你所加的源代碼。分析完后,就可以進(jìn)行閱讀了。對于打開的閱讀文件,如果想看某一變
8、量的定義,先把光標(biāo)定位于該變量,然后點(diǎn)擊工具條上的相應(yīng)選項(xiàng),該變量的定義就顯示出來。對于函數(shù)的定義與實(shí)現(xiàn)也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個SourceInsight,那樣你閱讀源代碼的效率會有很大提高的。怎么樣,試試吧! 靳美201400上海市奉賢縣解放一村19號103室