完成時間,週轉時間,平均週轉時間以及帶權週轉時間和平均帶權週轉時間
阿新 • • 發佈:2019-01-04
這裡僅對先來先服務(FCFS)以及短作業優先(SJF)兩種排程演算法的相關計算做一個說明和比較
首先我們必須明確:FCFS和SJF兩種排程演算法,只有在程序的完成時間計算上有一些區別,其他時間(週轉時間等)的計算都是相同的。 週轉時間
週轉時間=完成時間-到達時間
帶權週轉時間=週轉時間/服務時間(除法運算)
平均週轉時間=週轉時間/程序數(除法運算)
平均帶權週轉時間=帶權週轉時間/程序數(除法運算)
1. FCFS的完成時間計算步驟:
step1:找出最先到達的程序(該程序的完成時間=到達時間+服務時間);
step2 : 根據給出的到達時間,找出下一個到達的程序(該程序的完成時間=上一程序的完成時間+該程序的服務時間);
step3 :重複step2直至完成所有程序的計算;
舉個例子:
程序名 | A | B | C | D | E |
---|---|---|---|---|---|
到達時間 | 0 | 1 | 3 | 4 | 6 |
服務時間 | 5 | 7 | 3 | 8 | 2 |
完成時間 | 5 | 12 | 15 | 23 | 25 |
step1. 根據例子中給出的程序到達時間,確定A程序是最先到達的。計算出程序A的完成時間為:A的到達時間+A的服務時間=5+0=5; step2. 根據到達時間,確定下一到達程序為B。計算出程序B的完成時間為:程序A的完成時間+程序B服務時間=5+7=12; step3. 重複step2。根據到達時間,確定下一到達程序為C。計算出C的完成時間為:程序B的完成時間+程序C的服務時間=12+3=15...依次類推計算D和E程序的完成時間
2. SJF的完成時間計算步驟:
step1:找出最先到達的程序(該程序的完成時間=到達時間+服務時間);
step2:根據上一程序的完成時間,找到在這個完成時間內所有到達的程序,並找到這些程序中服務時間最短的那個,然後計算它的完成時間(該程序的完成時間=上一程序的完成時間+該程序服務時間);
step3:重複step2,直至完成所有程序的計算。
還是上面的那個例子:
程序名 | A | B | C | D | E |
---|---|---|---|---|---|
到達時間 | 0 | 1 | 3 | 4 | 6 |
服務時間 | 5 | 7 | 3 | 8 | 2 |
完成時間 | 5 | 17 | 8 | 25 | 10 |
step1. 根據例子中給出的程序到達時間,確定A程序是最先到達的。計算出程序A的完成時間為:A的到達時間+A的服務時間=5+0=5;
step2.根據上一程序A的完成時間5,可確定已經到達的程序為A、B、C、D(程序E的到達時間為6,所以時間為5時程序E還沒到達);其中由於C的服務時間最短,所以下一程序確定為C,C的完成時間為:A的完成時間+C的服務時間=3+5=8;
step3. 重複step2。根據上一程序C的完成時間10,可確定,已經到達的程序有A、B、C、D、E;其中由於E的服務時間最短,所以下一程序確定為E,E的完成時間為:C的完成時間+E的服務時間=8+2=10...依次可計算出其他程序的完成時間。
以上就是兩種排程演算法下的完成時間具體計算步驟。