這次的作業主要是要根據以下四個行程(Processes),分別使用不同的 CPU 排程演算法,計算每個演算法的平均等待時間(Average Waiting Time, WT)。

行程到達時間 A分割時間 Burst優先順序
P1083
P2141
P3294
P4352

單位:時間單位

需要計算的排程演算法如下:

  1. FCFS(First Come First Serve,先來先服務)

  2. SJF(Shortest Job First,非搶先)

  3. SRTF(Shortest Remaining Time First,可搶先)

  4. RR(Round Robin,時間片 q=4)

  5. Priority(分為非搶先與可搶先兩種)

一、FCFS

計算等待時間:

  • WT₁ = 8 - 8 = 0

  • WT₂ = 12 - 5 = 7

  • WT₃ = 26 - 11 = 15

  • WT₄ = 17 - 8 = 9

平均等待時間:
(0 + 7 + 15 + 9) / 4 = 8.75


二、SJF

計算等待時間:

  • WT₁ = 8 - 8 = 0

  • WT₂ = 12 - 5 = 7

  • WT₃ = 26 - 11 = 15

  • WT₄ = 17 - 8 = 9

平均等待時間:
(0 + 7 + 15 + 9) / 4 = 7.75


三、SRTF

P1 : 8 -> 7 -> 0

P2 : 4 -> 0

P3 : 9 -> 0

P4 : 5 -> 0

計算等待時間:

  • WT₁ = 17 - 8 = 9

  • WT₂ = 5 - 5 = 0

  • WT₃ = 26 - 11 = 15

  • WT₄ = 10 - 8 = 2

平均等待時間:
(9 + 0 + 15 + 2) / 4 = 6.5


四、RR(時間片 q = 4)

P1 : 8 -> 4 -> 0

P2 : 4 -> 0

P3 : 9 -> 5 -> 1 -> 0

P4 : 5 -> 1 -> 0

行程執行順序:P1 → P2 → P3 → P4 → P1 → P3 → P4 → P3

計算等待時間:

  • WT₁ = 20 - 8 = 12

  • WT₂ = 8 - 5 = 3

  • WT₃ = 26 - 11 = 15

  • WT₄ = 25 - 8 = 17

平均等待時間:
(12 + 3 + 15 + 17) / 4 = 11.75


五、Priority

(1) 非搶先 Priority

行程執行順序:P1 → P2 → P4 → P3

計算等待時間:

  • WT₁ = 8 - 8 = 0

  • WT₂ = 12 - 5 = 7

  • WT₃ = 26 - 11 = 15

  • WT₄ = 17 - 8 = 9

平均等待時間:
(0 + 7 + 15 + 9) / 4 = 7.75


(2) 可搶先 Priority

P1 : 8 -> 7 -> 0

P2 : 4 -> 0

P3 : 9 -> 0

P4 : 5 -> 0

行程執行順序:P1 → P2 → P4 -> P1 → P3

計算等待時間:

  • WT₁ = 17 - 8 = 9

  • WT₂ = 5 - 5 = 0

  • WT₃ = 26 - 11 = 15

  • WT₄ = 10 - 8 = 2

平均等待時間:
(9 + 0 + 15 + 2) / 4 = 6.5


結論

排程演算法平均等待時間 (WT)
FCFS8.75
SJF(非搶先)7.75
SRTF(可搶先)6.5
RR(q=4)11.75
Priority(非搶先)7.75
Priority(可搶先)6.5

由結果可看出,可搶先型的 SRTF 與 Priority 演算法在此案例中具有最短的平均等待時間(6.5),效率最佳。