Linux 內核剖析

操作系統的運行機制

在操作系統中,通常CPU執行兩種不同性質的程序:一種是操作系統內核程序;另一種是用戶自編程序或系統外層的應用程序。對操作系統而言,這兩種程序作用不同,前者是后者的管理者,因此 “管理程序”要執行一些特權指令,而“被管理程序”出于安全考慮不能執行這些指令。所謂特權指令,是指計算機中不允許用戶直接使用的指令,如I/O指令,置中斷指令,存取用于內存保護的寄存器等指令。操作系統在具體實現上劃分了用戶態(目態)和核心態(管態)以嚴格區分兩類程序。

什么是內核

內核,是一個操作系統的核心。是基于硬件的第一層軟件擴充,提供操作系統的最基本的功能,是操作系統工作的基礎,它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性。

現代操作系統設計中,為減少系統本身的開銷,往往將一些與硬件緊密相關的(如中斷處理程序、設備驅動程序等)、基本的、公共的、運行頻率較高的模塊(如時鐘管理、進程調度等)以及關鍵性數據結構獨立開來,使之常駐內存,并對他們進行保護。通常把這一部分稱之為操作系統的內核。

Linux 內核簡介

讓我們一種圖來展示Linux操作系統的體系結構。可以從兩個層次上來考慮操作系統。

Screen Shot 2018-05-10 at 11.53.46 PM.png

用戶空間(User Space)
這是用戶應用程序執行的地方

  • 用戶程序(User Application)
  • 標準C庫(CNU C Library):它提供了連接內核的系統調用接口,還提供了在用戶空間應用程序和內核之間進行轉換的機制。這點非常重要,因為內核和用戶空間的應用程序使用的是不同的保護地址空間。每個用戶空間的進程都使用自己的虛擬地址空間,而內核則占用單獨的地址空間。

內核空間(Kernel)
Linux 內核可以進一步劃分成 3 層

  • 系統調用接口(System Call Interface):實現了一些基本的功能,例如 read 和 write。
  • 內核代碼(Kernel):獨立于體系結構的內核代碼,這些代碼是 Linux 所支持的所有處理器體系結構所通用的。
  • 依賴于體系結構的代碼:構成了通常稱為 BSP(Board Support Package)的部分。這些代碼用作給定體系結構的處理器和特定于平臺的代碼。

Linux 內核的主要子系統

Linux內核主要有5個子系統組成:進程調度、內存管理、虛擬文件系統、網絡接口和進程間通信。

進程調度(SCHED)

控制進程對CPU的訪問。當需要選擇下一個進程運行時,由調度程序選擇最值得運行的進程。可運行進程實際上是指那些僅等待CPU資源的進程,如果某個進程在等待其他資源,則該進程是不可運行進程。Linux使用了比較簡單的基于優先級的進程調度算法選擇新的進程。

內存管理 (MM)

允許多個進程共享主內存區域。Linux的內存管理支持虛擬內存,即在計算機中運行的程序,其代碼、數據、堆棧的總量可以超過實際內存的大小,操作系統只是把當前使用的程序塊保留在內存中,其余的程序塊則保留在磁盤中。必要時,操作系統只是把當前使用的程序塊保留在內存中,其余的程序塊則保留在磁盤中。必要時,操作系統負責在磁盤和內存間交換程序塊。

虛擬文件系統 (Virtual File System, VFS)

隱藏了各種硬件的具體細節,為所有的設備提供了同意的接口,VFS提供了多達數十種不同的文件系統。虛擬文件可以分為邏輯文件系統和設備驅動程序。邏輯文件系統指的是 Linux所支持的文件系統,如EXT2,FAT等,設備驅動程序指為每一種硬件控制器所編寫的設備驅動程序模塊。

網絡接口 (NET)

提供了對各種網絡標準的存取和各種網絡硬件的支持。網絡接口可分為網絡協議和網絡驅動程序。網絡協議負責實現每一種可能的網絡傳輸協議。網絡設備驅動程序負責與硬件設備通信,每一種可能的硬件設備都有相應的設備驅動程序。

進程間通信 (IPC)

支持進程間各種通信機制。處于中心位置的進程調度,所有其它的子系統都依賴它,因為每個子系統都需要掛起或恢復進程。一般情況下,當一個進程等待硬件操作完成時,它被掛起;當操作真正完成時,進程被恢復執行。例如,當一個進程通過網絡發送一條消息時,網絡接口需要掛起發送進程,直到硬件成功地完成消息的發送,當消息被成功的發送出去以后,網絡接口給進程返回一個代碼,表示操作的成功或失敗。其他子系統以相似的理由依賴于進程調度。

一張完整的 Linux 內核運行原理圖

image
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容

  • 1. 基礎知識 1.1、 基本概念、 功能 馮諾伊曼體系結構1、計算機處理的數據和指令一律用二進制數表示2、順序執...
    yunpiao閱讀 5,377評論 1 22
  • 操作系統概論 操作系統的概念 操作系統是指控制和管理計算機的軟硬件資源,并合理的組織調度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 11,996評論 3 34
  • 首先來一張圖說明GNU/Linux的基本的體系結構: 用戶模式和內核模式 執行進程的模式有兩種:用戶模式和內核模式...
    Joe_HUST閱讀 2,122評論 0 2
  • 大學的時候,幫朋友寫的操作系統調研的作業,最近整理過去的文檔時候偶然發現,遂作為博客發出來。 從串口驅動到Linu...
    free_will閱讀 7,415評論 7 59
  • 明天你不會得到更多,但你會明白更多。明日你可能要付出更多,你是否害怕退縮?無論如何我對明天持樂觀態度,因為我不得不...
    樓臺花舍閱讀 465評論 7 12