1. 程式人生 > >完成時間,週轉時間,平均週轉時間以及帶權週轉時間和平均帶權週轉時間

完成時間,週轉時間,平均週轉時間以及帶權週轉時間和平均帶權週轉時間

這裡僅對先來先服務(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...依次可計算出其他程序的完成時間。

以上就是兩種排程演算法下的完成時間具體計算步驟。