Ch.5 排班演算法 1. 先來先做排班法(FCFS) p.154 P1 的等待時間 = 0 行程 分割時間 P1 24 P2 的等待時間 = 24 P2 3 P3 的等待時間 = 27 P3 3 平均等待時間 = ( 0 + 24 + 27 )/3 = 17 2. 最短工作先做排班法(SJF) p.156 P1 的等待時間 = 3 行程 分割時間 P1 6 P2 的等待時間 = 16 P2 8 P3 的等待時間 = 9 P3 7 P4 的等待時間 = 0 P4 3 平均等待時間 = ( 3 + 16 + 9 + 0 )/4 = 7 3. 優先權排班演算法 p.158 行程 分割時間 優先順序 P1 的等待時間 = 6 P1 10 3 P2 的等待時間 = 0 P2 1 1 P3 的等待時間 = 16 P3 2 4 P4 的等待時間 = 18 P4 1 5 P5 的等待時間 = 1 P5 3 2 平均等待時間 = ( 6 + 0 + 16 + 18 + 1)/5 = 8.2 4. 依序循環排班演算法(此例時間量為 4 毫秒) p.160 P1 的等待時間 = 0 P1 再次等待時間 = 6 行程 分割時間 P1 24 P2 的等待時間 = 4 P2 3 P3 的等待時間 = 7 P3 3 平均等待時間 = ( 0 + 4 + 7+ 6 )/3 = 5.66 5. 多層佇列的排班方式 p.163 一般來說,前景的佇列比背景的佇列優先順序要高。每一佇列都分別有它的排班法則。 6. 多層回饋佇列的排班法則(最適用,但最麻煩) p.164 每一個行程剛進入就緒佇列時,都是安排在 0 號佇列。這個佇列的時間量是 8 毫秒,在這時間之內 未完的工作就安排到下一層,也就是 1 號佇列的尾端。如果這個佇列 0 沒有任何就緒行程存在,則 接著執行位於 1 號佇列前端的行程,時間量為 16 毫秒。如果還是執行不完,就轉移到最後一層, 也就是 2 號佇列尾端。只有當佇列 0 和 1 是空的時候,佇列 2 的工作才按 FCFS 的方式處理。 多層回饋佇列的排班法則都是依據以下幾個參數決定: (1) 佇列個數 (2) 每一個佇列的排班法則 (3) 決定什麼時候把行程提升到佇列的方法 (4) 決定降低高優先佇列的行程到下層佇列時間的方法 (5) 當行程需要服務時,決定該行程進入哪一個佇列的方法 另外,還有考 P.199 的下面解釋 S1; Signal(synch); Wait(synch); S2;