Linux內(nèi)核學(xué)習(xí)(一)

“從一個業(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),處理某個特定的中斷。

應(yīng)用程序、內(nèi)核與硬件的關(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ā)生劇烈的變化。


Kernel版本命令規(guī)則
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 又來到了一個老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個問題開始,來談?wù)劜?..
    tangsl閱讀 4,322評論 0 23
  • 首先來一張圖說明GNU/Linux的基本的體系結(jié)構(gòu): 用戶模式和內(nèi)核模式 執(zhí)行進(jìn)程的模式有兩種:用戶模式和內(nèi)核模式...
    Joe_HUST閱讀 2,278評論 0 2
  • Android跨進(jìn)程通信IPC整體內(nèi)容如下 1、Android跨進(jìn)程通信IPC之1——Linux基礎(chǔ)2、Andro...
    隔壁老李頭閱讀 16,042評論 19 113
  • パット一目に見てだけで、 心が持っていかれました。
    okubyou閱讀 181評論 0 0
  • 王牌對王牌雖然說我以前看過,但這次我才是真正的看懂了,看出了它的好看之處。 首先我對整個劇情設(shè)計(jì)的套路是佩服得五體...
    王澤宇_閱讀 563評論 0 0

友情鏈接更多精彩內(nèi)容