行程是作業系統資源分配與排程的基本單位,理解其與程式的本質差異、生命週期狀態轉換、PCB 資料結構與控制原語,是掌握 OS 核心的關鍵。本文系統梳理行程管理理論基石。
| 維度 | 程式 | 行程 |
|---|---|---|
| 本質 | 靜態指令集合(磁碟上的可執行檔) | 動態執行實體(記憶體中的活躍實例) |
| 生命週期 | 永久(除非刪除檔案) | 暫時:建立 → 執行 → 等待 → 終止 |
| 並發性 | 無 | 核心特性,多行程交錯執行 |
| 資源擁有 | 不佔用執行期資源 | 擁有 PCB、記憶體、開啟檔案、訊號處理器等 |
| 對應關係 | 1 程式 → N 行程(多次執行、多使用者) 1 行程 → N 程式(動態載入共享庫、解譯器) |
派遣(dispatch) 時間片用盡/搶佔
就緒態 ----------------> 執行態 ----------------> 就緒態
^ |
| | 等待事件 (I/O、信號量、鎖)
| v
+------------------------ 等待態 (阻塞態)
事件發生/資源就緒 (wakeup)
延伸態:新建態、終止態、掛起態(Swapped Out,換出至磁碟)。
| 原語 | 功能 | 關鍵步驟 |
|---|---|---|
| create | 建立新行程 | 分配 PID、建立 PCB、初始化狀態、分配資源、載入程式碼、入就緒佇列 |
| terminate | 正常/異常結束 | 釋放資源、關閉檔案、釋放記憶體、通知父行程、回收 PCB |
| block | 主動進入等待 | 保存上下文、狀態→等待、從就緒/執行佇列移除、入等待佇列、排程器切換 |
| wakeup | 喚醒等待行程 | 從等待佇列移除、狀態→就緒、入就緒佇列、若優先權高可觸發搶佔 |
| suspend/resume | 掛起/恢復 | 換出/換入記憶體、更新 PCB、調整佇列 |