- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 宋寶華
- 592字
- 2018-12-31 20:25:27
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)剝離。
- Windows Server 2012 Hyper-V:Deploying the Hyper-V Enterprise Server Virtualization Platform
- 白話區塊鏈
- PLC控制系統應用與維護
- Implementing Azure DevOps Solutions
- Linux集群和自動化運維
- Windows Vista融會貫通
- 深入淺出Node.js
- 從實踐中學習Windows滲透測試
- 鴻蒙操作系統設計原理與架構
- Multi-Cloud for Architects
- Linux操作系統案例教程(第2版)
- Mastering Spring Cloud
- 從零開始學Windows 7
- 深入理解嵌入式Linux設備驅動程序
- Windows 10應用維護辦公大全