タイムクウォンタムが2秒のラウンドロビン方式で処理されるタイムシェアリングシステムにおいて,プロセス1~3が逐次生成されるとき,プロセス2が終了するのはプロセス2の生成時刻から何秒後か。
ここで,各プロセスはCPU処理だけで構成され,OSのオーバヘッドは考慮しないものとする。
また,新しいプロセスの生成と中断されたプロセスの再開が同時に生じた場合には,新しく生成されたプロセスを優先するものとする。
表:プロセス/生成時刻/単独で処理された場合の時間
1|0秒後|5秒
2|3秒後|7秒
3|6秒後|5秒
正答2
解説
正解は2です。
ラウンドロビン方式は、各プロセスにタイムクウォンタム(ここでは2秒)ずつCPUを割り当て、時間切れになったプロセスを待ち行列の末尾に戻す方式です。
本問では、新しいプロセスの生成と中断プロセスの再開が同時なら、新しいプロセスを先に並べます。
【計算】
0〜2秒はプロセス1が実行し、残りは3秒です。
2秒の時点で待っているプロセスがないので、2〜4秒もプロセス1が実行し、残りは1秒です。
3秒にプロセス2が生成され、4〜6秒はプロセス2が実行し、残りは5秒です。
6秒にプロセス3が生成され、プロセス2の中断と重なるので、待ち行列はプロセス1、3、2の順になります。
6〜7秒はプロセス1が実行して終了します。
7〜9秒はプロセス3が実行し、残りは3秒です。
9〜11秒はプロセス2が実行し、残りは3秒です。
11〜13秒はプロセス3、13〜15秒はプロセス2が実行し、残りはそれぞれ1秒です。
15〜16秒にプロセス3が終了し、16〜17秒にプロセス2が終了します。
プロセス2の終了は17秒で、生成時刻3秒から17-3=14秒後です。
【選択肢別解説】
1:× 12秒後は、プロセス2の終了を実際より早く見積もった値です。
途中にプロセス1と3の実行が入るので、12秒後には終わりません。
2:○ 上の追跡のとおり、プロセス2は生成から14秒後に終了します。
3:× 16秒後は、終了を実際より遅く見積もった値です。
正しく追跡すると、終了時刻は17秒で、生成から14秒後です。
4:× 17は、プロセス2が終了する時刻そのものです。
生成時刻からの経過時間を問われているので、3秒を引く必要があります。
【ポイント】
ラウンドロビンの問題は、待ち行列の並び順を1区切りずつ書き出すと確実に解けます。
「生成時刻から何秒後か」と「開始から何秒後か」の違いに注意します。