什么是操作系統
操作系統是在硬件和應用之間的軟件層
"操作系統是管理硬件資源、控制程序運行、改善人機界面 和為應用軟件提供支持的一種系統軟件。" [計算機百科全書(第2版)]
操作系統 = 管理 + 服務
操作系統為應用提供的一些服務:
- 為應用提供計算資源的抽象
- CPU:進程/線程,數量不受物理CPU的限制
- 內存:虛擬內存,大小不受物理內存的限制
- I/O設備:將各種設備統一抽象為文件,提供統一接口
- 為應用提供線程間的同步
- 應用可以實現自己的同步原語(如spinlock)
- 操作系統提供了更高效的同步原語(與線程切換配合, 如pthread_mutex)
- 為應用提供進程間的通信
- 應用可以利用網絡進行進程間通信(如loopback設備)
- 操作系統提供了更高效的本地通信機制(具有更豐富的語義,如pipe)
操作系統對應用的管理:
-
生命周期的管理
- 應用的加載、遷移、銷毀等操作
-
計算資源的分配
- CPU:線程的調度機制
- 內存:物理內存的分配
- I/O設備:設備的復用與分配
-
安全與隔離
- 應用程序內部:訪問控制機制
- 應用程序之間:隔離機制,包括錯誤隔離和性能隔離
管理和服務的目標有可能存在沖突
-
服務的目標:單個應用的運行效率最大化
-
管理的目標:系統的資源整體利用率最大化
– 例:單純強調公平性的調度策略往往資源利用率低,如細粒度的round-robin導致大量的上下文切換
操作系統的定義:
- 操作系統的核心功能:
- 將有限的、離散的資源,高效地抽象為無限的、連續的資源
- 從軟件角度的定義:
- 硬件資源虛擬化+管理功能可編程
- 從結構角度的定義:
- 操作系統內核+系統框架
操作系統的歷史
早期操作系統:只是一些庫
一開始,操作系統只是一組常用函數庫。例如,不是讓系統中的每個程序員都編寫低級 I/O 處理代碼,而是讓操作系統提供這樣的 API,這樣開發人員的工作更加輕松。
批(batch)處理:先把一些工作准備好,然后由操作員以“分批” 的方式運行(操作員決定運行作業的順序)。
缺點:因為計算機閑置成本較高,因此此時的計算機缺少交互。
超越庫:保護
操作系統運行的代碼是特殊的。因為OS控制了設備,因此對待它的方式應該與對待正常應用程序代碼的方式不同。(若OS以庫的方式提供磁盤I/O,那么任何程序都可以讀取磁盤,而不存在隱私與隔離)
出於保護目的,划分出用戶模式和內核模式。
- 用戶模式(user mode)。在用戶模式下運行的代碼會受到限制,應用程序不能完全訪問硬件資源。例如,I/O請求等。
- 內核模式(kernel mode):在內核模式下,操作系統可以完全訪問系統的硬件,因此可以執行諸如發起 I/O 請 求或為程序提供更多內存等功能。
使用系統調用(system call)將控制轉移(跳轉)到 OS 中,同時提高硬件特權級別(hardware privilege level)。

用戶應用程序以所謂的用戶模式(user mode)運行,這意味着硬件限制了應用程序的功能。
在發起系統調用時,硬件將控制轉移到預先指定的陷阱處理程序(trap handler),並同時將特權級別提升到內核模式(kernel mode)。
在內核模式下,操作系統可以完全訪問系統的硬件,因此可以執行諸如發起 I/O 請求或為程序提供更多內存等功能。
當操作系統完成請求的服務時,它通過特殊的陷阱返回 (return-from-trap)指令將控制權交還給用戶,該指令返回到用戶模式,同時將控制權交還給應用程序,回到應用離開的地方。
以下為printf的使用過程:

缺點:用戶程序發生I/O時,CPU利用率較低。
多道批處理系統
多道程序
由於希望更好地利用機器資源,多道程序(multiprogramming)變得很普遍。 操作系統不是一次只運行一項作業,而是將大量作業加載到內存中甚在它們之間快速切換, 從而提高 CPU 利用率。這種切換非常重要,因為 I/O 設備很慢。
在 I/O 進行和任務中斷時,要支持多道程序和重疊運行。多道程序給操作系統帶來的挑戰:
- 內存保護(memory protection),我們不希望一個程序能夠訪問另一個程序的內存。
- 並發(concurrency)問題。
- 在中斷存在的情況下,確保操作系統正常運行是一個很大的挑戰。
多道批處理系統
早期的操作系統可以稱為單道批處理系統。在單道批處理系統中,內存中僅有一道作業,它無法充分利用系統中的所有資源,致使系統性能較差。為了進一步提高資源的利用率和系統吞吐量,在20世紀60年代中期又引入了多道程序設計技術,由此而形成了多道批處理系統.
多道批處理系統有兩個特點:
-
多道:系統內可同時容納多個作業。這些作業放在外存中,組成一個后備隊列,系統按一定的調度原則每次從后備作業隊列中選取一個或多個作業進入內存運行,運行作業結束、退出運行和后備作業進入運行均由系統自動實現,從而在系統中形成一個自動轉接的、連續的作業流。
-
成批:在系統運行過程中,不允許用戶與其作業發生交互作用,即:作業一旦進入系統,用戶就不能直接干預其作業的運行。
缺點:缺少交互,響應時間較長。
分時系統
多道程序設計允許處理器同時處理多個批作業,還可處理多個交互作業。對於后者而言,由於多個用戶分享處理器時間,因而該技術稱為分時(time sharing)。
在分時系統中,多個用戶可以通過終端同時訪問系統,由操作系統控制每個用戶程序在很短的時間內交替執行。
因此,如果有n個用戶同時請求服務,若不計操作系統開銷,每個用戶平均只能得到計算機有效速度的1/n。但由於人的反應時間相對較慢,因此設計良好的系統響應時間應可以接近於專用計算機的響應時間。
批處理和分時都使用了多道程序設計,其主要要差別如下表所示。

實時系統
在指定或者確定的時間內完成系統功能以及對外部或內部事件在同步或異步時間內做出響應的系統,實時意思就是對響應時間有嚴格要求,要以足夠快的速度進行處理。分為硬實時和軟實時兩種。
硬實時:某個動作必須絕對地在規定的時刻發生,否則會產生嚴重后果。(工業過程控制、民用航空、軍事)
軟實時:希望能滿足時限,但頁允許偶爾違反最終時限,偶爾違反不會產生嚴重后果。(多媒體系統)
reference
[1] 操作系統導論(ostep)
[2]上海交通大學並行與分布式系統研究所-操作系統的前世今生
[3] 操作系統-精髓與設計原理
[4] 現代操作系統
[5] 操作系統概念
