官术网_书友最值得收藏!

3.3 Linux內核的組成

3.3.1 Linux內核源代碼的目錄結構

Linux內核源代碼包含如下目錄。

·arch:包含和硬件體系結構相關的代碼,每種平臺占一個相應的目錄,如i386、arm、arm64、powerpc、mips等。Linux內核目前已經支持30種左右的體系結構。在arch目錄下,存放的是各個平臺以及各個平臺的芯片對Linux內核進程調度、內存管理、中斷等的支持,以及每個具體的SoC和電路板的板級支持代碼。

·block:塊設備驅動程序I/O調度。

·crypto:常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗算法。

·documentation:內核各部分的通用解釋和注釋。

·drivers:設備驅動程序,每個不同的驅動占用一個子目錄,如char、block、net、mtd、i2c等。

·fs:所支持的各種文件系統,如EXT、FAT、NTFS、JFFS2等。

·include:頭文件,與系統相關的頭文件放置在include/linux子目錄下。

·init:內核初始化代碼。著名的start_kernel()就位于init/main.c文件中。

·ipc:進程間通信的代碼。

·kernel:內核最核心的部分,包括進程調度、定時器等,而和平臺相關的一部分代碼放在arch/*/kernel目錄下。

·lib:庫文件代碼。

·mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm目錄下。

·net:網絡相關代碼,實現各種常見的網絡協議。

·scripts:用于配置內核的腳本文件。

·security:主要是一個SELinux的模塊。

·sound:ALSA、OSS音頻設備的驅動核心代碼和常用設備驅動。

·usr:實現用于打包和壓縮的cpio等。

·include:內核API級別頭文件。

內核一般要做到drivers與arch的軟件架構分離,驅動中不包含板級信息,讓驅動跨平臺。同時內核的通用部分(如kernel、fs、ipc、net等)則與具體的硬件(arch和drivers)剝離。

主站蜘蛛池模板: 蒲城县| 苏尼特左旗| 湟中县| 泾阳县| 丰城市| 图木舒克市| 冀州市| 遵化市| 铜鼓县| 金阳县| 辰溪县| 务川| 靖江市| 兰溪市| 白城市| 民乐县| 古田县| 石渠县| 象山县| 常德市| 思南县| 江北区| 南乐县| 封丘县| 昭苏县| 荥经县| 苗栗县| 香河县| 两当县| 澎湖县| 高台县| 吉安市| 思茅市| 蒲城县| 徐州市| 南充市| 桃源县| 延边| 宁乡县| 新沂市| 万全县|