更新時間:2020-12-16 17:30:05 來源:動力節(jié)點 瀏覽1837次
在Linux的術(shù)語中被稱為“內(nèi)核”,也可以稱為“核心”的是控制計算機硬件進行各種工作的操作系統(tǒng)。Linux內(nèi)核實現(xiàn)了很多重要的體系結(jié)構(gòu)屬性,這離不開Linux內(nèi)核的各個組成部分的分工協(xié)作,本文我們就來一一介紹Linux內(nèi)核組成部分。
Linux內(nèi)核組成部分主要分為以下7個部分:存儲管理、進程管理、定時器、進程間通信、虛擬文件系統(tǒng),網(wǎng)絡(luò)接口以及設(shè)備驅(qū)動程序等。
1、內(nèi)存管理
內(nèi)存管理主要完成的是如何合理有效地管理整個系統(tǒng)的物理內(nèi)存,同時快速響應(yīng)內(nèi)核各個子系統(tǒng)對內(nèi)存分配的請求。Linux內(nèi)存管理支持虛擬內(nèi)存,而多余出的這部分內(nèi)存就是通過磁盤申請得到的,平時系統(tǒng)只把當(dāng)前運行的程序塊保留在內(nèi)存中,其他程序塊則保留在磁盤中。在內(nèi)存緊缺時,內(nèi)存管理負(fù)責(zé)在磁盤和內(nèi)存間交換程序塊。
2、進程管理
進程管理主要控制系統(tǒng)進程對CPU的訪問。當(dāng)需要某個進程運行時,由進程調(diào)度器根據(jù)基于優(yōu)先級的調(diào)度算法啟動新的進程。:Linux支持多任務(wù)運行,那么如何在一個單CPU上支持多任務(wù)呢?這個工作就是由進程調(diào)度管理來實現(xiàn)的。在系統(tǒng)運行時,每個進程都會分得一定的時間片,然后進程調(diào)度器根據(jù)時間片的不同,選擇每個進程依次運行,例如當(dāng)某個進程的時間片用完后,調(diào)度器會選擇一個新的進程繼續(xù)運行。由于切換的時間和頻率都非常的快,由此用戶感覺是多個程序在同時運行,而實際上,CPU在同一時間內(nèi)只有一個進程在運行,這一切都是進程調(diào)度管理的結(jié)果。
3、定時器
內(nèi)核必須能夠測量時間以及不同時間點的時差,進程調(diào)度就會用到該功能。 jiffies是一個合適的時間坐標(biāo)。名為jiffies_64和jiffies(分別是64位和32位)的全局變量,會按恒定的時間間隔遞增。每種計算機底層體系結(jié)構(gòu)都提供了一些執(zhí)行周期性操作的手段,通常的形式是定時器中斷計時的周期是可以動態(tài)改變的。在沒有或無需頻繁的周期性操作的情況下,周期性地產(chǎn)生定時器中斷是沒有意義的,這會阻止處理器降低耗電進入睡眠狀態(tài)。動態(tài)改變計時周期對于供電受限的系統(tǒng)是很有用的,例如筆記本電腦和嵌入式系統(tǒng)
4、進程間通信
進程間通信主要用于控制不同進程之間在用戶空間的同步、數(shù)據(jù)共享和交換。由于不用的用戶進程擁有不同的進程空間,因此進程間的通信要借助于內(nèi)核的中轉(zhuǎn)來實現(xiàn)。一般情況下,當(dāng)一個進程等待硬件操作完成時,會被掛起。當(dāng)硬件操作完成,進程被恢復(fù)執(zhí)行,而協(xié)調(diào)這個過程的就是進程間的通信機制。
5、虛擬文件系統(tǒng)
Linux內(nèi)核中的虛擬文件系統(tǒng)用一個通用的文件模型表示了各種不同的文件系統(tǒng),這個文件模型屏蔽了很多具體文件系統(tǒng)的差異,使Linux內(nèi)核支持很多不同的文件系統(tǒng),這個文件系統(tǒng)可以分為邏輯文件系統(tǒng)和設(shè)備驅(qū)動程序:邏輯文件系統(tǒng)指Linux所支持的文件系統(tǒng),例如ext2、ext3和fat等;設(shè)備驅(qū)動程序指為每一種硬件控制器所編寫的設(shè)備驅(qū)動程序模塊。
6、網(wǎng)絡(luò)接口
網(wǎng)絡(luò)接口提供了對各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的實現(xiàn)和各種網(wǎng)絡(luò)硬件的支持。網(wǎng)絡(luò)接口一般分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動程序。網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議。網(wǎng)絡(luò)設(shè)備驅(qū)動程序則主要負(fù)責(zé)與硬件設(shè)備進行通信,每一種可能的網(wǎng)絡(luò)硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動程序。
7、設(shè)備驅(qū)動程序
Device Drivers,設(shè)備驅(qū)動,用于控制所有的外部設(shè)備及控制器。由于存在大量不能相互兼容的硬件設(shè)備(特別是嵌入式產(chǎn)品),所以也有非常多的設(shè)備驅(qū)動。因此,Linux內(nèi)核中將近一半的Source Code都是設(shè)備驅(qū)動,大多數(shù)的Linux底層工程師(特別是國內(nèi)的企業(yè))都是在編寫或者維護設(shè)備驅(qū)動,而無暇估計其它內(nèi)容(它們恰恰是Linux內(nèi)核的精髓所在)。
同時,Linux 還是一個動態(tài)內(nèi)核,支持動態(tài)添加或刪除軟件組件,被稱為動態(tài)可加載內(nèi)核模塊。Linux內(nèi)核7個組成部分缺一不可,相輔相成,共同構(gòu)建出了Linux內(nèi)核這一功能強大的體系結(jié)構(gòu)。本站的Linux教程中,對Linux內(nèi)核的各種工作機制都有詳細(xì)的講解,花費少量時間就能徹底掌握。
初級 202925
初級 203221
初級 202629
初級 203743