多道程式設計 是作業系統核心技術之一,指在記憶體中同時駐留多個獨立程式,在管理程式 (OS) 控制下交錯執行,使 CPU 與 I/O 裝置並行工作,大幅提升系統吞吐量。
定義與特徵
- 多道:記憶體中同時存放多道 (兩個以上) 程式。
- 宏觀並行:多道程式皆處於「開始→結束」之間,從系統整體看是並行執行。
- 微觀串行:單 CPU 核心下,各程式分時輪流佔用 CPU,交替執行。
三大基本特性
- 間斷性:程式執行過程中因 I/O、中斷、排程而暫停/恢復。
- 共享性:程式共享 CPU、記憶體、I/O 裝置等系統資源 (互斥共享/同時共享)。
- 制約性:程式間因資源競爭、資料相依產生同步與互斥制約關係。
硬體基礎
- 中斷機制:I/O 完成通知 CPU 切換程式。
- 記憶體保護:基址/界址暫存器或分頁機制隔離程式空間。
- 特權指令/模式:OS 核心態 vs 使用者態,保護關鍵資源。
- 定時器:時間片輪轉排程基礎。
引入目的與效益
- 提高 CPU 利用率:單道程式 I/O 等待時 CPU 閒置;多道程式下 CPU 切換執行其他程式,利用率從 ~20% 提升至 80%+。
- 提高記憶體與 I/O 設備利用率:資源並行使用。
- 增加系統吞吐量:單位時間完成更多作業。
發展脈絡
- 單道批處理 → 多道批處理系統 (引入多道程式設計) → 分時系統 → 即時系統。
- Ken Thompson 參與 Multics (首個分時 OS) 開發,後與 Dennis Ritchie 創造 Unix。
現代 OS 中的體現
Windows/Linux/macOS/Android/iOS 皆為多道程式設計系統,進階為多執行緒、多核心平行、虛擬記憶體、抢佔式排程等演進形式,核心思想不變:資源多工、並發控制、效能最大化。