進程調度
進程調度
進程調度是低階調度,負責在多個就緒進程中選擇一個進程,分配CPU,使其得以運作。其目標是有效利用CPU並滿足系統的效能需求。
進程調度的主要功能
選擇進程:
- 從就緒佇列中挑選一個最適合目前運行的進程,將CPU分配給它。
管理CPU的分配:
- 動態調整CPU分配策略,使CPU資源在進程間合理共享。
儲存與復原行程上下文:
- 在切換CPU控制權時,儲存目前進程的運作狀態(上下文);
- 恢復被調度進程的運作狀態,使其能繼續運作。
公平性與優先控制:
- 確保所有進程能公平競爭CPU;
- 依優先權、緊急程度等調度策略合理分配CPU。
支援多種調度演算法:
- 支援先來先服務(FCFS)、時間片輪轉、高反應比優先(HRRF)等多種演算法,以適應不同的系統需求。
進程調度的時機
進程調度通常在以下幾種情況下觸發:
進程運行結束:
- 目前進程執行完畢,CPU空閒,需要調度一個新的進程運行。
行程進入阻塞狀態:
- 目前進程因I/O請求、等待資源等原因無法繼續執行,從運行狀態切換到阻塞狀態,調度其他進程運行。
時間片用完(分時系統中):
- 目前進程的時間片耗盡,觸發進程切換,將CPU分配給下一個進程。
優先權搶佔:
- 在搶佔式調度中,當更高優先權的程序進入就緒佇列時,目前運行程序會中斷,CPU被指派給高優先權行程。
進程從阻塞狀態變成就緒狀態:
- 阻塞進程等待的事件完成後,會重新進入就緒狀態,可能會觸發新的進程調度。
系統呼叫完成後回傳:
- 系統呼叫或其他系統任務完成後,可能需要重新調度使用者程序。