Linux作業系統核心原始碼目錄結構詳解

2021-09-08 01:55:47 字數 2416 閱讀 3258

linux核心原始碼目錄結構

**目錄結構

在閱讀原始碼之前,還應知道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檔案,它是對該目錄下檔案的一些說明,同樣有利於對核心原始碼的理解。

獲取核心

**目錄結構

在閱讀原始碼之前,還應知道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檔案,它是對該目錄下檔案的一些說明,同樣有利於對核心原始碼的理解。

閱讀起步

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

lxr(是乙個輔助閱讀的好工具,它能對指定的原始碼檔案建立索引資料庫,利用perl指令碼動態生成包含原始碼的web頁面。在此web頁中,所有的變數、常量和函式都以超連線的形式給出,查閱十分方便。另外,lxr還提供識別符號搜尋和檔案搜尋,結合程式glimpse(還可以對所有的原始碼檔案進行全文檢索,甚至包括注釋。其安裝方法可以參照其**中的幫助檔案。在window下也有一適合linux核心閱讀的工具稱作source insight(可從

trackback:

Linux作業系統中原始碼安裝MySQL資料庫

2.chmod 755 mysql standard 5.0.15 linux gnu i686 glibc23.tar.gz 3.tar xfz mysql standard 5.0.15 linux gnu i686 glibc23.tar.gz 將解壓後生成的目錄,複製到 usr local ...

linux核心原始碼

1.機器當前使用的核心版本 apuser jianzhangubtnb uname a linux jianzhangubtnb 3.2.0 23 generic 36 ubuntu smp tue apr 10 20 39 51 utc 2012 x86 64 x86 64 x86 64 gnu ...

Linux作業系統核心編碼風格

第 1 章 縮排 tabs 製表符 是8個字元的大小。簡而言之,8個字元的縮排使程式更易讀,而且當你把功能隱藏的太深時,多層次的縮排還會對此很直觀的給出警告。要留心這種警告資訊。第 2 章 放置花括號 c程式中另乙個要主意的就是花括號的放置。與縮排尺寸不同的是,關於如何放置花括號沒有技術上的理由。但...