進程的控制
進程的生命週期
產生、運作、暫停、終止
進程控制
作業系統透過進程控制原語來管理進程的狀態轉換。常見的進程控制操作包括:
-
進程創建:
- 建立一個新進程,並為其分配必要的資源,初始化 PCB。
- 建立後,進程進入就緒狀態,等待調度器分配 CPU 時間。
-
進程撤銷:
- 撤銷(終止)進程,回收進程佔用的資源,並從系統中移除其 PCB。
- 終止原因可能包括程式正常結束、使用者主動結束、異常錯誤等。
-
進程阻塞:
- 進程在運作過程中,如果需要等待某個事件(如 I/O 完成、訊號到達),則進入阻塞狀態。
- 進程阻塞後會釋放 CPU,允許其他行程執行。
-
進程喚醒:
- 當阻塞的進程等待的事件發生時,進程被喚醒,進入就緒狀態。
- 喚醒操作通常由作業系統或其他程序觸發。
-
改變進程優先數:
- 調整行程的優先權,以改變行程在調度時的優先順序。
- 優先權高的行程會比優先權低的行程更早被調度執行。
-
進程調度:
- 從就緒佇列中選擇一個進程,將其切換為運行狀態,開始執行。
- 調度器根據調度演算法(如先來先服務、優先權調度、時間片輪轉等)選擇合適的進程。
四種流程控制原語
在作業系統中,常用的四種程序控制原語包括:
1. 進程阻塞(Block)
- 功能:將運作狀態的程序轉換為阻塞狀態。
- 觸發條件:當進程執行 I/O 操作、等待某事件(如信號量)時,需要進入阻塞狀態。
2. 進程喚醒(Wakeup)
- 功能:將阻塞狀態的程序轉換為就緒狀態。
- 觸發條件:當等待的事件發生(如 I/O 完成、資源可用),進程被喚醒,重新進入就緒狀態。
3. 進程建立(Create)
- 功能:建立一個新進程,將其置為就緒狀態。
- 觸發條件:當系統或使用者需要建立新任務時,會呼叫程序建立原語。
4. 進程調度(Dispatch/Schedule)
- 功能:將就緒狀態的程序切換為運作狀態。
- 觸發條件:CPU 空閒或時間片結束時,調度器從就緒佇列中選擇一個程序執行。