公務人員特種考試計算機大意112 年第 6 題單選題
最短工作優先(Shortest Job First, SJF)排班法是一種常見的 CPU 排班演算法,假設新進三個行程依序為 P1、P2、P3,其工作時間依序為 7、3、8,利用最短工作優先排班法的等待時間總和為何?
B正確答案
SJF 排班法的核心就是「工作時間越短越先做」。將行程依執行時間由小到大排序後,依序累加前面行程的執行時間,即可求出每個行程的等待時間。
為什麼答案是 B
依 SJF 規則,執行順序為 P2、P1、P3。P2 第一個執行等待 0;P1 等待 P2 執行完畢需 3;P3 等待 P2 和 P1 執行完畢需 3+7=10。總等待時間為 0+3+10=13。
載入中…
完整詳解
Pro · 無限重點 SJF 排班法的核心就是「工作時間越短越先做」。將行程依執行時間由小到大排序後,依序累加前面行程的執行時間,即可求出每個行程的等待時間。
1. 依時間短到長排序:P2(3) → P1(7) → P3(8)。2. 算等待時間:P2等0,P1等3,P3等(3+7)=10。3. 總和:0+3+10=13。
逐選項分析
A✕
10 是 P3 單一一個行程的等待時間(前面 P2 執行 3 + P1 執行 7),並非三個行程的等待時間「總和」。
B✓ 正確
依 SJF 規則,執行順序為 P2、P1、P3。P2 第一個執行等待 0;P1 等待 P2 執行完畢需 3;P3 等待 P2 和 P1 執行完畢需 3+7=10。總等待時間為 0+3+10=13。
C✕ 陷阱
這是使用「FCFS (先來先服務)」排班法算出來的答案!若依序 P1→P2→P3 執行,等待時間為 0 + 7 + (7+3) = 17。考選部很愛把其他演算法的答案放在選項裡騙粗心的考生。
D✕
18 是三個行程的「總執行時間」(7+3+8=18),也就是 CPU 總共要忙碌的時間,並非題目所求的「等待時間」。
SJF vs FCFS 排班法計算對照 (以本題為例)
| 排班演算法 | 執行順序 | 各行程等待時間 | 等待時間總和 |
|---|
| SJF (最短工作優先) | P2 → P1 → P3 | P2:0, P1:3, P3:10 | 13 (最佳化) |
| FCFS (先來先服務) | P1 → P2 → P3 | P1:0, P2:7, P3:10 | 17 |
題目給了「依序為 P1、P2、P3」,很多考生會順著這個順序直接算下去,這就掉進了 FCFS (先來先服務) 的陷阱(算出 17)。看到 SJF,第一步一定要「重新排序」!