王利濤課程合集系列:Linux內(nèi)核編程:設(shè)備樹(shù)(device tree)
Linux進(jìn)程
1.采用層次結(jié)構(gòu),每個(gè)進(jìn)程都依賴于一個(gè)父進(jìn)程。內(nèi)核啟動(dòng)init程序作為第一個(gè)進(jìn)程。該進(jìn)程負(fù)責(zé)進(jìn)一步的系統(tǒng)初始化操作。init進(jìn)程是進(jìn)程樹(shù)的根,所有的進(jìn)程都直接或者間接起源于該進(jìn)程。
2.通過(guò)pstree命令查詢。實(shí)際上得系統(tǒng)第一個(gè)進(jìn)程是systemd,而不是init(這也是疑問(wèn)點(diǎn))
3.系統(tǒng)中每一個(gè)進(jìn)程都有一個(gè)唯一標(biāo)識(shí)符(ID),用戶(或其他進(jìn)程)可以使用ID來(lái)訪問(wèn)進(jìn)程。
Linux內(nèi)核源代碼的目錄結(jié)構(gòu)
Linux內(nèi)核源代碼包括三個(gè)主要部分:
1. 內(nèi)核核心代碼,包括第3章所描述的各個(gè)子系統(tǒng)和子模塊,以及其它的支撐子系統(tǒng),例如電源管理、Linux初始化等
2. 其它非核心代碼,例如庫(kù)文件(因?yàn)長(zhǎng)inux內(nèi)核是一個(gè)自包含的內(nèi)核,即內(nèi)核不依賴其它的任何軟件,自己就可以編譯通過(guò))、固件集合、KVM(虛擬機(jī)技術(shù))等
3. 編譯腳本、配置文件、幫助文檔、版權(quán)說(shuō)明等輔助性文件
使用ls命令看到的內(nèi)核源代碼的頂層目錄結(jié)構(gòu),具體描述如下。
include/ ---- 內(nèi)核頭文件,需要提供給外部模塊(例如用戶空間代碼)使用。
kernel/ ---- Linux內(nèi)核的核心代碼,包含了3.2小節(jié)所描述的進(jìn)程調(diào)度子系統(tǒng),以及和進(jìn)程調(diào)度相關(guān)的模塊。