Linux內(nèi)核作為一個特殊的程序,同樣需要經(jīng)過編譯、鏈接之后才能運行,僅僅是它執(zhí)行時擁有特殊的權(quán)限,位于特定的空間,并且不會也不可能信賴其他的軟件罷了。
Linux發(fā)展至今,其內(nèi)核的組織結(jié)構(gòu)日漸清晰,層次日漸分明。一旦基本系統(tǒng)安裝完畢,具有系統(tǒng)管理員權(quán)限的用戶即可編譯內(nèi)核。一般來說,Linux系統(tǒng)內(nèi)核的源碼放置在/usr/src/linux目錄下,它將依賴于體系結(jié)構(gòu)的代碼和獨立于體系結(jié)構(gòu)的代碼分離開來(前者僅占5%,通常是一些匯編代碼和局部的、針對于不同體系結(jié)構(gòu)的局部處理細節(jié),如時鐘定時器頻率)。
為了讓讀者更好地理清內(nèi)核結(jié)構(gòu),下面列出了幾個重要的源碼目錄:
arch目錄 該目錄的存放具體地依賴于體系結(jié)構(gòu)實現(xiàn)的代碼。在這個目錄下,針對不同體系結(jié)構(gòu)所移植的版本都有三個子目錄:kernel、lib和mm。kernel子目錄包含依賴于體系結(jié)構(gòu)實現(xiàn)的一般內(nèi)核功能,例如信號處理、時鐘處理等。lib子目錄包含庫函數(shù)的本地實現(xiàn),如果從依賴于體系結(jié)構(gòu)的源碼編譯,則運行得更快。mm子目錄包含存儲管理實現(xiàn)的代碼。
drivers目錄 這個目錄擁有50%以上的內(nèi)核源碼,所有的驅(qū)動程序源碼均位于該目錄之下。
fs目錄 該目錄存放所有的系統(tǒng)支持的文件系統(tǒng)的實現(xiàn)代碼。
include目錄 一些重要的頭文件。
ipc目錄 處理進程間通信的全部所需的代碼都放在ipc目錄下。
init目錄 該目錄存放所有系統(tǒng)的初始化代碼,許多重要的文件,例如main.c就位于該目錄下。該文件還包含了許多核心代碼--比如實現(xiàn)fork()的代碼和最常執(zhí)行的代碼--cpuidle()循環(huán)。
lib目錄 該目錄放置內(nèi)核其他部分經(jīng)常所需要的代碼。例如,inflate.c就放在這里,它能夠在引導(dǎo)時解壓內(nèi)核并裝入內(nèi)存,它也知道如何解壓標準PKZIP 8位壓縮算法。
kernel目錄 許多最常調(diào)用的內(nèi)核函數(shù)放在該目錄下。調(diào)度器fork()和timer.c就放在這里。你還能在這個目錄下找到printk.c。
mm目錄 該目錄包含所有Linux實現(xiàn)虛擬內(nèi)存管理的源碼。
net目錄 所有提供網(wǎng)絡(luò)支持的代碼都放在這個目錄下。
Document目錄 該目錄存放了大量的內(nèi)核代碼相關(guān)文檔,以及用戶開發(fā)和維護手冊。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。