処理はすべてCPU処理である三つのジョブA,B,Cがある。
それらを単独で実行したときの処理時間は,ジョブAが5分,ジョブBが10分,ジョブCは15分である。
この三つのジョブを次のスケジューリング方式に基づいて同時に実行すると,ジョブBが終了するまでの経過時間はおよそ何分か。
〔スケジューリング方式〕
(1) 一定時間(これをタイムクウォンタムと呼ぶ)内に処理が終了しなければ,処理を中断させて,待ち行列の最後尾へ回す。
(2) 待ち行列に並んだ順に実行する。
(3) タイムクウォンタムは,ジョブの処理時間に比べて十分に小さい値とする。
(4) ジョブの切替え時間は考慮しないものとする。
正答3
解説
正解は3です。
タイムクウォンタムを十分小さくしたラウンドロビン方式で、ジョブBの終了時刻を求める問題です。
タイムクウォンタムが十分小さいと、実行中のジョブにCPUが均等に配分されているとみなせます。
ジョブがn個あれば、各ジョブは単独時の1/nの速さで進みます。
【計算】
最初は3ジョブで共有するので、各ジョブは1/3の速さで進みます。
Aは5分の処理なので、5×3=15分の時点で終了します。
このときBは5分ぶん処理が済み、残りは5分です。
以後はBとCの2ジョブで共有し、Bは1/2の速さで進みます。
Bの残り5分には5×2=10分かかります。
Bの終了は15+10=25分後です。
【選択肢別解説】
1:× 15分はジョブAが終了する時刻です。
この時点でBはまだ半分しか処理されていません。
2:× 20分の時点では、Bは15分からの5分間で2.5分ぶんしか進んでおらず、2.5分ぶんが残っています。
3:○ 上の【計算】のとおり、Bは25分後に終了します。
4:× 30分は3ジョブの処理時間の合計で、最後に残るジョブCが終了する時刻です。
【ポイント】
ラウンドロビンでは処理時間の短いジョブから順に終わります。
同時に動くジョブの数が減るたびに、1ジョブ当たりの進む速さが変わる点に注意します。