Linux內(nèi)核結(jié)構(gòu)
Linux內(nèi)核結(jié)構(gòu)
?
1、內(nèi)核的子系統(tǒng)
(1) 系統(tǒng)調(diào)用接口SCI(System Call Interface):SCI層為用戶空間提供了一套標(biāo)準(zhǔn)的系統(tǒng)調(diào)用函數(shù)來(lái)訪問(wèn)Linux內(nèi)核,搭起了用戶空間到內(nèi)核空間的橋梁。
(2) 進(jìn)程管理PM(Process Management):進(jìn)程作為資源分配的基本單位而存在;進(jìn)程調(diào)度。
(3) 虛擬文件系統(tǒng)VFS(Virtual File System):它是一種用于網(wǎng)絡(luò)環(huán)境的分布式文件系統(tǒng),是允許和操作系統(tǒng)使用不同的文件系統(tǒng)實(shí)現(xiàn)的接口。
(4) 內(nèi)存管理MM(Memory Management):段轉(zhuǎn)換過(guò)程是由邏輯地址(或稱為虛擬地址)轉(zhuǎn)換為線性地址;頁(yè)轉(zhuǎn)換過(guò)程則是將線性地址轉(zhuǎn)換為物理地址。
(5) 網(wǎng)絡(luò)協(xié)議棧(Network Stack)
(6) Arch:CPU。
(7) 設(shè)備驅(qū)動(dòng)DD(Device Drivers):是連接硬件和內(nèi)核之間的橋梁。
?
2、內(nèi)核目錄
arch
特定體系結(jié)構(gòu)相關(guān)代碼,內(nèi)核所支持的每種架構(gòu)的 CPU 的相 關(guān)目錄集合,在 arch 目錄下,有支持 arm 的目錄、支持 x86 的目錄和支持 mips 的目錄等,如: arch/arm、 arch/x86 和 arch/mips 等。
block
塊設(shè)備通用函數(shù)
crypto
常用加密和散列算法(如 AES、 SHA 等),還有一些壓縮和 CRC 校驗(yàn)算法
Documentation
內(nèi)核源碼說(shuō)明文檔目錄
drivers
設(shè)備驅(qū)動(dòng)程序目錄集合, drivers 里的某一子目錄對(duì)應(yīng)著內(nèi)核中 的某一種驅(qū)動(dòng)程序,如: drivers/char 為字符設(shè)備驅(qū)動(dòng)程序、 drivers/block 為塊設(shè)備驅(qū)動(dòng)程序、 drivers/net 為網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng) 程序、 drivers/usb 為 usb 總線設(shè)備驅(qū)動(dòng)程序、 drivers/i2c 為 i2c 總線設(shè)備驅(qū)動(dòng)程序等。
fs
Linux 支持的文件系統(tǒng)的代碼(包括虛擬文件系統(tǒng) VFS),每個(gè) 子目錄對(duì)應(yīng)一種文件系統(tǒng),比如 fs/jffs2/、 fs/cramfs、 fs/ext2/。
include
內(nèi)核的頭文件目錄,如:基本的頭文件(存放在 include/linux 目錄下)、各種驅(qū)動(dòng)或功能部件的頭文件(比如 include/media、 include/video/、 include/net)。
init
初始化代碼而不是內(nèi)核的引導(dǎo)代碼。
ipc
包含了進(jìn)程間的通信
kernel
核心代碼,此目錄下的文件實(shí)現(xiàn)了大多數(shù)linux系統(tǒng)的內(nèi)核函數(shù),其中最重要的文件當(dāng)屬sched.c;和處理器的相關(guān)代碼放在 arch/*/kernel 目錄下
lib
內(nèi)核會(huì)用的庫(kù)函數(shù),比cstring.c等
mm
內(nèi)核的內(nèi)存管理相關(guān)的代碼,如頁(yè)式存儲(chǔ)管理內(nèi)存的分配和釋放等
net
核心的網(wǎng)絡(luò)所支持得部分代碼,其中每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面
scripts
用于配置核心的腳本文件
security
安全、密匙方面的代碼
sound
音頻設(shè)備
?
3、管理腳本
(1)頂層Makefile:所有源代碼子目錄Makefile文件的核心,從總體上控制著內(nèi)核的編譯、連接。
(2)子目錄Makefile:被上一層目錄里的Makefile調(diào)用來(lái)編譯當(dāng)前目錄的文件。
(3).config:配置文件,在配置內(nèi)核時(shí)生成。所有Makefile文件(包括頂層和各級(jí)子目錄)都是根據(jù).config來(lái)決定使用哪些文件。
(4)Kconfig:一個(gè)文本形式的文件,其中主要作用是在內(nèi)核配置(用makemenuconfig配置內(nèi)核)時(shí),作為配置選項(xiàng)。
?