作業系統之排程演算法

祺啾發表於2020-12-28

排程演算法的評價指標

  • cpu利用率

cpu利用率=cpu有效工作時間 / (cpu有效工作時間+cpu空閒時間)

  • 系統吞吐量:單位時間內完成作業的數量

系統吞吐量=總共完成作業數 / 總共耗費時間

  • 週轉時間:從作業被提交到作業完成為止的時間間隔

週轉時間 = 作業完成時間 - 作業提交時間

  • 帶權週轉時間

帶權週轉時間 = 週轉時間 / 作業實際執行時間

  • 平均週轉時間

平均週轉時間 = 各作業週轉時間之和 / 作業數

  • 平均帶權週轉時間

平均帶權週轉時間 = 各作業帶權週轉時間之和 / 作業數

  • 等待時間:程式或者作業處於等待處理機狀態時間之和
  • 只涉及計算,不涉及I/O操作:
    等待時間 = 週轉時間 - 執行時間
  • 若涉及I/O操作,則:
    等待時間 = 週轉時間 - 執行時間 - I/O操作時間
  • 響應時間:提出請求到首次收到回覆的時間

補充

程式排程方式:
1.非剝奪排程方式也稱為非搶佔方式:只允許程式主動放棄處理機
2.剝奪排程方式也稱為搶佔方式:程式狀態可以被動進入阻塞態

排程演算法

一、不適合用於互動式系統
1.先來先服務(FCFS排程演算法)

  • 演算法:按照程式或者作業到達的先後順序
  • 特徵:非搶佔式演算法;適用於作業排程,也適用於程式排程
  • 優點:公平、演算法實現簡單
  • 缺點:排在長作業後面的短作業需要等待很長時間,帶權周 轉時間大,對短作業來說使用者體驗不好。即FCFS演算法對長作業有利,對短作業不利

例題:用先來先服務排程演算法求下表中各個程式的週轉時間、帶權週轉時間、等待時間、平均週轉時間、平均帶權週轉時間、平均等待時間在這裡插入圖片描述
排程順序:P1->P2->P3->P4(按照到達的先後順序)
在這裡插入圖片描述

  • 週轉時間:
    (1) P1 = 7-0 = 7 (2) P2 = 11-2 = 9
    (3) P3 = 12-4 = 8 (4) P4 = 16-5 = 11
  • 帶權週轉時間:
    (1) P1= 7/7 = 1 (2) P2 = 9/4 = 2.25
    (3) P3 = 8/1 = 8 (4) P4 = 11/4 = 2.75
  • 等待時間:
    (1) P1= 7-7 = 0 (2) P2 = 9-4 = 5
    (3) P3 = 8-1 = 7 (4) P4 = 11-4 = 7
  • 平均週轉時間 = (7+9+8+11) / 4 = 8.75
  • 平均帶權週轉時間 = (1+2.25+8+2.75) / 4 = 3.5
  • 平均等待時間 = (0+5+7+7) / 4 =4.75

2.短作業優先(SJF排程演算法)

  • 演算法:當前已經到達且最短的作業或者程式優先得到服務
  • 特徵:非搶佔式演算法,也有搶佔式演算法【最短剩餘時間優先演算法(SRTN演算法)】;適用於作業排程,也適用於程式排程
  • 優點:最短的平均等待時間、平均週轉時間
  • 缺點:對短作業有利,對長作業不利,可能產生飢餓現象

例題:(1)用短作業優先非搶佔式排程演算法:求下表中各個程式的週轉時間、帶權週轉時間、等待時間、平均週轉時間、平均帶權週轉時間、平均等待時間
在這裡插入圖片描述
排程順序:P1->P3->P2->P4

  • 0時刻:只有P1到達

  • 7時刻:P2、P3、P4均到達且P3執行時間最短,選擇P3

  • 8時刻:P2比P4先到達,所以選擇P2
    在這裡插入圖片描述

  • 週轉時間:
    (1) P1 = 7-0 = 7 (2) P2 = 12-2 = 10
    (3) P3 = 8-4 = 4 (4) P4 = 16-5 = 11

  • 帶權週轉時間:
    (1) P1= 7/7 = 1 (2) P2 = 10/4 = 2.5
    (3) P3 = 4/1 = 4 (4) P4 = 11/4 = 2.75

  • 等待時間:
    (1) P1= 7-7 = 0 (2) P2 = 10-4 = 6
    (3) P3 = 4-1 = 3 (4) P4 = 11-4 = 7

  • 平均週轉時間 = (7+4+10+11) / 4 = 8

  • 平均帶權週轉時間 = (1+2.5+4+2.75) / 4 = 2.56

  • 平均等待時間 = (0+6+3+7) / 4 =4

(2)用最短剩餘時間優先演算法:求下表中程式的排程順序在這裡插入圖片描述
注:(1)每當有程式加入就緒佇列,就需要進行程式排程
(2)Pi(n):i代表第i個程式,n代表執行時間
排程順序:

  • 0時刻:只有P1到達:P1(7)
  • 2時刻:P2加入就緒佇列,此時P1(5)、P2(4),選擇P2
  • 4時刻:P3加入就緒佇列,此時P1(5)、P2(2)、P3(1),選擇P3
  • 5時刻:P4加入就緒佇列,此時P1(5)、P2(2)、P4(4),選擇P2
  • 7時刻:P1(5)、P4(4)選擇P4

    P1->P2->P3->P2->P4->P1
    在這裡插入圖片描述

3.高響應比優先演算法(HRRN)

  • 演算法:每次排程時先計算各個作業或者程式的響應比,響應比最高的優先
  • 響應比 = (等待時間+要求服務時間)/ 要求服務時間
  • 特徵:非搶佔式演算法;適用於作業排程,也適用於程式排程
  • 優缺點:
    1.綜合考慮等待時間和執行時間。
    2.等待時間相同時,具有SJF排程演算法的優點。
    3.要求服務時間相同時,具有FCFS排程演算法的優點。
    4.對於長作業,隨著等待時間越來越久,其響應比會越來越大

例題:用高響應比優先演算法:求下表中程式的排程順序
在這裡插入圖片描述
響應比求解:
0時刻:只有P1
7時刻:

  • P2等待時間 = 7-2 = 5,P2響應比 = (5+4)/ 4 = 2.25
  • P3等待時間 = 7-4 = 3,P3響應比 =(3+1)/ 1 = 4
  • P4等待時間 = 7-5 = 2,P4響應比 = (2+4)/ 4 = 1.5
    所以選擇P3

8時刻:

  • P2等待時間 = 8-2 = 6,P2響應比 = (6+4)/ 4 = 2.5
  • P4等待時間 = 8-5 = 3,P4響應比 = (3+4)/ 4 = 1.75
    所以選擇P2

12時刻:只有P4

排程順序:P1->P3->P2->P4

在這裡插入圖片描述
二、適合用於互動式系統
1.時間片輪轉排程演算法(RR)

  • 演算法:按照各程式到達就緒佇列的順序,輪流讓各個程式執行一個時間片。若程式未在一個時間片內執行完,則剝奪處理機,將程式重新放到就緒佇列隊尾重新排列
  • 特徵:搶佔式演算法;僅適用於程式排程
  • 優點:公平、響應快,適用於分時作業系統
  • 缺點:高頻率的程式切換導致有一定開銷;不區分任務緊急程度
  • 時間片設定:
    1.時間片太大,會退化為FCFS演算法,並且會增大程式響應時間
    2.時間片太小,會導致程式切換過於頻繁,系統會花大量時間來處理程式切換,從而導致實際用於程式執行的實際比例減少。

例題:用時間片輪轉排程演算法:分析時間片大小為2時的程式執行情況
在這裡插入圖片描述
時間片大小為2:

  • 0時刻:只有P1,P1(5)
  • 2時刻:
    P2到達,插入就緒佇列;P1未執行完,重新插入就緒佇列隊尾:P2(4)->P1(3)
  • 4時刻:
    P3到達,插入就緒佇列,P2未執行完,重新插入就緒佇列:P1(3)->P3(1)->P2(2)
  • 5時刻:
    P4到達,插入就緒佇列:P1(2)->P3(1)->P2(2)->P4(6)
  • 6時刻:
    P1未執行完,重新插入就緒佇列隊尾:P3(1)->P2(2)->P4(6)->P1(1)
  • 7時刻:
    P3執行完,提前程式排程: P2(2)->P4(6)->P1(1)
  • 9時刻:
    P4(6)->P1(1)

    排程順序:P1->P2->P1->P3->P2->P4->P1->P4
    在這裡插入圖片描述

2.優先順序排程演算法

  • 演算法:每個作業或者程式有各自的優先順序數,優先順序數高的優先
  • 特徵:搶佔式演算法,也有非搶佔式演算法;適用於程式排程和作業排程,也可用於I/O排程
  • 優點:用優先順序區分緊急程度、重要程度,適用於實時作業系統,比較靈活
  • 缺點:若源源不斷地有高階優先程式到來,可能導致飢餓。

例題:(1)用優先順序排程非搶佔式演算法:求下表中程式的排程順序(一般情況,優先數越大,優先順序越高)在這裡插入圖片描述
排程順序:

  • 0時刻:只有P1
  • 7時刻:P2、P3、P4依次已到達,P3優先數高,選擇P3
  • 8時刻:P2和P4優先數相同,P2先到達,選擇P2

    P1->P3->P2->P4
    在這裡插入圖片描述

(2)用優先順序排程非搶佔式演算法:求下表中程式的排程順序(一般情況,優先數越大,優先順序越高)在這裡插入圖片描述
排程順序:

  • 0時刻:只有P1到達,P1(7)
  • 2時刻:P2到達,排程切換,此時:P2(4)、P1(5),但P2優先數高,所以選擇P2
  • 4時刻:P3到達,排程切換,此時:P1(5)、P2(2)、P3(1),P3優先數高,選擇P3
  • 5時刻:P4到達,此時:P1(5)、P2(2)、P4(4),P2和P4優先數高且相等,但P2先到達就緒佇列,選擇P2

    P1->P2->P3->P2->P4->P1
    在這裡插入圖片描述

3.多級反饋佇列排程演算法

  • 演算法:
    1.設定多級就緒佇列,各級佇列優先順序從高到低,時間片從小到大
    2.新程式到達時先進入第1級佇列,按FCFS原則排隊等待分配時間片,若用完時間片程式還未結束,則程式進入下一級佇列隊尾。如果此時已經在最下級佇列,則重新放回該佇列隊尾
    3.只有第K級佇列為空時,才會為K+1級隊頭程式分配時間片
  • 特徵:搶佔式演算法,也有非搶佔式演算法;適用於程式排程
  • 優點:用優先順序區分緊急程度、重要程度,適用於實時作業系統,比較靈活
  • 缺點:若源源不斷地有高階優先程式到來,可能導致飢餓。

例題:用多級反饋佇列排程演算法:分析下表中程式執行的過程
在這裡插入圖片描述
多級就緒佇列
在這裡插入圖片描述

分析:

  • 0時刻:P1進入第1級佇列,執行時間片,此時:P1(7),P1進入第2級佇列
  • 1時刻:P2進入第1級佇列,因為第1級佇列有程式,所以不執行第2級佇列,對P2執行時間片,此時:P1(7),P2(3),P2進入第2級佇列
  • 2時刻:因為第1級佇列沒有程式,所以排程P1,此時:P1(5),P2(3),P1進入第3級佇列
  • 4時刻:P2(3),P1(5),執行第2級佇列,排程P2,此時P2(2),P1(5)
  • 5時刻:P3到達,搶佔處理機,此時:P3(1),P2(2),P1(5)
  • 6時刻:P3處理完成,繼續執行P2,此時:P2(2),P1(5)
  • 8時刻:只剩P1,在第3級佇列
    P1->P2->P1->P2->P3->P2->P1

在這裡插入圖片描述

相關文章