操作系統
操作系統的定義
操作系統(Operating System,OS)是配置在計算機硬件上的第一層軟件,是對硬件系統的首次擴充。操作系統是指控制和管理整個計算機系統的硬件和軟件資源,並合理地組織調度計算機的工作和資源的分配,以提供給用戶和其他軟件方便的接口和環境,它是現代計算機系統中最基本和最重要的系統軟件,而其它的諸如編譯程序、數據庫管理系統等系統軟件,以及大量的應用軟件,都直接依賴於操作系統的支持,取得它所提供的服務。
操作系統的作用
用戶與硬件之間的接口
OS 的第一個作用是作為用戶與計算機硬件系統之間的接口,從層次上看 OS 處於用戶與計算機硬件系統之間,用戶在OS幫助下能夠方便、快捷、可靠地操縱計算機硬件和運行自己的程序。用戶可以通過命令方式、系統調用方式和圖標一窗口方式來實現與 OS 的通信,由於應用程序也是基於 OS 運行的,因此用戶使用軟件也離不開 OS。
資源的管理者
OS 第二個作用是作為計算機系統資源的管理者,因為在一個計算機系統中通常都含有多種硬件和軟件資源。歸納起來可將這些資源分為四類:處理機、存儲器、I/O設備以及文件(數據和程序),OS 的主要功能也正是對這四類資源進行有效的管理。
對資源的抽象
一台完全無軟件的計算機系統(即裸機)向用戶提供的僅是硬件接口(物理接口),用戶想要使用該系統就必須對物理接口的實現細節有充分的了解,這就致使該物理機器難於廣泛使用。
為了方便用戶使用 I/O設備,人們在裸機上覆蓋上一層 I/O 設備管理軟件,這樣的軟件隱藏了 I/O 設備的具體細節,向上提供了一組抽象的 I/O 設備。通常把覆蓋了上述軟件的機器稱為擴充機器或虛機器,它向用戶提供了一個對硬件操作的抽象模型。
操作系統的目標
- 方便性:用戶采用高級語言書寫的程序可以通過 OS 編譯成機器代碼,也可以使用 OS 所提供的各種命令操縱計算機系統;
- 有效性:OS 提高系統資源的利用率和吞吐量;
- 可擴充性:OS 能適應計算機硬件、體系結構以及計算機應用發展的要求;
- 開放性:系統能遵循世界標准規范,特別是遵循開放系統互連 OSI 國際標准。
OS 的基本特征
操作系統具有並發、共享、虛擬和異步四個基本特征。
並發
並發執行這一特征使得 OS 能有效地提高系統中的資源利用率,增加系統的吞吐量。並行性是指兩個或多個事件在同一時刻發生,而並發性是指兩個或多個事件在同一時間間隔內發生。在多道程序環境下,並發性是指在一段時間內宏觀上有多個程序在同時運行,但在單處理機系統中,每一時刻卻僅能有一道程序執行,故微觀上這些程序只能是分時地交替執行。倘若在計算機系統中有多個處理機,這些可以並發執行的程序便可被分配到多個處理機上,從而實現並行執行。
實現並發的關鍵在於引入了進程,進程是指在系統中能獨立運行並作為資源分配的基本單位,它是由一組機器指令、數據和堆棧等組成的,是一個能獨立運行的活動實體。若對內存中的多個程序都分別建立一個進程,它們就可以並發執行。
共享
OS 環境下的資源共享(資源復用)是指:系統中的資源可供內存中多個並發執行的進程共同使用,這里在宏觀上既限定了時間(進程在內存期間),也限定了地點(內存)。因為系統中的資源遠少於多道程序需求的總和,會形成它們對共享資源的爭奪,系統必須對資源共享進行妥善管理。由於資源屬性的不同,進程對資源復用的方式也不同,目前主要實現資源共享的方式有如下兩種:
- 互斥共享方式:系統中的某些資源(如打印機、磁帶機)等,雖然可以提供給多個進程(線程)使用,但應規定在一段時間內只允許一個進程訪問該資源。
- 同時訪問方式:系統中例如磁盤等設備允許在一段時間內由多個進程“同時”對它們進行訪問,在微觀上這些進程對該資源的訪問是交替進行的(單處理機)。
並發和共享是多用戶(多任務)OS 的兩個最基本的特征,它們又是互為存在的條件。若系統不允許並發執行也就不存在資源共享問題,若系統不能對資源共享實施有效管理也必然會影響到諸進程間並發執行的程度。
虛擬
在 OS 中把通過某種技術將一個物理實體變為若干個邏輯上的對應物的功能稱為“虛擬”,這是通過時分復用和空分復用實現的。時分復用技術能實現虛擬處理機、虛擬設備等,使資源的利用率得以提高。這是因為它利用某設備為一用戶服務的空閑時間,又轉去為其他用戶服務,使設備得到最充分的利用。
- 虛擬處理機技術:通過分時復用的方法,能實現同時(宏觀上)為多個用戶服務;
- 虛擬設備技術:通過分時復用的方法,將一台物理 I/O 設備虛擬為多台邏輯上的 I/O 設備。
空分復用技術則是利用存儲器的空閑空間分區域存放和運行其它的多道程序,以此來提高內存的利用率。單純的空分復用存儲器只能提高內存的利用率,並不能實現在邏輯上擴大存儲器容量的功能,還必須引入虛擬存儲技術才能達到此目的。
異步
在單處理機環境下,由於系統中只有一台處理機,因而每次只允許一個進程執行,其余進程只能等待。由於資源等因素的限制,使進程的執行通常都不可能“一氣呵成”,而是以“停停走走”的方式運行。只有系統具有並發性,才有可能導致異步性。
OS 的管理功能
處理機管理功能
在傳統的多道程序系統中,處理機的分配和運行都是以進程為基本單位的,因而對處理機的管理可歸結為對進程的管理。處理機管理的主要功能有:
功能 | 說明 |
---|---|
進程控制 | 為作業創建進程、撤消(終止)已結束的進程,以及控制進程在運行過程中的狀態轉換 |
進程同步 | 為多個進程(含線程)的運行進行協調,常用的協調方式有進程互斥方式和進程同步方式 |
進程通信 | 實現相互合作進程之間的信息交換 |
調度 | 調度包括作業調度和進程調度兩步 |
存儲器管理功能
存儲器管理的主要任務是為多道程序的運行提供良好的環境,提高存儲器的利用率,方便用戶使用並能從邏輯上擴充內存。
功能 | 說明 |
---|---|
內存分配 | 為每道程序分配內存空間,盡量減少不可用的內存空間(碎片),允許正在運行的程序申請附加的內存空間 |
內存保護 | 確保每道用戶程序都僅在自己的內存空間內運行,絕不允許用戶程序訪問操作系統的程序和數據 |
地址映射 | 將地址空間中的邏輯地址轉換為內存空間中與之對應的物理地址 |
內存擴充 | 借助於虛擬存儲技術,從邏輯上擴充內存容量 |
實現內存分配有兩種方式:
- 靜態分配方式:在作業裝入內存后的整個運行期間不允許該作業再申請新的內存空間,也不允許作業在內存中“移動”。
- 動態分配方式:允許作業在運行過程中繼續申請新的附加內存空間或移動;
對於擴充內存來說,系統具體需要實現:
- 請求調入功能:若發現要繼續運行時所需的程序和數據尚未裝入內存,OS 可以從磁盤中將所需部分調入內存;
- 置換功能:若發現在內存中已無足夠的空間來裝入需要調入的程序和數據時,系統應能將內存中的一部分暫時不用的程序和數據調至硬盤上。
設備管理功能
設備管理需要完成用戶進程提出的 I/O 請求,為用戶進程分配所需的 I/O 設備,同時要提高 CPU 和 I/O 設備的利用率。
功能 | 說明 |
---|---|
緩沖管理 | 在 I/O 設備和 CPU 之間引入緩沖來緩和 CPU 和 I/O 設備速度不匹配的矛盾 |
設備分配 | 根據用戶進程的 I/O 請求、系統現有資源情況以及按照某種設備分配策略來分配所需的設備 |
設備處理 | 又稱設備驅動程序,用於 CPU 向設備控制器發出 I/O 命令完成指定的 I/O 操作 |
文件管理
文件管理的主要任務是對用戶文件和系統文件進行管理以方便用戶使用,並保證文件的安全性。
功能 | 說明 |
---|---|
文件存儲空間的管理 | 為每個文件分配必要的外存空間,提高外存的利用率,進而提高文件系統的存、取速度 |
目錄管理 | 為每個文件建立一個目錄項,並對眾多的目錄項加以有效的組織,以實現方便的按名存取 |
文件的讀/寫管理 | 根據用戶的請求從外存中讀取數據,或將數據寫入外存 |
文件保護 | 防止系統中的文件被非法竊取和破壞 |
其中文件保護需要實現以下 3 個目標:
- 防止未經核准的用戶存取文件;
- 防止冒名頂替存取文件;
- 防止以不正確的方式使用文件。
OS 與用戶的接口
為了方便用戶對操作系統的使用,操作系統向用戶提供了“用戶與操作系統的接口”。
用戶接口
用戶接口可以被用戶直接調用,用戶可通過用戶接口向作業發出命令以控制作業的運行。該接口可以分為以下三種:
- 聯機用戶接口:也可以稱之為交互式命令接口,當用戶在終端或控制台上鍵入一條命令后,系統立即對該命令加以解釋執行。在完成指定功能后系統又返回到終端或控制台上,等待用戶鍵入下一條,用戶輸入一條命令系統就執行一條命令;
- 脫機用戶接口:也可以稱之為批處理用戶接口,需要用戶用作業控制語言把命令事先寫在作業說明書上。系統調度到該作業運行時,對作業說明書上的命令逐條解釋執行,也就是用戶提前寫好一堆命令讓系統統一執行;
- 圖形用戶接口:提供 GUI 讓用戶通過輸入設備簡易地完成操作。
程序接口
程序接口是為用戶程序在執行中訪問系統資源而設置的,允許用戶通過程序間接調用,是用戶程序取得操作系統服務的唯一途徑。程序接口是由一組系統調用組成的,每一個系統調用都是一個能完成特定功能的子程序,也可以成系統調用為廣義指令。系統中的各種共享資源都由操作系統統一管理,應用程序設計資源有關的操作都需要通過系統調用來請求服務,由操作系統代為執行可以保證安全性。
在高級語言例如 C 語言中,往往提供了與各系統調用一一對應的庫函數,應用程序便可通過調用對應的庫函數來使用系統調用。
OS 內核
操作系統內核往往具有以下這些功能:
內核是一個操作系統的核心,負責提供操作系統的最基本的功能,是操作系統工作的基礎。內核就是將一些與硬件緊密相關的(如中斷處理程序、設備驅動程序等)、基本的、公共的、運行頻率較高的模塊(如時鍾管理、進程調度等)以及關鍵性數據結構獨立開來,使之常駐內存並進行保護的部分。
系統態和用戶態
為了防止 OS 本身及關鍵數據(如 PCB 等)遭受到應用程序有意或無意的破壞,通常也將處理機的執行狀態分為兩種:
- 系統態:又稱為管態或內核態,具有較高的特權,能執行一切指令,訪問所有寄存器和存儲區;
- 用戶態:又稱為目態,具有較低特權的執行狀態,僅能執行規定的指令,訪問指定的寄存器和存儲區。
通常 OS 運行於系統態,而各種應用程序運行於用戶態。
內核的功能
內核會提供一些支撐功能和資源管理功能,資源管理功能包括進程管理、存儲器管理、設備管理。支撐功能是提供給 OS 其它眾多模塊所需要的一些基本功能,以便支撐這些模塊工作。包括:
- 時鍾管理:實現計時功能;
- 中斷處理:負責實現中斷機制;
- 原語:由若干條指令組成的,用於完成一定功能的一個過程,特點是原語的執行具有原子性。
微內核 OS
單內核
單內核是個很大的進程,它將操作系統的主要功能模塊全部包括進來,因此在運行的時候單內核是個單獨的二進制大映象。其模塊間的通訊是通過直接調用其他模塊中的函數實現的,而不是消息傳遞。由於不需要調用其他的程序,單內核在運行效率上具有一定的優勢。
單內核代碼需要包括大量的功能模塊,這就導致單內核難以編寫正確。因為所有的模塊都在同一個內核空間上運行,因此一個很小的 bug 都會使整個系統崩潰。
微內核
微內核(MicroKernel)操作系統結構是 20 世紀 80 年代后期發展起來的,由於它能有效地支持多處理機運行,故非常適用於分布式系統環境。和單內核的不同之處在於微內核操作系統中,微內核並非是一個完整的 OS,而只是將操作系統中最基本的部分放入微內核,通常包含有:
- 與硬件處理緊密相關的部分;
- 一些較基本的功能;
- 客戶和服務器之間的通信。
微內核使用客戶機-服務器模式工作,它將操作系統中最基本的部分放入內核,把其他的大部分功能放在內核外的一系列進程(服務器)中實現。當用戶進程需要使用某些功能時,它將向內核發送請求,內核調用相應的進程(服務器)后向客戶進程進行響應。
微內核的基本功能
微內核是利用“機制與策略分離”的原理來構造的,機制是指實現某一功能的具體執行機構,策略則是在機制的基礎上借助於某些參數和算法來實現該功能的優化。在傳統的 OS 中將機制放在 OS 的內核的較低層,把策略放在內核的較高層次中。而在微內核操作系統中,通常將機制和與硬件相關的部分放在 OS 的微內核中。微內核通常具有如下幾方面的功能:
- 進程(線程)管理:包括進程(線程)之間通信、進程的切換、線程的調度,以及多處理機之間的同步等基本功能;
- 低級存儲器管理:通常在微內核中,只配置最基本的低級存儲器管理機制,如用於實現將用戶空間的邏
- 中斷和陷入處理:發生中斷意味着需要操作系統接入展開管理工作,微內核需要能夠捕獲中斷和陷入並進行一定的處理。
對於用戶進程如何分類和用戶優先級、內存分配和內存回收以及具體的中斷處理程序,這些都可以歸納為策略部分,可以把這些功能交給具體的進程(服務器)實現。
微內核的優缺點
優點
由於微內核 OS 結構是建立在模塊化、層次化結構的基礎上的,並采用了客戶/服務器模式和面向對象的程序設計技術,因此微內核結構的操作系統擁有很多優點。
- 提高了系統的可擴展性:微內核 OS 的許多功能是由相對獨立的服務器軟件來實現的,通過服務器軟件來添加功能非常方便;
- 增強了系統的可靠性:微內核 OS 提供了規范而精簡的 API,當某個服務器出現錯誤時不會影響內核和其他服務器;
- 可移植性強:微內核 OS 能較容易地運行在不同的計算機硬件平台上;
- 提供了對分布式系統的支持:微內核 OS 能很好地支持分布式系統和網絡系統;
- 使用了面向對象技術。
缺點
單內核 OS 下用戶進程在請求取得 OS 服務時一般只需進行兩次上下文的切換。一次是在執行系統調用后由用戶態轉向系統態時,另一次是在系統完成用戶請求的服務后由系統態返回用戶態時。
在微內核 OS 中由於客戶和服務器、服務器和服務器之間的通信都需通過微內核,致使同樣的服務請求至少需要進行四次上下文切換,這就帶來了效率問題。
OS 的發展
人工操作方式
早期的操作方式是由程序員將事先已穿孔的紙帶(或卡片),裝入紙帶輸入機(或卡片輸入機),再啟動它們將紙帶(或卡片)上的程序和數據輸入計算機,然后啟動計算機運行。這種人工操作方式有以下兩方面的缺點,首先當用戶操作計算機時這個用戶占有這台計算機的全部資源,第二是在用戶操作紙帶時 CPU 是不工作的。
脫機輸入/輸出(Off-Line I/O)方式
人工操作方式嚴重降低了計算機資源的利用率,帶來了人機矛盾,直至后來引入了脫機輸入/輸出技術才有所改善。脫機輸入/輸出(Off-Line I/O)方式是事先將裝有用戶程序和數據的紙帶裝入紙帶輸入機,在一台外圍機的控制下,把紙帶(卡片)上的數據(程序)輸入到磁帶上。當 CPU 需要這些程序和數據時,再從磁帶上高速地調入內存。
單批處理系統
單批處理系統需要先把一批作業以脫機方式輸入到磁帶上,並在系統中配上監督程序(Monitor),使這批作業能一個接一個地連續處理。
單道批處理系統最主要的缺點是,系統中的資源得不到充分的利用。這是因為在內存中僅有一道程序,每逢該程序在運行中發出 I/O 請求后,CPU 必須在其 I/O 完成后才繼續運行。
多道批處理系統
在該系統中用戶所提交的作業先存放在外存上,並排成一個“后備隊列”。然后由作業調度程序按一定的算法,從后備隊列中選擇若干個作業調入內存,使它們共享 CPU 和系統中的各種資源。
多道批處理系統的優點是資源利用率高,因為引入多道批處理能使多道程序交替運行,同時系統吞吐量大。但是由於作業要排隊依次進行處理,因而平均周轉時間長。同時多道批處理系統無交互能力,因為用戶一旦把作業提交給系統后,用戶都不能與作業進行交互。
分時系統
多道批處理系統提高了資源利用率和系統吞吐量,但是用戶對人一機交互的需求也需要滿足,用戶的需求具體表現在以下幾個方面:
- 人一機交互:程序員能獨占全機並對它進行直接控制,以便能方便地對程序進行調試;
- 共享主機:一台計算機要同時供很多用戶共享使用,但共享是每人都希望能像獨占時一樣。
分時系統是指在一台主機上連接了多個配有顯示器和鍵盤的終端並由此所組成的系統,它允許多個用戶同時通過自己的終端,以交互方式共享主機中的資源。系統首先必須能提供多個終端,同時給多個用戶使用。其次當用戶在自己的終端上鍵入命令時,系統應能及時接收,並及時處理該命令,再將結果返回給用戶。要做到及時接收多個用戶鍵入的命令或數據,只需在系統中配置一個多路卡即可。要實現用戶的命令及時處理,需要通過下面 2 個方式:
- 作業直接進入內存:作業在磁盤上不能運行,所以作業應直接進入內存;
- 采用輪轉運行方式:為避免一個作業長期獨占處理機,系統規定每個作業每次只能運行一個時間片,然后就暫停該作業的運行,並立即調度下一個作業運行。
分時系統的優點是用戶的請求可以被及時響應,解決了人機交互問題。缺點是不能夠優先處理一些緊急任務,因為 OS 對各用戶和作業完全公平。
實時系統
“實時計算”可以定義為這樣一類計算:系統的正確性,不僅由計算的邏輯結果來確定,而且還取決於產生結果的時間。實時系統是指系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處理,並控制所有實時任務協調一致地運行。
實時系統的任務分為硬實時任務和軟實時任務,硬實時任務(Hard Real-time Task,HRT)是指系統必須滿足任務對截止時間的要求,否則可能出現難以預測的后果。軟實時任務(Soft Real-time Task,SRT)對截止時間的檢查並不嚴格,若偶爾錯過了任務的截止時間,對系統產生的影響也不會太大。
參考資料
《計算機操作系統(第四版)》,湯小丹 梁紅兵 哲鳳屏 湯子瀛 編著,西安電子科技大學出版社
內核_百度百科