震撼的Linux全景圖:業界成熟的核心架構長什麼樣?

Love&Share發表於2022-03-10

1)Linux怎麼來的?

  • Linus 為了方便訪問大學伺服器中的資源 ,在自己的機器上寫了一個檔案系統和硬碟驅動,這樣就可以把自己需要的資源下載到自己的機器中。隨後linus把這款作業系統雛形開源,成千上萬的程式設計師敲出了linux作業系統。

2)為什麼很多公司企業網路把linux當作伺服器來使用?

  • Linux 系統效能穩定且開源

3)Linux系統中基本思想是什麼?

  • 一切都是檔案:每個檔案都有確定的用途,包括使用者資料、命令、配置引數、硬體裝置等對於作業系統核心而言,都被視為各種型別的檔案。

4)Linux能發展到今天僅僅是靠一群黑客嗎?

  • 由很多世界級的頂尖科技公司聯合開發,如 IBM、甲骨文、紅帽、英特爾、微軟,它們開發 Linux 並向 Linux 社群提供補丁,使 Linux 工作在它們的伺服器上,向客戶出售業務服務。

5)Linux 內部的全景圖長什麼樣?

 

 

 

 

6)現階段我們需要把上圖掌握到什麼程度?

  • 知道大概有5個元件,好幾十模組,每個模組完成什麼功能

7)這麼多模組,模組與模組之間是如何通訊的?

  • 之間的通訊主要是函式呼叫

8)直接使用函式呼叫來通訊有什麼缺點?

  • 一旦有一個函式出現問題,那就係統崩潰。

9)既然確定這麼明顯,那為什麼還要採用這種方式?

  • 因為它的效能極高,作業系統好不好,效能說了算。

10)蘋果作業系統的核心Darwin長什麼樣?

 

 

 

 

  • 它有兩個核心層——Mach 層與 BSD 層。

  • Mach 核心是卡耐基梅隆大學開發的經典微核心,提供最基本的作業系統服務

  • BSD 則是伯克利大學開發的類 UNIX 作業系統,提供一整套作業系統服務。

11)為什麼兩套核心會同時存在呢?

  • Mach是最開始的,但是隨著發展它的效能不能很好的完成業務。為了相容之前的Mach開發的應用和裝置驅動,就保留了它,同時引入新的BSD核心。

12)應用如何使用 Darwin 系統的服務呢?

  • 通過使用者層的框架和庫來呼叫 Darwin 系統 API。

13)那我Darwin 系統如何區分使用者要呼叫的是Mach層的服務還是BSD層的服務?

  • 呼叫時,傳一個號碼進來,如果小於0,則是調Mach核心的服務。如果大於0,則是調BSD核心的服務。

14)Mach 中的元件 Libkern是什麼?

  • 一個庫,提供了很多底層的操作函式,同時支援 C++ 執行環境。

15)IOKit又是什麼?

  • 依賴Libkern庫,管理所有的裝置驅動和核心功能擴充套件模組。

16)Windows 的核心 NT怎樣來的?

  • 一開始windows的核心是MS-DOS,沒有介面,它也沒有硬體保護機制,後來微軟基於它研發的圖形介面不穩定,動不動就當機。競爭對手也用上了類UNIX作業系統,所以微軟必須搞一套自己的作業系統來上市競爭--Windows NT就誕生了。

17)什麼是Windows NT?

  • 微軟於 1993 年推出的面向工作站、網路伺服器和大型計算機的網路作業系統,也可做 PC 作業系統。是一款全新從零開始開發的新作業系統,並應用了現代硬體的所有特性,“NT”所指的便是“新技術”(New Technology)。

18)NT 核心架構圖長什麼樣?

 

 

 

 

  • 上圖中我們只關注核心模式下的東西,也就是傳統意義上的核心。

18)為什麼核心之下是硬體抽象層 HAL?

  • 不同的硬體平臺只要提供對應的 HAL 就可以移植系統了

19)NT核心的精妙之處在哪裡?

  • 各層次分明,各個執行體互相獨立,這種“高內聚、低偶合”的特性,正是檢驗一個軟體工程是否優秀的重要標準。

20)Linux、Darwin-XNU 和 Windows 的區別是什麼?

  • Linux 效能良好,結構異常複雜,不利於問題的排查和功能的擴充套件。

  • Darwin-XNU 和 Windows 結構良好,層面分明,利於功能擴充套件,不容易產生問題且效能穩定。

21)Windows NT 核心屬於哪種架構型別?

  • NT是混合核心,核心相較於linux來說小,但是仍有一些模組在核心,也有相當多的模組在使用者態。 架構額外清晰,也難怪幾十年迭代都未曾大改大變

相關文章