OS が, ジョブを到着順に, 前のジョブが終わってから次のジョブを処理する場合について考える。ジョブの到着時刻と処理時間が表のとおりであるとき, ジョブ 4 は, 到着してからその処理が終了するまでに何秒を要するか。ここで, 四つのジョブ以外の処理に要する時間は無視できるものとする。表の到着時刻は, ジョブ 1 が到着した時刻を開始時刻とする。
| 到着時刻 | 処理時間 | |
|---|---|---|
| ジョブ1 | 0秒後 | 3秒 |
| ジョブ2 | 4秒後 | 4秒 |
| ジョブ3 | 5秒後 | 3秒 |
| ジョブ4 | 7秒後 | 5秒 |
この問題の解説と、これまでの解答の記録です。
OS が, ジョブを到着順に, 前のジョブが終わってから次のジョブを処理する場合について考える。ジョブの到着時刻と処理時間が表のとおりであるとき, ジョブ 4 は, 到着してからその処理が終了するまでに何秒を要するか。ここで, 四つのジョブ以外の処理に要する時間は無視できるものとする。表の到着時刻は, ジョブ 1 が到着した時刻を開始時刻とする。
| 到着時刻 | 処理時間 | |
|---|---|---|
| ジョブ1 | 0秒後 | 3秒 |
| ジョブ2 | 4秒後 | 4秒 |
| ジョブ3 | 5秒後 | 3秒 |
| ジョブ4 | 7秒後 | 5秒 |
5 はジョブ4 の処理時間そのもの。設問が問うのは「到着してから処理が終了するまで」の時間 (ターンアラウンドタイム) であり, 到着後に前のジョブを待つ 4 秒を数えていない。
8 は 3〜4 秒の空き時間を見落とし, ジョブ2 がジョブ1 終了直後の 3 秒後から始まると誤った場合の値 (ジョブ2 が 3〜7, ジョブ3 が 7〜10, ジョブ4 が 10〜15 で 15−7=8)。ジョブ2 は 4 秒後にならないと到着しないので, 3 秒後には開始できない。
正解 到着順 (先着順) に, 前のジョブが終わってから次を処理するので, 実行の時系列は次のようになる。ジョブ1 は到着 0 秒後にすぐ開始し 0〜3 秒。ジョブ2 は到着が 4 秒後なので, CPU が空いた 3 秒後からではなく 4 秒後に開始し 4〜8 秒 (3〜4 秒は待機ジョブが無く空き時間)。ジョブ3 は 5 秒後に到着済みだがジョブ2 の終了を待ち 8〜11 秒。ジョブ4 は 7 秒後に到着済みだがジョブ3 の終了を待ち 11〜16 秒。したがってジョブ4 は到着 (7 秒後) から終了 (16 秒後) までに 16−7=9 秒を要する。これは待ち時間 4 秒 (ジョブ2 の残り 1 秒 + ジョブ3 の 3 秒) と自分の処理時間 5 秒の合計とみても同じである。よって正解は ウ。
12 はジョブ4 の待ち時間をジョブ2 とジョブ3 の処理時間の合計 4+3=7 秒とみなし, 7+5=12 と計算した誤り。ジョブ4 が到着する 7 秒後の時点でジョブ2 はすでに 3 秒間実行済みなので, 実際に待つのはジョブ2 の残り 1 秒とジョブ3 の 3 秒の計 4 秒である。