03.03 操作系統內核是個什麼東西?

莉所當燃


什麼是內核

  內核是操作系統的最核心最重要的模塊,是操作系統首先加載到內存的部分,在保證儘可能小的內存使用的同時要儘可能多的為操作系統的應用程序以及其他部分提供基本的服務,內核代碼通常是被加載到內存的保護區域,從而防止應用直接訪問內核的內存區域,起到應用和內核隔離的作用,保證了操作系統的可靠穩定。

  嚴格地說,內核並不是計算機操作系統中必要的組成部分,但是為了抽象出統一的硬件操作接口,幾乎每個操作系統都會有一個內核,比如Linux內核就被廣泛的使用在Linux,FreeBSD,Android等操作系統上。

內核負責哪些內容

  內核是連接硬件和應用的橋樑。通常來說,內核負責的內容包括:

  • 內存管理
  • 進程和任務管理
  • 設備管理
  • IO通信
  • 中斷處理
  • 文件系統等等

兩個主要內核架構

1 宏內核架構(Monolithic Kernel)

  在此類內核架構的早期階段,所有基本的系統服務(如進程和內存管理,中斷處理等)都打包到內核空間中的單個模塊中。這種類型的體系結構存在一些嚴重的缺點,例如:內核的大小非常大;可維護性很差;修復一個錯誤或添加某個新功能可能導致重新編譯整個內核,耗費數小時。

  在現代的宏內核架構中,內核由可以動態加載和卸載的不同模塊組成。這種模塊化方法可以輕鬆擴展操作系統的功能。內核的可維護性變得非常容易,因為每當特定模塊中發生更改或錯誤修復後,只需要加載和卸載相關的模塊。沒有必要重新編譯整個內核。此外,這種動態加載模塊的方式為各種平臺(例如嵌入式設備等)裁剪內核變得非常容易,因為我們可以輕鬆卸載我們不想要的模塊。我們熟知的Linux內核就是宏內核。

2 微內核架構(Micro Kernel)

  這種內核架構主要為了解決不斷增長的內核代碼大小的問題,因為在宏內核中不能很有效的進行控制。微內核架構允許在用戶空間運行設備驅動程序,協議棧,文件系統等基本服務。這減少了內核代碼的大小,並且還提高了操作系統的安全性和穩定性,因為我們只在內核中運行最少的代碼。假如網絡服務等基本服務因緩衝區溢出而崩潰,那麼只有網絡服務的內存會被破壞,系統的其餘部分仍然可以運行。

  在微內核架構中,操作系統所有基礎的服務都作為戶空間的一部分,系統中的其他程序通過進程間通信(IPC)使用這些服務。例如:有用於設備管理的驅動,網絡協議棧,文件系統,圖形管理等服務。微內核服務本質上是一些守護進程,除了內核授予它們中的一些特權來與物理內存的某些部分進行交互,否則大多數程序都不能與這些部分進行交互。授予特權的服務(尤其是設備驅動服務)可以直接與硬件交互。

那麼,微內核架構在內核空間中推薦的最低限度是什麼,或者說最基本的微內核需要包括什麼?

  • 內存保護

  • 進程調度

  • 進程間通信(IPC)

除此之外,所有其他基本服務都可以成為用戶空間的一部分,並且可以以服務的形式運行。

  總結,不管是微內核還是宏內核,內核的主要就是在硬件或底層接口和應用程序之間起到橋樑的作用,隔離用戶空間和內核空間。保證了操作系統的穩定性。


拉那烈


簡單來說內核就是特殊權限下執行的一些指令。這些指令大部分是分配資源。

比如內存分配,當程序向系統申請內存的時候,只有系統能查找空閒內存,而程序想直接訪問自己之外的內存區域,會被系統阻止,除非你使用系統規定的方法去查看,不然都會把你禁止。

除了內存分配,還有虛擬內存的管理。有些程序長時間不執行,系統就會把這部分不用的內存放到硬盤,等需要運行的時候再放回內存即可。

內核功能還有CPU調度,以四核CPU為例,同時能運行四個程序,那超過四個程序怎麼辦?這時候系統內核幫忙分配時間,A程序執行幾個毫秒,B程序執行幾個毫秒。

前面提到了各程序之間的內存不能直接訪問,需要系統提供的通信手段去傳輸內存,有些通信方式是經過內核傳遞數據的。

現在的操作系統內核設計都是微內核設計,也就是把很多功能放到內核之外執行。但是CPU調度和內存分配都是必須的。


活在童話裡102211721


\n

{!-- PGC_VIDEO:{"thumb_height": 360, "file_sign": "edb6221b16ad26f58e1e934c1ead4ac0\


分享到:


相關文章: