操作系統的定義
操作系統(Operating System, OS)是指控制和管理整個計算機系統的硬件和軟件資源,并合理地組織調度計算機的工作和資源的分配;以提供給用戶和其他軟件方便的接口和環境;它是計算機系統中最基本的系統軟件
- 操作系統是系統資源(硬件和軟件)的管理者
- 向上層提供方便易用的服務
- 是最接近硬件的一層軟件
操作系統的功能和目標
作為系統資源的管理者
-
提供的功能:
- CPU(處理機)管理
- 內存(存儲器)管理
- 文件管理
- 設備管理
-
目標:安全、高效
向上層提供方便易用的服務
封裝思想:操作系統把一些硬件功能封裝成簡單易用的服務,使用戶能更方便地使用計算機,用戶無需關心底層硬件的原理,只需要對操作系統發出命令即可
-
直接給用戶使用的
- GUI
- 命令接口:聯機命令接口、脫機命令接口
-
給軟件/給程序員使用
- 程序接口:可以在程序中進行系統調用來使用程序接口。普通用戶不能直接使用程序接口,只能通過程序代碼間接使用
作為最接近硬件的層次
- 需要實現對硬件機器的拓展:操作系統將 CPU、內存、磁盤、顯示器、鍵盤等硬件合理地組織起來,讓各種硬件能夠相互協調配合,實現更多更復雜的功能,普通用戶無需關心這些硬件在底層是怎么組織起來工作的,只需直接使用操作系統提供的接口即可
操作系統的四個特征
并發和共享是兩個最基本的特征(沒有并發和共享,就談不上虛擬和異步),二者互為存在條件
并發
- 并發指兩個或多個事件在同一時間間隔內發生。這些事件宏觀上是同時發生的,但微觀上是交替發生的。
并行:指兩個或多個事件在同一時刻同時發生
- 操作系統的并發性指計算機系統中“同時”運行著多個程序,這些程序宏觀上看是同時運行著的,而微觀上看是交替運行的。操作系統就是伴隨著“多道程序技術”而出現的。因此,操作系統和程序并發是一起誕生的
- 單核 CPU 同一時刻只能執行一個程序,各個程序只能并發地執行
- 多核 CPU 同一時刻可以同時執行多個程序,多個程序可以并行地執行
共享
-
共享即資源共享,是指系統中的資源可供內存中多個并發執行的進程共同使用。
-
兩種資源共享方式
- 互斥共享方式:系統中的某些資源,雖然可以提供給多個進程使用,但一個時間段內只允許一個進程訪問該資源
- 同時共享方式:系統中的某些資源,允許一個時間段內由多個進程“同時”(宏觀上)對它們進行訪問
虛擬
- 虛擬是指把一個物理上的實體變為若干個邏輯上的對應物。物理實體(前者)是實際存在的,而邏輯上對應物(后者)是用戶感受到的。
- 空分復用技術(如虛擬存儲技術)
- 時分復用技術(如虛擬 CPU 技術)
顯然,如果失去了并發性,則一個時間段內系統中只需運行一道程序,那么就失去了實現虛擬性的意義了。因此,沒有并發性,就談不上虛擬性
異步
- 異步是指,在多道程序環境下,允許多個程序并發執行,但由于資源有限,進程的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是進程的異步性。
如果失去了并發性,即系統只能串行地運行各個程序,那么每個程序的執行會一貫到底。只有系統擁有并發性,才有可能導致異步性。
操作系統的發展與分類
-
手工操作階段:紙帶機
-
批處理階段——單道批處理系統:引入脫機輸入/輸出技術(用外圍機 + 磁帶完成),并由監督程序負責控制作業的輸入、輸出
- 主要優點:緩解了一定程度的人機速度矛盾,資源利用率有所提升
- 主要缺點:內存中僅能有一道程序運行,只有該程序運行結束之后才能調入下一道程序。CPU 有大量的時間是在空閑等待 I/O 完成,資源利用率依然很低
-
批處理階段——多道批處理系統:每次往內存中讀入多道程序,操作系統正式誕生,用于支持多道程序并發運行
- 主要優點:多道程序并發執行,共享計算機資源。資源利用率大幅提升,CPU 和其他資源更能保持“忙碌”狀態,系統吞吐量增大。
- 主要缺點:用戶響應時間長,沒有人機交互功能(用戶提交自己的作業之后就只能等待計算機處理完成,中間不能控制自己的作業執行。eg:無法調試程序/無法在程序運行過程中輸入一些參數)
-
分時操作系統:計算機以時間片為單位輪流為各個用戶/作業服務,各個用戶可通過終端與計算機進行交互。
- 主要優點:用戶請求可以被即時響應,解決了人機交互問題。允許多個用戶同時使用一臺計算機,并且用戶對計算機的操作相互獨立,感受不到別人的存在。
- 主要缺點:不能優先處理一些緊急任務。操作系統對各個用戶/作業都是完全公平的,循環地為每個用戶/作業服務一個時間片,不區分任務的緊急性。
-
實時操作系統: 在實時操作系統的控制下,計算機系統接收到外部信號后及時進行處理,并且要在嚴格的時限內處理完事件。實時操作系統的主要特點是及時性和可靠性
- 主要優點:能夠優先響應一些緊急任務,某些緊急任務不需時間片排隊。
- 分類:硬實時操作系統:必須在絕對嚴格的規定時間內完成處理;軟實時操作系統:能接受偶爾違反時間規定
-
其他幾種操作系統:
- 網絡操作系統:是伴隨著計算機網絡的發展而誕生的,能把網絡中各個計算機有機地結合起來,實現數據傳送等功能,實現網絡中各種資源的共享(如文件共享)和各臺計算機之間的通信。(如:Windows NT 就是一種典型的網絡操作系統,網站服務器就可以使用)
- 分布式操作系統:主要特點是分布性和并行性。系統中的各臺計算機地位相同,任何工作都可以分布在這些計算機上,由它們并行、協同完成這個任務
- 個人計算機操作系統:如 Windows XP、MacOS,方便個人使用
操作系統的運行機制
-
如何區分 CPU 處于用戶態還是內核態:CPU 中有一個寄存器叫程序狀態字寄存器(PSW),其中有個二進制位,1 表示內核態,0 表示用戶態(有的 CPU 也可能相反)
-
內核態=核心態=管態,用戶態=目態
-
內核態和用戶態的切換
- 剛開機時,CPU 為內核態,操作系統內核程序先在 CPU 運行
- 開機完成后,用戶可以啟動某個應用程序
- 操作系統內核程序在合適的時候主動讓出 CPU,讓該應用程序上 CPU 運行(操作系統內核在讓出 CPU 之前,會用一條特權指令把?PSW?的標志位設置為用戶態)
- 應用程序運行在用戶態
- CPU 發現要執行的指令是特權指令,但是處在用戶態,這個非法事件會引發一個中斷信號
- CPU 檢測到中斷信號后,會立即變為內核態,并停止運行當前的應用程序,轉而運行處理中斷信號的內核程序
- 操作系統獲取 CPU 的控制權,直到處理完中斷后再將 CPU 使用權轉給應用程序
- 內核態——用戶態:執行一條特權指令——修改?PSW?的標志位為用戶態,這個動作意味著操作系統將主動讓出 CPU 使用權
- 用戶態——內核態:由中斷引發,硬件自動完成變態過程,觸發中斷信號意味著操作系統將強行奪回 CPU 的使用權(除了非法使用特權指令之外,還有很多事件會觸發中斷信號。一個共性是,但凡需要操作系統介入的地方,都會觸發中斷信號)
中斷和異常
- 中斷是讓操作系統內核奪回 CPU 使用權的唯一途徑
中斷的作用
沒有中斷機制,就不可能實現操作系統,不可能實現程序并發
- 讓操作系統內核強行奪回 CPU 的控制權
- 使 CPU 從用戶態變為內核態
中斷類型
-
內中斷(異常、例外):與當前執行的指令有關,中斷信號來源于?CPU 內部
- 陷阱、陷入:執行陷入指令,意味著應用程序主動地將 CPU 控制權還給操作系統內核。 系統調用就是通過陷入指令完成(陷入指令)(注意不是特權指令,能再用戶態使用)
- 故障:由致命錯誤引起,內核程序無法修復該錯誤,因此一般不再將 CPU 使用權還給引發終止的應用程序, 而是直接終止該應用程序。如:整數除 0、非法使用特權指令
- 終止:由錯誤條件引起的,可能被內核程序修復。內核程序修復故障后會把 CPU 使用權還給應用程序,讓它繼續執行下去。如:缺頁故障。
-
外中斷:與當前執行的指令無關,中斷信號來源于?CPU 外部
- 時鐘中斷
- I/O 中斷請求
每一條指令執行結束時,CPU 都會例行檢查是否有外中斷信號
中斷機制的基本原理
不同的中斷信號,需要用不同的中斷處理程序來處理
-
檢查中斷信號
- 內中斷:CPU 在執行指令時會檢查是否有異常發生
- 外中斷:每個指令末尾,CPU 都會檢查是否有外中斷信號需要處理
-
找到相應的中斷處理程序
- 根據中斷信號的類型去查詢中斷向量表,以此來找到相應的中斷處理程序在內存中的存放位置
系統調用
系統調用是操作系統提供給應用程序使用的接口,可以理解為一種可供應用程序調用的特殊函數,應用程序可以通過系統調用來請求獲得操作系統內核的服務(和庫函數類似,但有區別)
- 有的庫函數涉及系統調用(如 open),有的不涉及系統調用(如取絕對值的函數)
系統調用的分類
系統中的各種共享資源都由操作系統內核統一掌管,因此凡是與共享資源有關的操作(如存儲分配、I/O 操作、文件管理等),都必須通過系統調用的方式向操作系統內核提出服務請求,這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。
系統調用過程
操作系統的內核
宏內核和微內核
操作系統結構
分層結構
最底層是硬件,最上層是用戶接口,每層可單向調用更低一層的接口(不能跨層調用)
模塊化
將操作系統按功能劃分為若干個具有一定獨立性的模塊
內核 = 主模塊(進程、內存)+ 可加載內核模塊(驅動)
外核
外核能夠給用戶分配未經抽象的硬件資源(沒有虛擬化映射),用戶看到的是物理內存,可以提高訪存效率(在一些頻繁使用的物理地址可以這樣分配)
操作系統引導(開機過程)
- 操作系統引導(boot):開機的時候,讓操作系統運行起來
虛擬機
虛擬機:使用虛擬化技術,將一臺物理機器虛擬化為多臺虛擬機器,每個虛擬機器都可以獨立運行一個操作系統;需要使用到虛擬機管理程序(虛擬機監控程序/VMM/Hypervisor)
- 第一類 VMM,直接運行在硬件上,只有 VMM 是運行在內核空間中的,操作系統是運行在用戶空間的,只不過是它自己以為運行在內核空間中,VMM 提供操作系統執行特權指令的功能
- 第二類 VMM,直接運行在宿主操作系統上(VMware)
- 兩類 VMM 對比