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

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)剝離。

主站蜘蛛池模板: 萨嘎县| 包头市| 上饶市| 平昌县| 马尔康县| 沧州市| 嘉黎县| 南和县| 绥芬河市| 合水县| 阿拉善右旗| 阿图什市| 安仁县| 扶风县| 合阳县| 拜泉县| 集贤县| 南汇区| 宕昌县| 麻江县| 江城| 灵武市| 堆龙德庆县| 长子县| 辽中县| 化隆| 建湖县| 安顺市| 彭水| 任丘市| 绍兴市| 涡阳县| 扬中市| 金寨县| 祁门县| 玛多县| 鞍山市| 惠东县| 留坝县| 休宁县| 沭阳县|