linux内核源码树
linux內(nèi)核源碼樹(shù)掃盲分析
sudo apt-get install tree //下載tree tree //輸入指令(該指令可以檢查第三方工具包里的內(nèi)容是否完整)可以看到如圖的樹(shù)狀結(jié)構(gòu):
linux內(nèi)核源碼:
為什么內(nèi)核大約1.3w個(gè)c文件,1100w行代碼?
linux是一個(gè)開(kāi)源的,支持多架構(gòu)多平臺(tái)代碼,可移植性非常高。但是linux內(nèi)核編譯出來(lái)一般就若干M,因?yàn)橹С侄嗥脚_(tái),多架構(gòu),所以編譯之前要配置,配置成適合目標(biāo)平臺(tái)來(lái)用。代碼編譯出來(lái)是給一個(gè)平臺(tái)一個(gè)架構(gòu)來(lái)用的,很多代碼是不參與編譯的。
例如支持:
ARM架構(gòu):
比如以下平臺(tái):
?????? ?海思 ,友善之臂 ,RK ,樹(shù)莓派, nanopi
X86架構(gòu)
PowerPc架構(gòu)
Mips架構(gòu)
后兩個(gè)架構(gòu)現(xiàn)在占得市場(chǎng)份額較小。
Linux內(nèi)核源代碼目錄樹(shù)結(jié)構(gòu)
arch(和架構(gòu)相關(guān)):包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺(tái)占一個(gè)相應(yīng)的目錄。和32位PC相關(guān)的代碼存放在i386目錄下,其中比較重要的包括kernel(內(nèi)核核心部分)、mm(內(nèi)存管理)、math-emu(浮點(diǎn)單元仿真)、lib(硬件相關(guān)工具函數(shù))、boot(引導(dǎo)程序)、pci(PCI總線)和power(CPU相關(guān)狀態(tài))。
block:部分塊設(shè)備驅(qū)動(dòng)程序。
crypto:常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗(yàn)算法。
Documentation:關(guān)于內(nèi)核各部分的通用解釋和注釋。
drivers:設(shè)備驅(qū)動(dòng)程序,每個(gè)不同的驅(qū)動(dòng)占用一個(gè)子目錄。
fs:各種支持的文件系統(tǒng),如ext、fat、ntfs等。
include:頭文件。其中,和系統(tǒng)相關(guān)的頭文件被放置在linux子目錄下。
init:內(nèi)核初始化代碼(注意不是系統(tǒng)引導(dǎo)代碼)。
ipc:進(jìn)程間通信的代碼。
kernel:內(nèi)核的最核心部分,包括進(jìn)程調(diào)度、定時(shí)器等,和平臺(tái)相關(guān)的一部分代碼放在arch/*/kernel目錄下。
lib:庫(kù)文件代碼。
mm:內(nèi)存管理代碼,和平臺(tái)相關(guān)的一部分代碼放在arch/*/mm目錄下。
net:網(wǎng)絡(luò)相關(guān)代碼,實(shí)現(xiàn)了各種常見(jiàn)的網(wǎng)絡(luò)協(xié)議。
scripts:用于配置內(nèi)核文件的腳本文件。
security:主要是一個(gè)SELinux的模塊。
sound:常用音頻設(shè)備的驅(qū)動(dòng)程序等。
usr:實(shí)現(xiàn)了一個(gè)cpio。
在i386體系下,系統(tǒng)引導(dǎo)將從arch/i386/kernel/head.s開(kāi)始執(zhí)行,并進(jìn)而轉(zhuǎn)移到init/main.c中的main()函數(shù)初始化內(nèi)核。
參考博客:
https://www.cnblogs.com/senior-engineer/p/4929703.html
總結(jié)
以上是生活随笔為你收集整理的linux内核源码树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ListView控件简单用法
- 下一篇: java学习(111):日期时间格式化