一張圖看懂Linux內核

1. 前言

本文主要講解什麼是Linux內核,以及通過多張圖片展示Linux內核的作用與功能,以便於讀者能快速理解什麼是Linux內核,能看懂Linux內核。

擁有超過1300萬行的代碼,Linux內核是世界上最大的開源項目之一,但是內核是什麼,它用於什麼?

一張圖看懂Linux內核

一張圖看懂Linux內核

一張圖看懂Linux內核

Linux內核是什麼

2. 什麼是內核

內核是與計算機硬件接口的易替換軟件的最低級別。它負責將所有以“用戶模式”運行的應用程序連接到物理硬件,並允許稱為服務器的進程使用進程間通信(IPC)彼此獲取信息。

3. 內核還要分種類?

是的,沒錯。

3.1 微內核

微內核只管理它必須管理的東西:CPU、內存和IPC。計算機中幾乎所有的東西都可以被看作是一個附件,並且可以在用戶模式下處理。微內核具有可移植性的優勢,因為只要操作系統仍然試圖以相同的方式訪問硬件,就不必擔心您是否更改了視頻卡,甚至是操作系統。微內核對內存和安裝空間的佔用也非常小,而且它們往往更安全,因為只有特定的進程在用戶模式下運行,而用戶模式不具有管理員模式的高權限。

一張圖看懂Linux內核

微內核

3.1.1 Pros

  • 可移植性
  • 安裝佔用空間小
  • 小內存佔用
  • 安全

3.1.2 Cons

  • 通過驅動程序,硬件更加抽象
  • 硬件可能反應較慢,因為驅動程序處於用戶模式
  • 進程必須在隊列中等待才能獲得信息
  • 進程不能在不等待的情況下訪問其他進程

3.2 單內核

單內核與微內核相反,因為它們不僅包含CPU、內存和IPC,而且還包含設備驅動程序、文件系統管理和系統服務器調用等內容。單內核更擅長於訪問硬件和多任務處理,因為如果一個程序需要從內存或運行中的其他進程中獲取信息,那麼它就有一條更直接的線路來訪問信息,而不需要在隊列中等待來完成任務。但是,這可能會導致問題,因為在管理模式下運行的東西越多,如果行為不正常,就會有越多的東西導致系統崩潰。

一張圖看懂Linux內核

單內核

3.2.1 Pros

  • 更直接地訪問程序的硬件
  • 流程之間更容易通信
  • 如果支持您的設備,它應該不需要額外安裝就可以工作
  • 進程反應更快,因為沒有等待處理器時間的隊列

3.2.2 Cons

  • 較大安裝體積
  • 較大內存佔用
  • 不太安全,因為所有操作都在管理模式下運行
一張圖看懂Linux內核

內核對比monolithic_vs_microkernel

4. 混合的內核

混合內核能夠選擇在用戶模式下運行什麼,以及在管理模式下運行什麼。通常情況下,設備驅動程序和文件系統I/O將在用戶模式下運行,而IPC和服務器調用將保持在管理器模式下。這是兩全其美,但通常需要硬件製造商做更多的工作,因為所有驅動程序的責任都由他們來承擔。它還可能存在一些與微內核固有的延遲問題。

一張圖看懂Linux內核

混合的內核

4.1 Pros

  • 開發人員可以選擇什麼在用戶模式下運行,什麼在管理模式下運行
  • 比單片內核更小的安裝佔用空間
  • 比其他型號更靈活

4.2 Cons

  • 會遭受與微內核相同的進程延遲
  • 設備驅動程序需要由用戶管理(通常)

5. Linux內核文件在哪裡

Ubuntu中的內核文件存儲在/boot文件夾中,稱為vmlinux -version。vmlinuz這個名字來自於unix世界,早在60年代,他們就把內核簡單地稱為“unix”,所以當內核在90年代首次開發時,Linux就開始把內核稱為“Linux”。

一張圖看懂Linux內核

Linux內核文件在哪裡

當開發虛擬內存以便更容易地進行多任務處理時,將“vm”放在文件的前面,以顯示內核支持虛擬內存。有一段時間,Linux內核被稱為vmlinux,但是內核變得太大,無法裝入可用的引導內存,因此壓縮了內核映像,並將末尾的x更改為z,以顯示它是用zlib壓縮的。並不總是使用相同的壓縮,通常用LZMA或BZIP2替換,一些內核簡單地稱為zImage。

版本號將採用A.B.C.格式D在。B可能是2.6,C是您的版本,D表示您的補丁或補丁。

一張圖看懂Linux內核

linux版本號

在/boot文件夾中還有其他非常重要的文件,稱為initrd.img-version、system.map-version, config-version。initrd文件用作一個小RAM磁盤,用於提取和執行實際的內核文件。這個系統。map文件用於內核完全加載之前的內存管理,配置文件告訴內核在編譯內核映像時要加載哪些選項和模塊。6. Linux內核體系結構

因為Linux內核是單片的,所以它比其他類型的內核佔用空間最大,複雜度也最高。這是一個設計特性,在Linux早期引起了相當多的爭論,並且仍然帶有一些與單內核固有的相同的設計缺陷。

一張圖看懂Linux內核

Linux內核體系結構

為了解決這些缺陷,Linux內核開發人員所做的一件事就是使內核模塊可以在運行時加載和卸載,這意味著您可以動態地添加或刪除內核的特性。這不僅可以向內核添加硬件功能,還可以包括運行服務器進程的模塊,比如低級別虛擬化,但也可以替換整個內核,而不需要在某些情況下重啟計算機。

想象一下,如果您可以升級到Windows服務包,而不需要重新啟動……

7. 內核模塊

如果Windows已經安裝了所有可用的驅動程序,而您只需要打開所需的驅動程序怎麼辦?這本質上就是內核模塊為Linux所做的。內核模塊,也稱為可加載內核模塊(LKM),對於保持內核在不消耗所有可用內存的情況下與所有硬件一起工作是必不可少的。

一張圖看懂Linux內核

內核模塊

模塊通常向基本內核添加設備、文件系統和系統調用等功能。lkm的文件擴展名是.ko,通常存儲在/lib/modules目錄中。由於模塊的特性,您可以通過在啟動時使用menuconfig命令將模塊設置為load或not load,或者通過編輯/boot/config文件,或者使用modprobe命令動態地加載和卸載模塊,輕鬆定製內核。

第三方和封閉源碼模塊在一些發行版中是可用的,比如Ubuntu,默認情況下可能無法安裝,因為這些模塊的源代碼是不可用的。該軟件的開發人員(即nVidia、ATI等)不提供源代碼,而是構建自己的模塊並編譯所需的.ko文件以便分發。雖然這些模塊像beer一樣是免費的,但它們不像speech那樣是免費的,因此不包括在一些發行版中,因為維護人員認為它通過提供非免費軟件“汙染”了內核。

內核並不神奇,但對於任何正常運行的計算機來說,它都是必不可少的。Linux內核不同於OS X和Windows,因為它包含內核級別的驅動程序,並使許多東西“開箱即用”。希望您能對軟件和硬件如何協同工作以及啟動計算機所需的文件有更多的瞭解。

8. 總結

通過本文,您應該較好地理解什麼是Linux內核以及通過一張或者多張圖看懂Linux內核的作用了吧?

https://www.linuxrumen.com/rmxx/1406.html

點擊瞭解更多,快速查看更多的技術文章列表。

"


分享到:


相關文章: