Linux核心原始碼的閱讀和工具介紹

來源:互聯網
上載者:User
Linux核心原始碼的閱讀和工具介紹
01-7-27 上午 09:38:07---------------------------------------------------------------
 

隨著linux的逐步普及,現在有不少人對於Linux的安裝及設定已經比較熟悉了。與Linux 的蓬勃發展相適應,想深入瞭解Linux的也越來越多。而要想深入瞭解Linux,就需要閱讀和分析linux核心的原始碼。 
 
Linux 的核心原始碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是核心原始碼。另外還可以從互連網上下載,解壓縮後檔案一般也都位於linux目錄下。核心原始碼有很多版本,目前最新的穩定版是2.2.14。 
 
許多人對於閱讀 Linux核心有一種恐懼感,其實大可不必。當然,象Linux核心這樣大而複雜的系統代碼,閱讀起來確實有很多困難,但是也不象想象的那麼高不可攀。只要有恒心,困難都是可以克服的。也不用擔心水平不夠的問題,事實上,有很多事情我們不都是從不會到會,邊幹邊學的嗎? 
 
任何事情做起來都需要有方法和工具。正確的方法可以指導工作,良好的工具可以事半功倍。對於Linux 核心原始碼的閱讀也同樣如此。下面我就把自己閱讀核心原始碼的一點經驗介紹一下,最後介紹Window平台下的一種閱讀工具。 
 
對於原始碼的閱讀,要想比較順利,事先最好對原始碼的知識背景有一定的瞭解。對於linux核心原始碼來講,我認為,基本要求是:1、作業系統的基本知識;2、對C語言比較熟悉,最好要有組合語言的知識和GNU C對標準C的擴充的知識的瞭解。另外在閱讀之前,還應該知道Linux核心原始碼的整體分布情況。我們知道現代的作業系統一般由進程管理、記憶體管理、檔案系統、驅動程式、網路等組成。看一下Linux內  核原始碼就可看出,各個目錄大致對應了這些方面。Linux核心原始碼的組成如下(假設相對於 linux目錄): 
 
arch 這個子目錄包含了此核心原始碼所支援的硬體體繫結構相關的核心代碼。如對於X86平台就是i386。 
 
include 這個目錄包括了核心的大多數include檔案。另外對於每種支援的體繫結構分別有一個子目錄。 
 
init 此目錄包含核心啟動代碼。 
 
mm 此目錄包含了所有的記憶體管理代碼。與具體硬體體繫結構相關的記憶體管理代碼位於arch/*/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。 
 
drivers 系統中所有的裝置驅動都位於此目錄中。它又進一步劃分成幾類裝置驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。 
 
ipc 此目錄包含了核心的進程間通訊代碼。 
 
modules 此目錄包含已建好可動態載入的模組。 
 
fs Linux支援的檔案系統代碼。不同的檔案系統有不同的子目錄對應,如ext2檔案系統對應的就是ext2子目錄。 
 
kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。 
 
net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。 
 
lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。 
 
scripts此目錄包含用於配置核心的指令檔。 
 
Documentation 此目錄是一些文檔,起參考作用。 
 
清楚了原始碼的結構組成後就可以著手閱讀。對於閱讀方法或者說順序,有所謂的縱向與橫向之分。所謂縱向就是順著程式的執行順序逐步進行;所謂橫向,就是分模組進行。其實他們之間不是絕對的,而是經常結合在一起進行。對於Linux原始碼來講,啟動的代碼就可以順著linux的啟動順序一步一步來,它的大致流程如下(以X86平台為例): 
 
./larch/i386/boot/bootSect.S-->./larch/i386 /boot/setup.S-->./larch/i386/kernel/head.S-->./init/main.c中的 start_kernel()。而對於象記憶體管理等部分,則可以單獨拿出來進行閱讀分析。我的體會是:開始最好按順序閱讀啟動代碼,然後進行專題閱讀,如進程部分,記憶體管理部分等。在每個功能函數內部應該一步步來。實際上這是一個反覆的過程,不可能讀一遍就理解。 
 
俗話說:“工欲善其事,必先利其器”。閱讀象Linux核心代碼這樣的複雜程式令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關檔案,不久你將會忘記你原來在幹什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個 Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.