閱讀101 返回首頁    go 阿裏雲 go 技術社區[雲棲]


操作係統結構(二)

本節主要介紹操作係統結構和虛擬機。


操作係統結構

A、簡單結構

兩個樣例:

(1)、MS-DOS

利用最小的空間提供更多的功能,沒有仔細劃分模塊,沒有很好地區分接口和功能層次。

 

(2)、UNIX

UNIX係統由內核和係統程序兩個獨立部分組成。內核進一步分為一係列接口和驅動程序。物理硬件之上和係統調用接口之下的所有部分作為內核,內核通過係統調用以提供文件係統、CPU調用、內存管理和其他操作係統功能。

 

B、分層方法

係統模塊化可采用分層法,即操作係統分成若幹層(級)。最底層(層0)為硬件,最高層(層N)為用戶接口。

 

分層法的主要優點在於構造和調試的簡單化。每層隻能利用較低層的功能和服務。這種方法簡化了調試和係統驗證。每層都是利用較低層提供的功能來實現的。該層不必知道如何實現這些功能,它隻需要知道這些操作能做什麼。因此,每層為較高層隱藏了一定的數據結構、操作和硬件的存在。

分層法的主要困難涉及對層的詳細定義以及效率問題。

C、微內核

微內核的概念是由Richard Rashid在卡內基梅隆(Carnegie-Mellon)大學開發Mach操作係統時提出的,目標是建立一個基於消息傳送(message passing)機製的最小內核,以便在此基礎上建造對其它操作係統的模擬層來模擬其它操作係統的特性。以Mach微內核為例,該微內核提供了進程管理、線程管理、內存管理、通信和I/O服務的功能。在Mach微內核基礎上,建立了一些運行在用戶態進程中的操作係統模擬程序,用來模擬4.3 BSDSystem VHP/UXMS-DOS等操作係統的特性。這些模擬程序使得Mach操作係統能夠支持許多運行於其它操作係統上的應用程序,如圖1所示。所以微內核設計帶來的一個重要優點是大大提高了操作係統的兼容性(compatibility)——使得基於微內核的操作係統能夠模擬其它操作係統的特性,從而支持許多運行於其它操作係統上的運用程序。

微內核將所有非基本部分從內核中移走,並將它們實現為係統程序或用戶程序。微內核通常包括最小的進程和內存管理以及通信功能。微內核的主要功能是使客戶程序和運行在用戶空間的各種服務進行通信。通信以消息傳遞形式提供。對於消息傳遞模型,通信進程通過彼此之間交換消息來交換信息。直接或間接地通過一個共同的郵箱,消息可以在進程之間得到交換。在通信前,必須先打開連接。必須知道另一個通信實體的名稱,它可能是同一CPU的另一個進程,也可能是通過與網絡相連的另一計算機上的進程。每個進程也有進程名,它通常轉換成標識符以便操作係統引用。進程建立通信後,通過read messagewrite message係統調用來交換消息。Close connection調用將終止通信。在消息傳遞交換模型中,如果客戶程序訪問一個文件,那麼它必須與文件服務器進行交互。客戶程序和服務器絕不會直接交互,而是通過內核的消息傳遞來通信。

微內核的好處之一在於便於擴充操作係統。同時,微內核也能提供更好的安全性和可靠性。如果一個服務器出錯,那麼操作係統的其他部分不會受影響。但是,微內核必須忍受由於係統功能總開銷的增加而導致係統性能的下降。

D、模塊(宏內核)

麵向對象編程技術生成模塊化內核。這裏,內核有一組核心部件,以及在啟動或運行時對附加服務的動態鏈接。這種方法使用動態加載模塊,並在現代的UNIX,如SolarisLinuxMax OSX中很常見。

例如,Solaris操作係統結構被組織為7個可加載的內核模塊圍繞一個核心內核構成:

 

*調度類;

*文件係統;

*可加載的係統調用;

*可執行格式;

*Streams模塊;

*雜項模塊;

*設備和總線驅動。

模塊化的設計允許內核提供核心服務,也能動態地實現特定的功能。例如,特定的硬件的設備和總線驅動程序可以加載給內核,而對各種文件係統的支持也可作為可加載的模塊加入其中。所得到的結果就好像是一個分層係統,它的每個內核部分都有被定義和保護的接口。但它比分層係統更為靈活,它的任一模塊都能調用任何其他模塊。進一步講,這種方法類似於微內核方法,核心模塊隻有核心功能以及其他模塊加載和通信的相關信息,但這種方法更為高效,因為模塊不需要調用消息傳遞來通信。

蘋果的Mac OS X操作係統采用一種混合結構。Mac OS X采用分層技術構建操作係統,其中一層包括Mach微內核。Max OS X結構如圖。 

 

上層包括應用環境和一組向應用提供的圖形接口的服務。下層是內核環境,主要包括Mach微內核和BSD內核。Mach提供內存管理,支持遠端程序調用(Remote Program Call, RPC)和進程間通信(Inter-Process Communication, IPC)工具,包括消息傳遞和線程調度。而BSD提供了BSD命令行接口,支持網絡和文件係統,以及POSIX API的實現,包括PThread。除了MachBSD外,內核環境為設備驅動的開發和動態加載模塊提供一個I/O工具,應用和工具可直接使用MachBSD方法。

E、虛擬機

維基百科上對虛擬機的定義是:A virtual machine (VM) is a software-based emulation of a computer. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer. 即虛擬機基於軟件的計算機模擬,它運行在計算機硬件上,具有真實計算機的功能。亦虛擬機(Virtual Machine)指通過軟件模擬的具有完整硬件係統功能的、運行在一個完全隔離環境中的完整計算機係統。 

虛擬機的基本思想是單個計算機(CPU、內存、磁盤、網卡)的硬件抽象為幾個不同的執行部件,從而造成一種“幻覺”,仿佛每個獨立的執行環境都在自己的計算機上運行一樣。

 

(A)、實現:

虛擬機方法的主要困難與磁盤係統有關,當物理機器不能為每個虛擬機分配一個磁盤驅動器時,虛擬機軟件提供虛擬磁盤機製,虛擬磁盤除了大小之外,在其他方麵都相同。係統通過在物理磁盤上為虛擬磁盤分配所需要的磁道數來實現小型磁盤。

另外,對於虛擬機,虛擬機軟件由於本身運行在用戶模式,故提供了虛擬用戶模式和虛擬內核模式。這兩種模式都運行在物理用戶模式。在真正機器上引起從用戶模式到內核模式轉換的動作,也必須在虛擬機上引起從虛擬用戶模式到虛擬內核模式的轉換。

(B)、優點:

*每個虛擬機完全獨立於其他虛擬機,沒有安全問題,但同時也沒有直接資源共享。提供共享的實現方法,一是通過共享小型磁盤來共享文件,而是通過定義虛擬機網絡,虛擬機間通過虛擬通信網絡來傳遞消息,該虛擬通信網絡按照物理通信網絡來模擬,但是通過軟件實現。

*虛擬機是用於研究和開發操作係統的好工具。

(C)、實例:

*VMWare

 

*Java虛擬機

 

 JVM為Java程序抽象了底層係統,提供平台無關接口。

 F、服務器-客戶端模式

客戶端/服務器模型是所有網絡應用的基礎。客戶端/服務器分別指參與一次通信的兩個應用實體,客戶端方主動地發起通信請求,服務器方被動地等待通信的建立。

優點:

1、簡化了執行體。可以在用戶態服務器中構造各種各樣的API,而不會有任何衝突或重複;可以很容易地加入新的API。
2、提高了可靠性。每個新的服務運行在內核之外,有自己的存儲空間,這樣可以免受其他服務的幹擾,單個客戶的失敗不會使操作係統的其餘部分崩潰。
3、為應用程序與服務間通過RPC調用進行通信提供了一致的方法,且沒有限製其靈活性。函數樁(function stub)把消息傳遞進程對客戶應用程序隱藏起來,函數樁是為了包裝RPC調用的一小段代碼。當通過一個API訪問一個環境子係統或服務時,位於客戶端應用程序中的函數樁把調用參數包作為一個消息發送給一個服務器子係統執行。
4、為分布式計算提供了適當的基礎。典型地,分布式計算使用客戶/服務器模塊,通過分布的客戶和服務器模塊以及客戶與服務器間的消息交換實現遠程過程調用。對於Windows,本地服務器可以代表本地客戶應用程序給遠程服務器傳遞一條消息,客戶不需要知道請求是在本地還是在遠程得到服務的。實際上,一條請求是在本地還是遠程得到服務,可以基於當前負載條件和動態配置的變化而動態變化。

最後更新:2017-04-03 05:39:25

  上一篇:go Eclipse maven構建springmvc項目
  下一篇:go c++ c# java 區別小匯