跳轉至

進程的控制

進程的生命週期

產生、運作、暫停、終止

進程控制

作業系統透過進程控制原語來管理進程的狀態轉換。常見的進程控制操作包括:

  1. 進程創建

    • 建立一個新進程,並為其分配必要的資源,初始化 PCB。
    • 建立後,進程進入就緒狀態,等待調度器分配 CPU 時間。
  2. 進程撤銷

    • 撤銷(終止)進程,回收進程佔用的資源,並從系統中移除其 PCB。
    • 終止原因可能包括程式正常結束、使用者主動結束、異常錯誤等。
  3. 進程阻塞

    • 進程在運作過程中,如果需要等待某個事件(如 I/O 完成、訊號到達),則進入阻塞狀態
    • 進程阻塞後會釋放 CPU,允許其他行程執行。
  4. 進程喚醒

    • 當阻塞的進程等待的事件發生時,進程被喚醒,進入就緒狀態
    • 喚醒操作通常由作業系統或其他程序觸發。
  5. 改變進程優先數

    • 調整行程的優先權,以改變行程在調度時的優先順序。
    • 優先權高的行程會比優先權低的行程更早被調度執行。
  6. 進程調度

    • 從就緒佇列中選擇一個進程,將其切換為運行狀態,開始執行。
    • 調度器根據調度演算法(如先來先服務、優先權調度、時間片輪轉等)選擇合適的進程。

四種流程控制原語

在作業系統中,常用的四種程序控制原語包括:

1. 進程阻塞(Block)

  • 功能:將運作狀態的程序轉換為阻塞狀態。
  • 觸發條件:當進程執行 I/O 操作、等待某事件(如信號量)時,需要進入阻塞狀態。

2. 進程喚醒(Wakeup)

  • 功能:將阻塞狀態的程序轉換為就緒狀態。
  • 觸發條件:當等待的事件發生(如 I/O 完成、資源可用),進程被喚醒,重新進入就緒狀態。

3. 進程建立(Create)

  • 功能:建立一個新進程,將其置為就緒狀態。
  • 觸發條件:當系統或使用者需要建立新任務時,會呼叫程序建立原語。

4. 進程調度(Dispatch/Schedule)

  • 功能:將就緒狀態的程序切換為運作狀態。
  • 觸發條件:CPU 空閒或時間片結束時,調度器從就緒佇列中選擇一個程序執行。