第 14 章 操作系統概述
14.1 基本概念
14.1.1 操作系統的基本概念
????????如圖 14 - 1 所示,操作系統是計算機系統中的一個重要組成部分,它位于計算機硬件和用戶程序(用戶)之間,負責管理計算機的硬件資源,為用戶和應用程序提供一個統一的、友好的、安全的接口,使計算機能夠高效運行。
????????操作系統具有 4 個基本特征,包括并發性、共享性、虛擬性和異步性。并發性指的是操作系統可以在一段時間內處理多個任務。共享性指的是操作系統可以讓多個進程共享計算機中的各類資源。虛擬性指的是操作系統可以為每個進程提供一個虛擬的計算機環境,包括通過時分復用虛擬 CPU,通過空分復用虛擬內存等。異步性是指操作系統可以響應不同的事件并采取相應的措施,而不必等待前一個事件處理完成。這種事件可以是來自用戶的輸入、來自硬件設備的中斷、來自其他進程的信號等。例如,在一個多任務操作系統中,當一個進程被阻塞等待輸入時,操作系統可以切換到其他進程并繼續執行,而不必等待當前進程的輸入完成。當輸入完畢后,操作系統會再次切換回該進程并繼續執行。
????????顯然,如果要體現共享性,至少需要多個進程并發,而進程并發也必須共享資源,因此,虛擬性和異步性也需要依賴于并發性和共享性。由此可以說,并發性和共享性是操作系統最基本的兩個特征。
14.1.2 操作系統的發展歷程
????????操作系統的發展歷程可以追溯到 20 世紀 50 年代。最初的操作系統是批處理系統,隨后發展出分時系統、實時系統、分布式系統等多種類型的操作系統。現代操作系統一般具有多任務處理、多用戶支持、虛擬內存、文件系統、網絡支持等功能。批處理系統是過去 408 真題的重點,考生應該重點關注。由于近年 408 真題風格多變,與實時系統和分時系統相關的考題未必不會出現在未來的真題中。
14.1.3 程序運行環境
1. CPU 運行模式
????????CPU 運行模式分為內核模式和用戶模式兩種。內核模式下的程序可以訪問所有的系統資源,包括內核數據結構和硬件資源等;而用戶模式下的程序只能訪問受限的系統資源,不能直接訪問內核數據結構和硬件資源,必須通過系統調用等方式才能訪問這些資源。
2. 中斷和異常的處理
????????中斷和異常是操作系統處理外部事件的重要機制。中斷是由硬件設備發出的信號,表示設備已經完成了某個操作或發生了某個事件;異常則是由程序執行過程中遇到的錯誤或異常情況所觸發的事件。操作系統可以通過中斷和異常來響應外部事件,并采取相應的措施。
如圖 14 - 2 所示,中斷處理流程主要分為如下幾個步驟。
(1)測定是否有未響應的中斷信號。
(2)保護被中斷進程的 CPU 環境。
(3)轉入相應的中斷處理程序。
(4)中斷處理。
(5)恢復 CPU 的現場并退出中斷。3. 系統調用
????????系統調用是程序訪問操作系統服務的一種機制。程序在用戶模式下通過系統調用向操作系統請求服務,例如讀 / 寫文件、創建進程、進程間通信等。系統調用是程序與操作系統之間的接口,操作系統根據系統調用提供相應的服務并返回結果。
圖 14 - 3 所示為系統調用的基本流程。
(1)應用程序通過系統調用向操作系統發起請求,這個過程需要傳遞系統調用參數。
(2)執行 trap 指令,使 CPU 從用戶模式轉為內核模式。
(3)操作系統在內核模式下執行系統服務。
(4)操作系統完成系統服務后,返回到用戶模式,繼續執行。
4. 程序的鏈接與裝入
????????程序的鏈接和裝入是指將程序中的模塊鏈接成一個可執行文件,并將可執行文件裝入內存中執行的過程。鏈接過程將程序中的各個模塊鏈接起來形成一個完整的程序,而裝入過程將可執行文件裝入內存中并分配相應的地址空間。程序的鏈接和裝入過程如圖 14 - 4 所示。
5. 程序運行時內存映像與地址空間
????????程序運行時,操作系統會為其分配一定的地址空間,包括代碼段、數據段和堆棧段等。代碼段存放程序的可執行代碼,數據段存放程序運行時所需的數據,堆棧段則用于存放程序的運行時棧。操作系統還會維護程序運行時的內存映像,包括代碼、數據、堆棧等的物理地址和虛擬地址的映射關系,以及頁面置換和內存保護等機制,以保證程序運行的安全性和穩定性。操作系統為每個進程分配獨立的虛擬地址空間,使每個進程都有自己獨立的地址空間,可以獨立地訪問內存中的數據。進程之間的地址空間是相互獨立的,每個進程只能訪問自己的地址空間,不能直接訪問其他進程的地址空間。
14.1.4 操作系統結構
????????根據應用場景的不同,操作系統可以設計成不同的結構,如圖 14 - 5 所示,宏內核和微內核就是兩種常見的結構。
1. 分層
????????分層式操作系統是一種將操作系統的不同功能劃分為多個層次的操作系統設計范式,每個層次負責一定的功能,層與層之間通過標準接口進行通信。分層式操作系統具有良好的模塊化結構和可擴展性,同時層次結構也有助于提高操作系統的可靠性和安全性。
2. 模塊化
????????模塊化操作系統是一種基于模塊化設計的操作系統,將操作系統的各個組件劃分為獨立的模塊,模塊之間通過標準接口進行通信。模塊化操作系統具有較好的可擴展性和可維護性,可以方便地添加新的功能模塊或替換已有的模塊,但由于模塊之間的耦合性較高,因此模塊化操作系統的性能和可靠性相對較差。