多層級回饋佇列 (MLFQ) 是一種 CPU 排程演算法,維護多個就緒佇列,各有不同優先權等級和時間量子值。新進程從最高優先權佇列開始,根據行為可能在佇列間升降。這自適應方法平衡互動型和 CPU 密集型進程需求。
多層級回饋佇列結構 佇列 0 (最高優先權) 時間量子: 1 佇列 1 (中優先權) 時間量子: 2 佇列 2 (最低優先權) FCFS CPU 新進程 時間用完則降級 老化機制:等待久則升級 進程移動規則 — 新進程從佇列 0 開始 — 時間量子用完 → 移至下一較低佇列 — 老化機制防止飢餓
MLFQ 運作方式
演算法以下列關鍵原則運作:
- 基於優先權排程:優先服務高優先權佇列
- 可變時間量子:高優先權佇列有較短時間片
- 動態優先權調整:進程根據行為在佇列間移動
- 老化機制:防止飢餓,提升長期等待進程
範例
考慮三個具有以下特徵的進程:
| 進程 | 到達時間 | 爆發時間 | 初始佇列 |
|---|---|---|---|
| P1 | 0 | 8 | 佇列 0 |
| P2 | 1 | 4 | 佇列 0 |
| P3 | 2 | 2 | 佇列 0 |
佇列 0 時間量子 = 1,佇列 1 時間量子 = 2,佇列 2 用 FCFS:
MLFQ 執行時間軸 P1 P2 P3 P2 P1 P2 P1 (佇列 2 - FCFS) 0 1 2 3 4 6 8 14 Q0 Q0 Q0 Q1 Q1 Q1 Q2
使用案例
MLFQ 在以下情境特別有效:
- 互動應用:網頁瀏覽器、文字編輯器、GUI 應用受益於用戶互動的快速回應時間
- 分時系統:互動和批次進程共存的多用戶系統
- 即時系統:需不同優先權等級處理關鍵和非關鍵任務的系統
- 遊戲應用:遊戲需靈敏輸入處理同時管理背景音訊和網路任務
優點
- 改善回應時間:短進程在高優先權佇列快速獲得關注
- 動態優先權調整:自動適應進程行為模式
- 防止飢餓:老化機制確保長期等待進程最終獲得 CPU 時間
- 良好吞吐量:有效平衡互動和批次處理需求
- 彈性配置:時間量子和佇列數可針對特定負載調整
缺點
- 實作複雜度:管理多佇列和不同策略增加系統複雜度
- 較高開銷 &minus
