例題:
計算在單CPU環境下,采用FCFS調度算法、SJF優先調度算法時的平均周轉時間和平均帶權周轉時間,並指出它們的調度順序。
進程號 |
到達時刻 |
服務時間(小時) |
A |
9:00 |
2 |
B |
9:30 |
1 |
C |
9:40 |
0.5 |
D |
10:30 |
0.4 |
公式:
周轉時間 = 完成時間 - 到達時間
帶權周轉時間 = 周轉時間 / 服務時間
平均周轉時間 = 周轉時間 / 進程數量
平均帶權周轉時間 = 帶權周轉時間 / 進程數量
完成時間的計算方法不同,分別如下:
先來先服務(FCFS)調度算法:
FCFS調度順序:A、B、C、D(先來先服務)
FCFS完成時間:A(完成時間)=A(到達時間)+A(服務時間)=9+2=11
B(完成時間)=A(完成時間)+B(服務時間)=11+1=12
C(完成時間)=B(完成時間)+C(服務時間)
D(完成時間)=C(完成時間)+D(服務時間)
(該進程完成時間 =上一進程的完成時間 + 這個進程的服務時間)
單位要轉化
進程號 | 到達時刻 | 服務時間(小時) | 開始時間 | 完成時間 | 周轉時間(小時) | 帶權周轉時間 |
A | 9:00 | 2 | 9 | 11 | 2 | 1 |
B | 9:30 | 1 | 11 | 12 | 2.5 | 2.5 |
C | 9:40 | 0.5 | 12 | 12:30 | 2.83 | 5.66 |
D | 10:30 | 0.4 | 12:30 | 12:54 | 2.4 | 6 |
平均周轉時間:(2+2.5+2.38+2.4)/4=2.32
平均帶權周轉時間:(1+2.5+5.66+6)/4=3.79
短作業優先(SJF)調度算法:
SJF調度順序:A、D、C、B
SJF完成時間: A(完成時間)=A(到達時間)+A(服務時間)
D(完成時間)=A(到達時間)+D(服務時間)
C(完成時間)=D(到達時間)+C(服務時間)
B(完成時間)=C(到達時間)+B(服務時間)
進程號 | 到達時刻 | 服務時間(小時) | 開始時間 | 完成時間 | 周轉時間(小時) | 帶權周轉時間 |
A | 9:00 | 2 | 9 | 11 | 2 | 1 |
B | 9:30 | 1 | 11:54 | 12:54 | 3.4 | 3.4 |
C | 9:40 | 0.5 | 11:24 | 11:54 | 2.4 | 4.8 |
D | 10:30 | 0.4 | 11 | 11:24 | 0.9 | 2.25 |
平均周轉時間: (2+3.4+2.45+0.9)/4=2.6875
平均帶權周轉時間: (1+3.4+4.8+2.25)/4=2.8625