普考-資訊處理計算機概要110 年第 27 題單選題
關於程序排程(Process Scheduling)演算法,下列敘述何者正確?
A輪流(Round Robin, RR)演算法有護衛效應(Convoy Effect)
B先到先服務(First-Come, First-Served, FCFS)演算法會有飢餓現象(Starvation)
C多層次回授佇列(Multilevel Feedback Queue)排程可以用來實現最短工作優先的目的正確答案
D不可搶奪式最短工作優先(Non-preemptive Shortest Job First)演算法可以得到最小平均等待時間
C正確答案
MLFQ 透過多層優先佇列動態調整,短工作會停在高優先層,近似 SJF 效果。
為什麼答案是 C
MLFQ 依據執行行為動態調整優先權:CPU 用很久者降級、I/O 多者停留高層。由於短工作很快結束不會降級,效果近似 SJF,但不需事先知道執行時間。
載入中…
完整詳解
Pro · 無限重點 MLFQ 透過多層優先佇列動態調整,短工作會停在高優先層,近似 SJF 效果。
記口訣:FCFS 才有護衛效應、SJF 才有飢餓、MLFQ 近似 SJF、搶奪式 SJF 才最佳。
逐選項分析
A✕ 陷阱
護衛效應是 FCFS 的經典缺點:一個 CPU-bound 長工作擋在前面,後面一堆短工作要等。RR 採時間配額輪流執行,不會有此問題。
B✕
FCFS 按到達順序服務,每個程序終究會輪到,不會飢餓。飢餓常見於 SJF(短工作一直插隊)或優先權排程(低優先權被壓死)。
C✓ 正確
MLFQ 依據執行行為動態調整優先權:CPU 用很久者降級、I/O 多者停留高層。由於短工作很快結束不會降級,效果近似 SJF,但不需事先知道執行時間。
D✕ 陷阱
能得到『最小平均等待時間』的是搶奪式 SJF(SRTF)。非搶奪式 SJF 若長工作已在執行,新來的短工作仍需等,平均等待時間不一定最小。
常見排程演算法特性對照
| 演算法 | 搶奪式 | 飢餓 | 護衛效應 |
|---|
| FCFS | 否 | 否 | 有(經典) |
| SJF (非搶奪) | 否 | 有 | 否 |
| SRTF (搶奪式SJF) | 是 | 有 | 否 |
| RR | 是 | 否 | 否 |
| MLFQ | 是 | 可能 | 否 |
MLFQ 的核心設計是「用執行時間長短自動分層」:短工作快速完成後就留在高優先層,長工作則被降到低層慢慢跑,結果就是短工作優先被服務,效果接近 SJF。考生最容易搞混的是「FCFS 會不會飢餓」跟「護衛效應到底屬於誰」:護衛效應(convoy effect)專指 FCFS 讓一個長工作卡住後面所有短工作的現象,而 FCFS 本身先到先做不會有飢餓問題。判斷準則:看演算法會不會因優先權而永遠排不到,FCFS 排隊制沒有優先權機制,所以不存在飢餓。