1. 程式人生 > >作業系統讀書筆記(二)

作業系統讀書筆記(二)

注: 這是對 [Abraham Silberschatz. 作業系統概念 第七版. 高等教育出版社, 2010.1] 一書的概述性閱讀筆記

      同時也是對學校作業系統課程部份作業的整理

CH2 作業系統結構

  1. 作業系統服務

作業系統提供執行程式的環境,向程式和程式的使用者提供一定的服務。

作業系統服務向用戶提供以下的函式以方便操作:提供使用者介面以方便使用者進行控制;提供程式執行介面以將程式裝入記憶體並執行;提供I/O操作介面來提高檔案讀寫效率和進行保護;提供檔案系統操作以便於建立、刪除檔案及列出檔案資訊;提供通訊函式以使同一計算機內或不同計算機之間的程序之間能夠交換資訊;提供錯誤檢測以應對不同種類的錯誤並採取適當的動作。

作業系統同時也提供以下函式確保系統本身高效執行:資源分配函式位多個使用者或多個作業分配各種計算機資源;統計函式記錄資源使用情況以用於記賬或供研究使用統計資料;保護和安全確保所有對系統資源的訪問是受控的,保證系統不受外界侵犯。

  1. 系統呼叫

系統呼叫提供了作業系統提供的有效服務介面,應用程式開發人員根據應用程式介面(API)來設計程式,在後臺組成API的函式通常為實際的系統呼叫,系統呼叫介面擷取API的函式呼叫,並呼叫作業系統呼叫,然後返回系統呼叫狀態和引數。

系統呼叫可分為五類:

  1. 程序控制

    系統呼叫實現程序的建立、終止、中斷、重置、取得和設定程序屬性,等待事件,喚醒事件,分配和釋放記憶體,一部分系統呼叫也提供轉儲記憶體資訊以助於除錯。

  1. 檔案管理

    系統呼叫提供對檔案的建立、刪除、開啟、讀寫、重定位、關閉操作,對於目錄式的結構也需要有系統呼叫完成相應目錄的建立、刪除、修改操作。           

  1. 裝置管理

    程式執行時需要使用記憶體、磁碟等硬體資源,程式請求資源,系統在資源可用時允許請求。作業系統管理的資源可視作裝置看待,其中包含物理裝置和可以作為抽象的裝置,使用者請求裝置,使用裝置,並在使用完後釋放裝置,對裝置管理的系統呼叫類似於檔案的開啟關閉的系統呼叫。

  1. 資訊維護

    許多系統呼叫用於使用者程式與作業系統之間傳遞資訊,比如返回當前時間日期、系統版本、空閒記憶體等,有些系統呼叫可以訪問讀取和設定程序屬性。

  1. 通訊

    通訊通過訊息傳遞和共享記憶體2種模型實現。訊息傳遞模型中通訊雙方可以是同一CPU中的不同程序也可以是不同計算機之間的2個程序,由系統呼叫來完成程序名與識別符號的轉換、通訊與接收通訊、交換資訊、中止通訊等操作;在共享記憶體模型中,程序通過系統呼叫來獲得其他程序的記憶體區域訪問權,共享記憶體方式允許最大速度通訊並十分方便但在保護和同步方面存在問題。

  1. 作業系統結構

為了正常工作並能易於修改,現代作業系統通常設計為多個小模組而不是一個單塊系統,每個模組都是明確定義的系統部分

最初商業系統沒有明確定義的結構,都是較小、簡單且功能有限的系統,但後來逐漸超出其範圍,沒有被仔細劃分為模組,這種簡單結構使得系統易受錯誤的傷害,也難以進一步增強。

在適當硬體支援下作業系統可以通過分層方法進行模組化,將作業系統分為若干層,最底層為硬體,最高層為使用者介面,作業系統層可作為抽象物件實現,典型作業系統層由資料結構及可供上一級呼叫的子程式集合做成,其能夠呼叫下一層的操作,分層方法構造和除錯簡單,簡化了系統設計和實現,但對層的詳細定義較困難,也存在效率較差的問題。

微核心是一種模組化核心的技術方法,它將非基本的內容從核心中抽走,並實現為系統程式或使用者程式,而微核心的主要功能則是使客戶程式和各種服務進行通訊,客戶程式與伺服器不直接互動而是通過微核心完成,微核心使得作業系統便於擴充,新服務在使用者空間即可增加而不需要修改核心,系統可移植性和安全性也更好,但對於微核心系統功能總開銷的增加將帶來系統性能的下降。

最新的作業系統設計方法是通過面向物件程式設計技術生成模組化的核心,核心含有一組核心部件及啟動或執行時對附加服務的動態連結。這種設計允許核心提供核心服務,也能動態地實現特定功能。