目錄
- 批作業排程算法
- 首先理清概念:
- 常用的作業排程算法:
作業周轉時間 = 完成時間 - 送出時間
作業的帶權周轉時間 = 作業的周轉時間 / 運作時間
平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目
-
先來先服務算法(First Come Serve , FCFS)
是按作業進入系統的先後次序進行排程,即每次排程都在後被作業中選擇一個最先進入隊列的作業
特點:實作簡單,有利于長作業,不利于短作業**
示例:
起始:
作業 | 送出時間 | 運作時間(min) | 開始時間 | 結束時間 | 周轉時間 Ti /min | 帶權周轉時間 Wi /min |
---|---|---|---|---|---|---|
J1 | 8:00 | 60 | ||||
J2 | 8:50 | 30 | ||||
J3 | 9:00 | 12 | ||||
J4 | 9:10 | 6 |
第一輪:
- 先選擇先來的,即先送出的 J1 :8:00 ,将其作為第一個開始的,由于他前面沒有等待隊列,是以它的開始時間為:
8:00。
- 結束時間為開始時間加上運作時間:
8:00 + 60min = 9:00
- 周轉時間為:完成時間(結束時間) - 送出時間 =
-9:00
= 60min8:00
- 帶權周轉時間 : 作業的周轉時間 / 運作時間 =
/60
= 160
帶權周轉時間 Wi | ||||||
---|---|---|---|---|---|---|
8:00 | 9:00 | 1 | ||||
第二輪:
- 由于按照先來先選擇的算法,選l擇第二的, J1 :8:50 ,将其作為第二,由于他還需要等待他前面的完成了才到他,是以它的開始時間為:
9:00。
- 結束時間為:開始時間 + 運作時間 =
9:00 + 30min = 9:30
-
9:30
= 40min8:50
-
40
= 4/330
9:30 | 40 | 4/3 | ||||
剩下的以此類推。。。
最終為:
9:42 | 42 | 21/6 | ||||
9:48 | 38 | 19/3 |
平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目
= (1+4/3+21/6+19/)/4 ≈ 3.0417
-
最短作業優先(Shortest Job First SJF)
總是選擇估計計算時間最短的作業投入運作
特點:克服了FCFS 偏愛長作業的缺點,易于實作,會使系統平局周轉時間最短,系統吞吐量大;缺點是:1)需要預先知道作業所需的CPU時間 2)護士了作業等待時間,容易出現饑餓想象
- 由于J1是最先來的,此時沒有别的等待隊列,故先進行J1 ,是以它的開始時間為:
8:00。
-
8:00 + 60min = 9:00
-
9:00
= 60min8:00
-
60
60
- 選取在第一輪執行結束之後的時間之前
提前的作業中運作時間最低段的作為第二輪作業,即:在9:00
與J2:8:50
中選取運作時間最短的,即J3.是以第二輪的開始時間為:J3:9:00
9:00。
-
9:00 + 12min = 9:12
-
9:12
= 12min9:00
-
12
12
9:12 | ||||||
第三輪:
- 選取在第二輪執行結束之後的時間之前
9:12
J2:8:50
中選取運作時間最短的,即J4.是以第二輪的開始時間為:J4:9:10
9:12。
-
9:12 + 6min = 9:18
-
9:18
= 8min9:10
-
8
6
9:18 | 8 |
同理可得第四輪結果為:
58 | 29/15 | |||||
= (1+29/15+1+4/3)/4 ≈ 1.3167
-
響應比高者優先算法(Highest Response Ratio First ,HRRF)
計算後備作業隊列中每個作業的響應比,然後挑選響應比最高者。
其中響應比計算公式為:\(\frac {作業的響應時間}{作業的運作時間}\) = \(\frac {作業的等待時間+作業的運作時間}{作業的運作時間}\)= 1+ \(\frac {作業的等待時間}{作業的運作時間}\)
特點:即考慮作業的等待時間,有考慮作業的運作時間,是介于上述兩種算法的折中算法。缺點是每次都要計算各道的作業響應比,有一定的時間開銷。
- 首先還是一樣的先執行第一個送出的作業J1,是以送出時間時間即為運作時間:
,8:00
-
8:00 + 60min = 9:00
-
9:00
8:00
-
60
60
-
更新第一輪結束時間之前送出的作業的等待時間。
顯然,滿足條件(在結束時間9:00之前送出作業的)有J2,J3
等待時間為:
上個作業結束時間
該作業送出時間
顯然,J1 = 0
J2 = 9:00 - 8:50 = 10
J3 = 9:00 - 9:00 = 0
- 首先還是一樣的先執行第一個送出的作業J1,是以送出時間時間即為運作時間:
等待時間/min | |||||||
---|---|---|---|---|---|---|---|
10 | |||||||
- 首先在滿足條件(在第一輪完成時間之前送出的作業)中選取響應比最大的作為第二輪作業任務
- J2 = 1 + 10/30
- J3 = 1 + 0/12
顯然,響應比:J2 > J3
是以選取J2作為第二輪的任務,其開始時間為
:9:00第一輪結束時間
-
9:00 + 30min = 9:30
-
8:50
9:30
-
40
30
-
更新第二輪結束時間之前送出的作業的等待時間。
顯然,滿足條件(在結束時間9:30之前送出作業的)有J3,J4
上個作業結束時間
該作業送出時間
J3 = 9:30 - 9:00 = 30
J4 = 9:30 - 9:10 = 20
20 |
- 首先在滿足條件(在第二輪完成時間之前送出的作業)中選取響應比最大的作為第二輪作業任務
- J3 = 1 + 30/12
- J4 = 1 + 20/6
顯然,響應比:J4 > J3
是以選取J4作為第三輪的任務,其開始時間為
:9:30第二輪結束時間
-
9:30 + 6min = 9:36
-
9:36
= 26min9:10
-
26
= 13/36
- 顯然,滿足條件(在結束時間9:36之前送出作業的)有J3
上個作業結束時間
J3 = 9:36 - 9:00 = 36該作業送出時間
36 | |||||||
9:36 | 26 | 13/3 |
同理可得第四輪結果:
48 | 4 | ||||||