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來說小,但是仍有一些模塊在內核,也有相當多的模塊在用戶態。 架構額外清晰,也難怪幾十年迭代都未曾大改大變