操作系統的結構設計

操作系統的結構設計

操作系統的結構設計有兩層含義,一是研究操作系統的整體結構;二是研究操作系統程序的局部結構,包括數據結構和控制結構。

操作系統的構件

把組成操作系統程序的基本單位稱作操作系統的構件。構成操作系統的基本單位除了內核之外,主要還有進程、線程、類程和管程。

內核

現代操作系統中大都採用了進程的概念,爲了解決系統的併發性、共享性和隨機性,並使進程能協調地工作,單靠計算機硬件提供的功能是十分不夠的。進程的調度目前就不能只用硬件來實現,系統必須有一個軟件部分能對硬件處理器及有關資源進行首次改造,以便給進程的執行提供良好運行環境,這個部分就是操作系統的內核。

由於操作系統設計的目標和環境不同,內核的大小和功能有很大差別。有些設計希望把內核做得儘量小僅具有極少的必須功能,成爲微內核。其它功能都核外實現,通過微內核提供的消息傳遞機制完成其餘功能模塊間的聯繫。操作系統的一個基本設計問題是內核的功能設計,微內核結構是現代操作系統的特徵之一,這種方法把內核和核外服務程序的開發分離,可爲特定應用程序或運行環境要求定製服務程序,具有較好的可伸縮性,簡化了實現,提供了靈活性。一般而言,內核必須提供以下三方面功能:

中斷處理

中斷處理是內核中最基本的功能,也是操作系統尤其是多道程序設計並行性的基礎。爲了縮短屏蔽中斷的時間,提高系統的併發性,通常它僅僅進行有限的處理,將其餘任務交給在內核之外的特殊用戶態進程完成。當中斷時間產生時,先由內核截獲並轉向中斷處理例行程序進行基本處理:它分析中斷事件的類型和性質,進行必要的狀態修改,然後交給內核之外的進程去處理。例如:產生外圍設備結束中斷事件時,內核首先分析是否正常結束,如果是正常結束則釋放等待該外圍傳輸的進程,否則應啓動相應設備管理進程進行異常處理。

短程調度

主要職能分配處理器,當系統中發生了一個事件以後,可能一個件後才能要讓出處理器,而另一個進程要獲得處理器,短程調度按照一定策略管理處理器的轉讓,以及完成保護和恢復現場的工作。由於它是協調進程競爭處理器資源的程序,所以它不是進程而是內核中的一個程序。

原語管理

原語是內核中實現某一功能的不可中斷過程,爲了協調進程完成通信、併發執行和共享資源,各種原語是必不可少的。通信原語爲進程相互傳遞消息,同步原語能協調併發進程之間的種種制約關係。

內核的執行屬性

內核是由中斷驅動的

只有當發生中斷事件後由硬件交換程序狀態字才引出操作系統的內核進行中斷處理,且在處理完中斷事件後內核自行退出。

內核的執行是連續的

在內核運行期間不能插入內核以外的程序執行,因而,能保證在一個連續的時間間隔內完成任務。

內核在屏蔽中斷狀態下執行

在處理某個中斷時,爲避免中斷的嵌套可能引起的錯誤,必須屏蔽該級中斷。有時爲了處理簡單,把其它一些中斷也暫時屏蔽了。

內核可以使用特權指令

現代計算機都提供常態和特態等多種機器工作狀態,有一類指令稱特權指令,只允許在特態下使用。規定這類指令只允許內核使用,可防止系統出現混亂。

內核是操作系統對裸機的第一次改造,內核和裸機組成了一臺虛擬機,進程就在這臺虛擬機上運行,它比裸機功能更強大

  • 虛擬機沒有中斷,進程的設計者不再需要有硬件中斷的概念,用戶進程執行中無需處理中斷

  • 虛擬機爲每個進程挑提供了一臺虛擬處理器,每個進程就如同在各自私有的處理器上順序推進,實現了多個進程的併發執行。

  • 虛擬機爲進程提供了功能較強的指令系統,即它們能夠使用機器非特權指令,系統調用和原語所組成的新的指令系統。

進程

進程是併發程序設計的一個工具,一種實現,併發程序設計支撐了多道程序設計。由於進程能確切、動態地刻畫計算機系統內部的併發性,更好地解決系統資源的共享性,所以在操作系統的發展史上,進程概念被較早地引入了系統。

採用進程概念使得操作系統結構變得清晰:

  • 一個進程到另一個進程的控制轉移由進程調度機構統一管理,不能雜亂無章,隨意進行。

  • 進程之間的交互如信號發送、消息傳遞和同步互斥等活動由通信及同步機制完成,從而進程無法有意無意破壞其他進程的數據,各個進程相互獨立相互隔離,提高了系統的安全性和可靠性。

  • 進程較好刻畫了系統的併發性,動態描述出系統的執行過程。

線程

進程是操作系統中資源分配以及系統調度的基本單位,由於每個進程擁有自己獨立的存儲空間和運行環境,進程和進程之間併發性粒度較粗,進程通信和切換的系統開銷相當大,限制了系統中併發執行的進程數目。要更好地發揮硬件提供的額能力,要實現複雜的各種併發應用,降低併發性代價。

在一個多線程環境中,進程是系統進行保護和資源分配的單位,而線程則是進程中一條執行路徑,每個進程中允許有多個並行執行的路徑,而線程纔是系統進行調度的獨立單位。所以,可以把線程也看作一種構件,它是組成構件的更小的構件。

在一個進程中包含有多個可併發執行的控制流,而不是把多個控制流分散在多個進程中,這是併發多線程程序設計與鬢髮多進程設計的主要不同。

管程

管程是管理共享資源的程序,對管程的調用表示對共享資源的請求與釋放。管程可以被多個進程或管程嵌套調用,但它們只能互斥地訪問管程。管程應包含條件變量,當條件不滿足時,可以通過對條件變量做延遲操作使調用進程等待,直到另一個進程調用管程過程並執行一個釋放操作爲止。

管程和進程的區別

  • 管程定義的是公用數據結構,而進程定義的是私有數據結構

  • 管程是把共享變量上的同步操作集中起來,而臨界區卻分散在每個進程中

  • 管程是爲管理共享資源而建立的,進程主要是爲實現系統的併發性而引入的

  • 管程是語言或操作系統的成分,不必創建或撤銷,而進程有生命週期,由創建而產生,由撤銷和消亡。

客戶端/服務器與微內核結構的操作系統

客戶端/服務器與微內核結構

C/S結構的思想如下:首先將操作系統分成兩大部分,一是運行在用戶態並以C/S方式活動的進程,二是運行在覈心態的內核。除內核部分外,操作系統的其它部分被分成若干相對獨立的進程,每個進程實現一類服務,成服務器進程,例如文件管理服務、進程管理服務、存儲管理服務等各種操作系統服務。服務器進程的任務是檢查是否有客戶提出服務請求,如果有請求就進行處理,所以用戶進程和服務器進程構成了C/S關係:運行在覈心態的內核把該消息傳給服務器,服務器執行相應操作,再通過內核用另一種消息把結果返回給用戶,由於由用戶態進程來實現操作系統的絕大多數功能,內核只實現極少任務,主要起信息驗證、交換的通,因此這種結構被稱爲C/S與微內核結構。

微內核用水平型代替傳統的垂直型結構操作系統,內核中僅僅存放那些最基本的核心操作系統功能,其它服務和應用建立在微內核之外,作爲獨立的服務器進程在用戶模式下運行。

兩種結構的操作系統利弊分析

如上,左側是垂直型結構,這種分層操作系統內核很大,互相之間調用關係複雜,而微內核結構把大量的操作系統功能放到內核外實現,這些外部的操作系統是作爲進程來實現的,它們之間的信息交互藉助微內核提供的消息傳遞機制實現。這樣,微內核起消息交換功能,它只提供進程通信、少量內存管理、低層進程管理、CPU調度及低層I/O操作在內的最小服務。

微內核結構的優點:

  • 一致性接口,微內核結構對進程的請求提供了一致性接口,進程不必區別內核級服務或用戶級服務,因爲,所有這些服務均藉助消息傳遞機制提供。
  • 可擴充性,微內核結構提供了較好的可擴充性,它允許增加新服務,以及在相同功能範圍內提供多種可選服務,每一種都可以作爲一個單獨的服務器進程來實現。每次修改時,新的或修改過的服務的影響被限制在系統的子集內,並不需要建立一個新的內核。

缺點:性能問題是一個潛在缺點,因爲消息的發送和接受需要花費時間,同時性能與微內核的大小和功能直接相關,微內核做得越簡潔,性能消耗就會越大。

微內核的設計

微內核必須包括那些直接依賴於硬件的功能,以及支撐操作系統用戶面膜是應用程序和服務所需的功能,這些功能可概括爲:存儲管理,進程通信、I/O和中斷管理。

基本存儲管理

爲了實現進程級的保護,微內核必須控制地址空間的硬件設施,內核負責把每個虛頁面映射到物理頁框,而大量的存儲管理功能都可以在內核外實現,如頁面調度和虛存管理可以在內核外執行。

進程間通信

在微內核結構中,進程和線程通信的基本形式是消息。一個消息包括了消息頭標和消息體,頭標指明瞭發送和接收消息的進程,消息體包含數據,即一個數據控制塊指針和進程的有關控制信息。進程間通信基於進程之間相關聯的端口(Port),一個端口是一個特定繼承的消息隊列,與端口相關的是一張能力表,記錄了可以和這個進程通信的進程,端口的標識和能力表由內核維護。

I/O和中斷管理

對於微內核結構,硬件中斷可如消息一樣來處理,地址空間中可能包括I/O端口。微內核能夠發現中斷,但不能處理它,微內核將生成一個消息傳送給用戶層中相關的處理中斷的進程。因此,當中斷出現時,一個特別用戶級進程被指派到中斷上,內核維護這一映射。轉換中斷爲消息的工作必須由微內核做,但內核中並不包含特定設備專有的中斷處理代碼。轉換中斷爲消息的工作必須由微內核做,但內核中並不包含特定設備專有的中斷處理代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章