“從一個業(yè)內(nèi)人士的視角來欣賞和理解Linux內(nèi)核的設(shè)計(jì)和實(shí)現(xiàn)之美。”
內(nèi)核空間:內(nèi)核獨(dú)立于普通應(yīng)用程序,它一般處于系統(tǒng)態(tài),擁有受保護(hù)的內(nèi)存空間和訪問硬件設(shè)備的所有權(quán)限,這種系統(tǒng)態(tài)和被保護(hù)起來的內(nèi)存空間,統(tǒng)為內(nèi)核空間。當(dāng)內(nèi)核運(yùn)行時,系統(tǒng)以內(nèi)核態(tài)進(jìn)入內(nèi)核空間執(zhí)行。
用戶空間:應(yīng)用程序在用戶空間執(zhí)行,它們只能看到允許它們使用的部分系統(tǒng)資源,并且只使用某些特定的系統(tǒng)功能,不能直接訪問硬件,也不能訪問內(nèi)核劃給別人的內(nèi)在范圍,還有其他一此使用限制。當(dāng)執(zhí)行一個普通用戶程序時,系統(tǒng)將以用戶態(tài)進(jìn)入用戶空間執(zhí)行。
應(yīng)用程序與內(nèi)核通信:當(dāng)一個應(yīng)用程序執(zhí)行一條系統(tǒng)調(diào)用,我們說內(nèi)核正在代其執(zhí)行。如果進(jìn)一步解釋,在這種情況下,應(yīng)用程序被稱為通過系統(tǒng)調(diào)用在內(nèi)核空間運(yùn)行,而內(nèi)核被稱為運(yùn)行于進(jìn)程上下文中,這種交互關(guān)系----應(yīng)用程序通過系統(tǒng)調(diào)用界面陷入內(nèi)核----是應(yīng)用程序完成其工作的基本行為方式。
? ? ? ? ? ? ? 每個處理器在任何指定時間點(diǎn)上的活動必然為下列三者之一
1.運(yùn)行于用戶空間,執(zhí)行用戶進(jìn)程。
2.運(yùn)行于內(nèi)核空間,處于進(jìn)程上下文,代表某個特定的進(jìn)程執(zhí)行。
3.運(yùn)行于內(nèi)術(shù)空間,處于中斷上下文,與任何進(jìn)程無關(guān),處理某個特定的中斷。

單內(nèi)核與微內(nèi)核設(shè)計(jì)之比較:
單內(nèi)核:所謂單內(nèi)核就是把它從整體上作為一個單獨(dú)的大過程來實(shí)現(xiàn),同時也運(yùn)行在一個 單獨(dú)的地址空間上。這樣的內(nèi)核通常以單個靜態(tài)二進(jìn)制文件的形式存放于磁盤中。所有內(nèi)核服務(wù)都在這樣的一個大內(nèi)核地址空間上運(yùn)行。內(nèi)核之間的通信是微不足道的,因?yàn)榇蠹叶歼\(yùn)行在內(nèi)核態(tài),并身處同一地址空間:內(nèi)核可以直接調(diào)用函數(shù)。這種模式的支持者認(rèn)為單模塊具有簡單和性能高的特點(diǎn)。大多數(shù)的UNIX系統(tǒng)都是這種設(shè)計(jì)。
微內(nèi)核:微內(nèi)核的功能被劃分為多個獨(dú)立的過程,每個過程叫做一個服務(wù)器。理想情況下,只有強(qiáng)烈請求特權(quán)服務(wù)的服務(wù)器才運(yùn)行在特權(quán)模式下,其他服務(wù)器都運(yùn)行在用戶空間。
Linux是一個單內(nèi)核,但它也汲取了微內(nèi)核的精華:其引以為豪的是模塊化設(shè)計(jì)、搶占式內(nèi)核、支持內(nèi)核線程以及動態(tài)裝載內(nèi)核模塊的能力。Linux還避其微內(nèi)核設(shè)計(jì)上性能損失的缺陷,讓所有事情都運(yùn)行在內(nèi)核態(tài),直接調(diào)用函數(shù),無須消息傳遞。
Linux內(nèi)核版本: 穩(wěn)定版&開發(fā)版
? ? 穩(wěn)定版(次版本號為偶數(shù)):具有工業(yè)級的強(qiáng)度,可以廣泛地應(yīng)用和部署。修正了一些BUG或 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?是加入了一些新的設(shè)備驅(qū)動程序。?
? ? 開發(fā)版(次版本號為奇數(shù)):內(nèi)核中許多東西變化得都很快,而且由于開發(fā)者不斷試驗(yàn)新的解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?決方案,內(nèi)核常常發(fā)生劇烈的變化。
