怎樣閱讀核心原始碼

2021-05-01 17:23:14 字數 1501 閱讀 3206

1.獲取核心

2.**目錄結構

在閱讀原始碼之前,還應知道linux核心原始碼的整體分布情況。現代的作業系統一般由程序管理、記憶體管理、文件系統、驅動程式和網路等組成。linux核心原始碼的各個目錄大致和此相對應,其組成如下(假設相對於linux-2.4.23目錄):

◆arch目錄包括了任何和體系結構相關的核心**。他下面的每乙個子目錄都代表一種linux支援的體系結構,例如i386就是intel cpu及和之相相容體系結構的子目錄。pc機一般都基於此目錄。

◆include目錄包括編譯核心所需要的大部分頭文件,例如和平台無關的頭文件在include/linux子目錄下。

◆init目錄包含核心的初始化**(不是系統的引導**),有main.c和version.c兩個文件。這是研究核心怎樣工作的好起點。

◆mm目錄包含了任何的記憶體管理**。和具體硬體體系結構相關的記憶體管理**位於arch/*/mm目錄下。

◆drivers目錄中是系統中任何的裝置驅動程式。他又進一步劃分成幾類裝置驅動,每一種有對應的子目錄,如音效卡的驅動對應於drivers/sound。

◆ipc目錄包含了核心程序間的通訊**。

◆modules目錄存放了已建好的、可動態載入的模組。

◆fs目錄存放linux支援的文件系統**。不同的文件系統有不同的子目錄對應,如ext3文件系統對應的就是ext3子目錄。

kernel核心管理的核心**放在這裡。同時和處理器結構相關**都放在arch/*/kernel目錄下。

◆net目錄裡是核心的網路部分**,其每個子目錄對應於網路的乙個方面。

◆lib目錄包含了核心的庫**,但是和處理器結構相關的庫**被放在arch/*/lib/目錄下。

◆scripts目錄包含用於配置核心的指令碼文件。

◆documentation目錄下是一些文件,是對每個目錄作用的具體說明。

一般在每個目錄下都有乙個.depend文件和乙個makefile文件。這兩個文件都是編譯時使用的輔助文件。仔細閱讀這兩個文件對弄清各個文件之間的聯絡和依託關係很有幫助。另外有的目錄下更有readme文件,他是對該目錄下文件的一些說明,同樣有利於對核心原始碼的理解。

3.閱讀起步

在閱讀方法或順序上,有縱向和橫向之分。所謂縱向就是順著程式的執行順序逐步進行;所謂橫向,就是按模組進行。他們經常結合在一起進行。對於linux啟動的**可順著linux的啟動順序一步步來閱讀;對於像記憶體管理部分,能夠單獨拿出來進行閱讀分析。實際上這是個反覆的過程,不可能讀一遍就理解。

lxr(http://lxr.linux.no)是個輔助閱讀的好工具,他能對指定的原始碼文件建立索引資料庫,利用perl指令碼動態生成包含原始碼的web頁面。在此web頁中,任何的變數、常量和函式都以超連線的形式給出,查閱十分方便。另外,lxr還提供識別符號搜尋和文件搜尋,結合程式glimpse(http://glimpse.cs.arizona.edu)還能夠對任何的原始碼文件進行全文檢索,甚至包括注釋。其安裝方法能夠參照其**中的幫助文件。

Linux核心原始碼 閱讀方法

url 通常linux會有以下目錄 arch 子目錄包括所有和體系結構相關的核心 它還有更深的子目錄,每乙個代表一種支援的體系結構 include 子目錄包括編譯核心所需要的大部分 include 檔案。它也有更深的子目錄,每乙個支援的體系結構乙個。include asm 是這個體系結構所需要的真實...

Linux核心原始碼閱讀 1

1 作業系統的基本知識 2 對c語言比較熟悉,最好要有組合語言的知識和gnu c對標準c的擴充套件的知識的了解。另外在閱讀之前,還應該知道linux核心源 的整體分布情況。我們知道現代的作業系統一般由程序管理 記憶體管理 檔案系統 驅動程式 網路等組成。看一下linux內 核源 就可看出,各個目錄大...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...