批作業調度算法


批作業調度算法

首先理清概念:

​ 作業周轉時間 = 完成時間 - 提交時間

​ 作業的帶權周轉時間 = 作業的周轉時間 / 運行時間

​ 平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目

常用的作業調度算法:

  • 先來先服務算法(First Come Serve , FCFS)

    是按作業進入系統的先后次序進行調度,即每次調度都在后被作業中選擇一個最先進入隊列的作業

    特點:實現簡單,有利於長作業,不利於短作業**

    示例:

起始:

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60
J2 8:50 30
J3 9:00 12
J4 9:10 6

第一輪:

  1. 先選擇先來的,即先提交的 J1 :8:00 ,將其作為第一個開始的,由於他前面沒有等待隊列,所以它的開始時間為:8:00。

  2. 結束時間為開始時間加上運行時間:8:00 + 60min = 9:00

  3. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:00 - 8:00 = 60min

  4. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 60 / 60 = 1

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30
J3 9:00 12
J4 9:10 6

第二輪:

  1. 由於按照先來先選擇的算法,選l擇第二的, J1 :8:50 ,將其作為第二,由於他還需要等待他前面的完成了才到他,所以它的開始時間為:9:00。

  2. 結束時間為:開始時間 + 運行時間 = 9:00 + 30min = 9:30

  3. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:30 - 8:50 = 40min

  4. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 40 / 30 = 4/3

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30 9:00 9:30 40 4/3
J3 9:00 12
J4 9:10 6

剩下的以此類推。。。

最終為:

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30 9:00 9:30 40 4/3
J3 9:00 12 9:30 9:42 42 21/6
J4 9:10 6 9:42 9:48 38 19/3

平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目

​ = (1+4/3+21/6+19/)/4 ≈ 3.0417


  • 最短作業優先(Shortest Job First SJF)

    總是選擇估計計算時間最短的作業投入運行

    特點:克服了FCFS 偏愛長作業的缺點,易於實現,會使系統平局周轉時間最短,系統吞吐量大;缺點是:1)需要預先知道作業所需的CPU時間 2)護士了作業等待時間,容易出現飢餓想象

    示例:

    起始:

    作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
    J1 8:00 60
    J2 8:50 30
    J3 9:00 12
    J4 9:10 6

第一輪:

  1. 由於J1是最先來的,此時沒有別的等待隊列,故先進行J1 ,所以它的開始時間為:8:00。

  2. 結束時間為:開始時間 + 運行時間 = 8:00 + 60min = 9:00

  3. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:00 - 8:00 = 60min

  4. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 60 / 60 = 1

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30
J3 9:00 12
J4 9:10 6

第二輪:

  1. 選取在第一輪執行結束之后的時間之前9:00提前的作業中運行時間最低段的作為第二輪作業,即:在J2:8:50J3:9:00中選取運行時間最短的,即J3.所以第二輪的開始時間為:9:00。

  2. 結束時間為:開始時間 + 運行時間 = 9:00 + 12min = 9:12

  3. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:12 - 9:00 = 12min

  4. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 12 / 12 = 1

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30 9:00 9:12 12 1
J3 9:00 12
J4 9:10 6

第三輪:

  1. 選取在第二輪執行結束之后的時間之前9:12提前的作業中運行時間最低段的作為第二輪作業,即:在J2:8:50J4:9:10中選取運行時間最短的,即J4.所以第二輪的開始時間為:9:12。

  2. 結束時間為:開始時間 + 運行時間 = 9:12 + 6min = 9:18

  3. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:18 - 9:10 = 8min

  4. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 8 / 6 = 4/3

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30
J3 9:00 12 9:00 9:12 12 1
J4 9:10 6 9:12 9:18 8 4/3

同理可得第四輪結果為:

作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 60 1
J2 8:50 30 9:18 9:48 58 29/15
J3 9:00 12 9:00 9:12 12 1
J4 9:10 6 9:12 9:18 8 4/3

平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目

​ = (1+29/15+1+4/3)/4 ≈ 1.3167


  • 響應比高者優先算法(Highest Response Ratio First ,HRRF)

    計算后備作業隊列中每個作業的響應比,然后挑選響應比最高者。

    其中響應比計算公式為:\(\frac {作業的響應時間}{作業的運行時間}\) = \(\frac {作業的等待時間+作業的運行時間}{作業的運行時間}\)= 1+ \(\frac {作業的等待時間}{作業的運行時間}\)

    特點:即考慮作業的等待時間,有考慮作業的運行時間,是介於上述兩種算法的折中算法。缺點是每次都要計算各道的作業響應比,有一定的時間開銷。

    示例:

    起始:

    作業 提交時間 運行時間(min) 開始時間 結束時間 周轉時間 T/min 帶權周轉時間 Wi /min
    J1 8:00 60
    J2 8:50 30
    J3 9:00 12
    J4 9:10 6

    第一輪:

    1. 首先還是一樣的先執行第一個提交的作業J1,所以提交時間時間即為運行時間:8:00

    2. 結束時間為:開始時間 + 運行時間 = 8:00 + 60min = 9:00

    1. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:00 - 8:00 = 60min

    2. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 60 / 60 = 1

    3. 更新第一輪結束時間之前提交的作業的等待時間。

      顯然,滿足條件(在結束時間9:00之前提交作業的)有J2,J3

      ​ 等待時間為:上個作業結束時間 - 該作業提交時間

      ​ 顯然,J1 = 0

      ​ J2 = 9:00 - 8:50 = 10

      ​ J3 = 9:00 - 9:00 = 0

作業 提交時間 運行時間(min) 開始時間 結束時間 等待時間/min 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 0 60 1
J2 8:50 30 10
J3 9:00 12 0
J4 9:10 6

第二輪:

  1. 首先在滿足條件(在第一輪完成時間之前提交的作業)中選取響應比最大的作為第二輪作業任務

    • J2 = 1 + 10/30
    • J3 = 1 + 0/12

    顯然,響應比:J2 > J3

    因此選取J2作為第二輪的任務,其開始時間為第一輪結束時間:9:00

  2. 結束時間為:開始時間 + 運行時間 = 9:00 + 30min = 9:30

  1. 周轉時間為:完成時間(結束時間) - 提交時間 = 8:50 - 9:30 = 40min

  2. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 40 / 30 = 4/3

  3. 更新第二輪結束時間之前提交的作業的等待時間。

    顯然,滿足條件(在結束時間9:30之前提交作業的)有J3,J4

    ​ 等待時間為:上個作業結束時間 - 該作業提交時間

    ​ J3 = 9:30 - 9:00 = 30

    ​ J4 = 9:30 - 9:10 = 20

作業 提交時間 運行時間(min) 開始時間 結束時間 等待時間/min 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 0 60 1
J2 8:50 30 9:00 9:30 10 40 4/3
J3 9:00 12 30
J4 9:10 6 20

第三輪:

  1. 首先在滿足條件(在第二輪完成時間之前提交的作業)中選取響應比最大的作為第二輪作業任務

    • J3 = 1 + 30/12
    • J4 = 1 + 20/6

    顯然,響應比:J4 > J3

    因此選取J4作為第三輪的任務,其開始時間為第二輪結束時間:9:30

  2. 結束時間為:開始時間 + 運行時間 = 9:30 + 6min = 9:36

  1. 周轉時間為:完成時間(結束時間) - 提交時間 = 9:36 - 9:10 = 26min

  2. 帶權周轉時間 : 作業的周轉時間 / 運行時間 = 26 / 6 = 13/3

  3. 更新第二輪結束時間之前提交的作業的等待時間。

    顯然,滿足條件(在結束時間9:36之前提交作業的)有J3

    ​ 等待時間為:上個作業結束時間 - 該作業提交時間

    ​ J3 = 9:36 - 9:00 = 36

作業 提交時間 運行時間(min) 開始時間 結束時間 等待時間/min 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 0 60 1
J2 8:50 30 9:00 9:30 10 40 4/3
J3 9:00 12 36
J4 9:10 6 9:30 9:36 20 26 13/3

同理可得第四輪結果:

作業 提交時間 運行時間(min) 開始時間 結束時間 等待時間/min 周轉時間 T/min 帶權周轉時間 Wi /min
J1 8:00 60 8:00 9:00 0 60 1
J2 8:50 30 9:00 9:30 10 40 4/3
J3 9:00 12 9:36 9:48 36 48 4
J4 9:10 6 9:30 9:36 20 26 13/3

平均周轉時間 = 各作業的帶權周轉時間之和 / 作業數目

​ = (1+4/3+4+13/3)/4 ≈ 2.6667

並且不難看出,響應比高者優先算法的效率是介於最短作業優先來先服務算法



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM