処理時間順方式(SJF)におけるジョブのターンアラウンドタイム計算

処理時間順方式(SJF: Shortest Job First、非プリエンプティブ方式)では、CPUが空いた時点で待ち行列に存在するジョブのうち、単独実行時の処理時間が最も短いジョブから順に実行します。各ジョブの実行推移は以下のようになります。 時刻 $0$:ジョブ A(処理時間 $2$ 秒)が到着し、実行を開始します(実行区間:時刻 $0 \sim 2$ 秒)。 時刻 $1$:ジョブ B(処理時間 $4$ 秒)が到着し、待ち行列に入ります。 時刻 $2$:ジョブ C(処理時間 $3$ 秒)が到着。ジョブ A の実行が完了します。待ち行列には B($4$ 秒)と C($3$ 秒)が存在します。処理時間が短いジョブ C が選択され、実行を開始します(実行区間:時刻 $2 \sim 5$ 秒)。 時刻 $3$:ジョブ D(処理時間 $2$ 秒)が到着し、待ち行列に入ります。 時刻 $4$:ジョブ E(処理時間 $1$ 秒)が到着し、待ち行列に入ります。 時刻 $5$:ジョブ C の実行が完了します。この時点で待ち行列には B($4$ 秒)、D($2$ 秒)、E($1$ 秒)が存在します。最短のジョブ E($1$ 秒)が選択され、実行を開始します(実行区間:時刻 $5 \sim 6$ 秒)。 時刻 $6$:ジョブ E の実行が完了します。待ち行列には B($4$ 秒)と D($2$ 秒)が存在します。短いジョブ D($2$ 秒)が選択され、実行を開始します(実行区間:時刻 $6 \sim 8$ 秒)。 時刻 $8$:ジョブ D の実行が完了します。待ち行列に残っているジョブ B($4$ 秒)が実行を開始します(実行区間:時刻 $8 \sim 12$ 秒)。 時刻 $12$:ジョブ B の実行が完了します。 ターンアラウンドタイムは「ジョブの完了時刻 $-$ 到着時刻」で求められます。ジョブ B について計算すると以下のとおりです。 $$\text{ターンアラウンドタイム} = 12 - 1 = 11\,\text{秒}$$ したがってエが正解です。

五つのジョブ A〜E に対して,ジョブの多重度が 1 で,処理時間順方式のスケジューリングを適用した場合,ジョブ B のターンアラウンドタイムは何秒か。ここで,OS のオーバーヘッドは考慮しないものとする。

単位 秒

ジョブ

到着時刻

単独実行時の処理時間

A

0

2

B

1

4

C

2

3

D

3

2

E

4

1

出典令和7年度秋期 応用情報技術者試験 午前 問15
ア
8
イ
9
ウ
10
エ
11