《操作系統概念》筆記--第二章 操作系統結構

操作系統的結構

操作系統提供環境以便執行程序

操作系統服務

操作系統爲程序和程序用戶提供某些服務。
操作系統服務分兩大類,用戶服務和系統服務
用戶服務用於提供用戶功能,包括用戶界面,程序執行,I/O操作,文件系統操作,通信和錯誤檢測
系統服務不是爲了幫助用戶而是爲了確保系統本身運行高效。多系統用戶通過共享計算機資源可以提高效率。包括資源分配,記賬,保護與安全。

用戶服務

用戶界面(User Interfase, UI):一種命令行界面(Command-Line Interfase, CLI),採用文本命令。另一種是批處理界面(batch interface),命令以及控制這些命令的指令可以編成文件以便執行。其中最常用的是圖形用戶界面(Graphical User Interface, GUI)。
程序執行:系統應能加載程序到內存,並加以運行。程序還能結束執行,包括正常或不正常結束。
I/O操作:爲了效率和保護,用戶不應該直接操作I/O設備,操作系統提供手段來執行 I/O
文件系統操作:用戶或程序對文件等進行操作需要通過操作系統。許多操作系統提供多種文件系統,有的允許個人選擇,有的提供特殊功能或性能。
通信:在許多情況下,一個進程需要與另一個進程交換信息。通信實現可以通過共享內存(shared memory)(兩個或多個進程讀寫共享內存區域),也可以通過消息交換(message passing)(符合預先定義格式的信息分組可以通過操作系統在進程之間移動)。
錯誤檢測:操作系統需要不斷檢測錯誤和修正錯誤。

系統服務

資源分配:當多個用戶或多個作業同時運行時,每個都應該分配資源。
記賬:我們需要記錄用戶使用資源的類型和數量。
保護與安全:對於存在多用戶或聯網的計算機系統的信息,用戶可能需要控制信息使用。

系統調用

系統調用(System call) 提供操作系統服務接口
通常,應用程序開發人員根據應用編程接口(Application Programming Interface ,API)來設計程序。API方便爲應用程序員規定了一組函數,包括每個函數的輸入參數和返回值。
共有三組常見的API可爲應用程序員所用:

適用於Windows系統的Windows API
適用於POSIX系統的POSIX API(這幾乎包括所有版本的UNIX,Linux和Mac OS X)
適用於java虛擬機的java API

那麼,爲什麼應用程序員更喜歡根據API來編程,而不是採用實際系統編程呢?

一個好處涉及程序的可移植性。應用程序員根據API設計程序,來希望任何支持同一API的系統上編譯並執行(雖然在現實中國體系差異往往使這一點更困難)。
再者,對於應用程序員,實際系統調用比API更加註重細節且更加難用。

調用者無需知道如何實現系統調用,而只需遵循API,並知道在調用系統調用後操作系統做了什麼。
向操作系統傳遞參數有三種常用方法:

最簡單的是通過寄存器來傳遞參數。
不過,有時候參數數量會比寄存器多。這時,這些參數通常存在內存的塊或表中,而塊或表的地址通過寄存器來傳遞。
參數也可通過程序放在或壓入到堆棧中,並通過操作系統彈出。

系統調用的類型

系統調用大致分爲六大類: 進程控制(process control), 文件管理(file manipulation), 設備管理(device manipulation),信息維護(information maintenance),通信(communication) 和 保護(protection)
*命令解釋器的用途是什麼?

命令解釋器從用戶或文件讀取用戶並執行,一般轉化爲系統調用。

系統程序

現代操作系統的另一個特點是系統程序。系統程序(system program),也稱爲系統工具(system utility),爲程序開發和執行提供了一個方便的環境。有的系統程序只是系統調用的簡單接口,而其他的可能相當複雜。
系統程序可分爲以下七類(文件管理,狀態管理,文件修改,程序語言支持,程序加載與執行,通信,後臺服務):
文件管理:這些程序創建,刪除,複製,重新命名,打印,轉儲,列出,操作文件和目錄
狀態信息:有些程序可從系統那裏得到日期,時間,內存或磁盤空間的可用數量,用戶數或其他狀態信息。
文件修改:有多個編輯器可以創建和修改位於磁盤或其他存儲設備上的文件。
程序語言支持:常用程序語言的編譯程序,彙編語言,調試程序和解釋程序,通常與操作系統一起提供給用戶,或者自行下載
程序加載和執行:程序一旦彙編或編譯後,要加載到內存上才能執行
通信:這些程序提供在進程,用戶和計算機系統之間創建虛擬鏈接的機制
後臺服務:所有通用系統都有方法,以便在引導時創建一些系統的進程。這些進程中,有的執行完任務就終止,有的會一直運行到系統停機。一直運行的系統進程,稱爲服務(Service), 子系統(subsystem )或守護進程。
除系統程序外,大多數的操作系統提供解決常見問題或執行常用操作的程序。如網絡瀏覽器,文字處理器和文字排版器等。

操作系統的結構

操作系統有多種結構,其中有簡單結構,分層方法,微內核,模塊,混合系統。

簡單結構

很多操作系統缺乏明確定義的結構,通常,這些操作系統最初是最小的,簡單的,功能有限的系統。
比如MS-DOS就是這樣的一個系統,當初設計人員設計的時候,沒想到後來會如此受歡迎,。由於是利用最小空間而提供最多功能,因此並沒有被仔細的劃分模塊。
圖片2-11
MS-DOS系統並沒有很好地區分功能的接口和層次。
應用程序能直接訪問基本的I/O程序,並直接寫到顯示器和磁盤驅動。這會出現問題
這種自由使MS-DOS易受錯誤或惡意程序的傷害,因此用戶程序出錯會導致整個系統的崩潰。
還有一個例子,就是最初的UNIX操作系統,採用有限結構。它由兩個獨立的部分組成:內核和系統程序。內核又分爲一系列接口和驅動程序。系統調用接口之下和物理硬件之上的所有部分爲內核。這種單片結構有一個獨特的性能優勢:系統調用接口和內核通信的開銷比較小。
圖片2-12

分層方法

有了適當的硬件支持,操作系統可分成很多塊。
系統的模塊化有很多方法,一種方法就是分層法(layered approach),即操作系統分成若干層(級),最底層(0)爲硬件,最高層爲接口
圖片2-13
分層法的主要優點在於簡化了構造和調試。所選的層次要求每層只能調用更低層的功能和服務。
每層的實現都只是利用更低層所提供的操作,且只需要知道這些操作做了什麼,並不需要知道這些操作是如何實現的。因此,每層要爲更高層隱藏一定的數據結構,操作和硬件。
分層法的主要難點在於合理定義各層/
分層實現的最後一個問題是與其他方法相比效率稍差。因爲當一個用戶程序執行操作時,需要一層一層地向下,每層都會增加額外開銷。

微內核

隨着UNIX的不斷壯大,其內核也變大更大且更難管理。
微內核從內核中刪除不必要的組件,而將他們當做系統級與用戶級的程序來實現。
微內核的主要功能是,爲客戶端程序和運行在用戶空間中的各種服務提供通信,通信是通過消息傳遞(message passing)來提供的。
微內核方法的優點之一是便於擴展操作系統。所有新服務都可在用戶空間裏增加,並且如果一個服務出錯,不會影響操作系統的其他部分。
但是由於增加的系統功能的開銷,微內核的性能會受損。
*微內核的優點和缺點是什麼?

優點:增加一個新的服務不需要修改內核
在用戶模式中更安全,更易操作
缺點:頻繁的消息傳遞使用系統調用,降低性能

模塊

採用可加載的內核模塊(loadable kernel module)
這種設計的思想是:內核提供核心服務,而其他服務可在內核運行時動態實現。
動態鏈接服務由於直接添加新功能到內核,這是因爲對於每次更改,後者都要重新編譯內核。
並且模塊之間無需調用消息傳遞來進行通信。

混合系統

實際上,很少有操作系統採用單一的,嚴格定義的結構,他們組合了多種不同的結構,從而形成了混合系統。
Mac OS X是一個混合系統,首先,是分層系統。
頂層包括Aqua用戶界面以及一組應用程序環境與服務。
這些層的下面爲內核環境(kernel environment),它主要包括Mach微內核和BSD UNIX內核。Mach微內核提供內存管理,遠程過程調用(rpc)和進程間通信以及線程調度。內核環境提供了一個I/O KIt,以便開發設備驅動程序和動態加載模塊(稱之爲內核擴展(kernel extension)).
圖片MAC-OS結構

系統引導

加載內核以啓動計算機的過程,稱爲系統引導。
大多數計算機系統都有一小塊代碼,稱之爲引導程序(bootstrap program)或引導加載程序(bootstrap loader)。這段代碼能夠定位內核,並加載到內存以開始執行。

梳理與總結

首先,是操作系統的服務分爲兩大類
然後是系統調用的概念以及六大類型,還有傳遞參數到操作系統的三種通用方法
之後,操作系統有七類系統程序
最後,五種操作系統的結構與特點

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