透明了解Linux內(nèi)核結(jié)構(gòu)
你是Linux系統(tǒng)的應(yīng)用者么?你對(duì)Linux內(nèi)核了解么?本文為你介紹Linux內(nèi)核的知識(shí)。與大家一起分享。Linux內(nèi)核主要由五個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)接口,進(jìn)程間通信。
1.進(jìn)程調(diào)度 (SCHED):控制進(jìn)程對(duì)CPU的訪(fǎng)問(wèn)。當(dāng)需要選擇下一個(gè)進(jìn)程運(yùn)行時(shí),由調(diào)度程序選擇最值得運(yùn)行的進(jìn)程。可運(yùn)行進(jìn)程實(shí)際上是僅等待CPU資源的進(jìn)程,如 果某個(gè)進(jìn)程在等待其它資源,則該進(jìn)程是不可運(yùn)行進(jìn)程。Linux使用了比較簡(jiǎn)單的基于優(yōu)先級(jí)的進(jìn)程調(diào)度算法選擇新的進(jìn)程。
2. 內(nèi)存管理(MM)允許多個(gè)進(jìn)程安全的共享主內(nèi)存區(qū)域。Linux的內(nèi)存管理支持虛擬內(nèi)存,即在計(jì)算機(jī)中運(yùn)行的程序,其代碼,數(shù)據(jù),堆棧的總量可以超過(guò)實(shí)際 內(nèi)存的大小,操作系統(tǒng)只是把當(dāng)前使用的程序塊保留在內(nèi)存中,其余的程序塊則保留在磁盤(pán)中。必要時(shí),操作系統(tǒng)負(fù)責(zé)在磁盤(pán)和內(nèi)存間交換程序塊。內(nèi)存管理從邏輯 上分為硬件無(wú)關(guān)部分和硬件有關(guān)部分。硬件無(wú)關(guān)部分提供了進(jìn)程的映射和邏輯內(nèi)存的對(duì)換;硬件相關(guān)的部分為內(nèi)存管理硬件提供了虛擬接口。
3. 虛擬文件系統(tǒng)(VirtualFileSystem,VFS)隱藏了各種硬件的具體細(xì)節(jié),為所有的設(shè)備提供了統(tǒng)一的接口,VFS提供了多達(dá)數(shù)十種不同的文 件系統(tǒng)。虛擬文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動(dòng)程序。邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng),如ext2,fat等,設(shè)備驅(qū)動(dòng)程序指為每一種硬 件控制器所編寫(xiě)的設(shè)備驅(qū)動(dòng)程序模塊。
4.網(wǎng)絡(luò)接口(NET)提供了對(duì)各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持。網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與硬件設(shè)備通訊,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動(dòng)程序。
5.進(jìn)程間通訊(IPC) 支持進(jìn)程間各種通信機(jī)制。
處于中心位置的進(jìn)程調(diào)度,所有其它的子系統(tǒng)都依賴(lài)它,因?yàn)槊總€(gè)子系統(tǒng)都需要掛起或恢復(fù)進(jìn)程。一般情況下,當(dāng)一個(gè)進(jìn)程等待硬件操作完成時(shí),它被掛起;當(dāng)操作 真正完成時(shí),進(jìn)程被恢復(fù)執(zhí)行。例如,當(dāng)一個(gè)進(jìn)程通過(guò)網(wǎng)絡(luò)發(fā)送一條消息時(shí),網(wǎng)絡(luò)接口需要掛起發(fā)送進(jìn)程,直到硬件成功地完成消息的發(fā)送,當(dāng)消息被成功的發(fā)送出 去以后,網(wǎng)絡(luò)接口給進(jìn)程返回一個(gè)代碼,表示操作的成功或失敗。其他子系統(tǒng)以相似的理由依賴(lài)于進(jìn)程調(diào)度。
了解了Linux內(nèi)核,以及Linux的知識(shí)才能更好的應(yīng)用Linux系統(tǒng)。
【編輯推薦】






















