三つのタスクA~Cの優先度と各タスクを単独で実行した場合のCPUと入出力(I/O)装置の動作順序と処理時間は,表のとおりである。
優先順位方式のタスクスケジューリングを行うOSの下で,三つのタスクが同時に実行可能状態になってから,タスクCが終了するまでに,タスクCが実行可能状態にある時間は延べ何ミリ秒か。
ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。
また,表中の()内の数字は処理時間を示すものとする。
表/タスク|優先度|単独実行時の動作順序と処理時間(ミリ秒)/A|高|CPU(2)→I/O(6)→CPU(4)/B|中|CPU(2)→I/O(4)→CPU(2)/C|低|CPU(2)→I/O(2)→CPU(3)
正答3
解説
正解は3です。
優先順位方式では、実行可能なタスクのうち優先度が最も高いものにCPUが割り当てられます。
実行可能状態とは、CPUを使える条件がそろっているのに、ほかのタスクがCPUを使っているため待っている状態です。
時刻を追ってタスクCが待たされる時間を数えます。
【計算】
0~2ミリ秒はタスクAがCPUを使い、B、Cは待ちます。
2~4ミリ秒はタスクBがCPUを使い、Cは待ちます。
ここまででタスクCの待ち時間は4ミリ秒です。
4~6ミリ秒にタスクCがCPUを使い、6~8ミリ秒にCはI/Oを行います。
8ミリ秒にAとBのI/Oが終わり、AがCPUを8~12ミリ秒使います。
12~14ミリ秒はBがCPUを使います。
タスクCは8~14ミリ秒の6ミリ秒間待たされます。
14~17ミリ秒にCがCPUを使って終了します。
実行可能状態の時間は4+6=10ミリ秒です。
【選択肢別解説】
1:× 6ミリ秒は、後半の待ち時間(8~14ミリ秒)だけを数えた値です。
最初の0~4ミリ秒の待ちも含めます。
2:× 8ミリ秒は、待ち時間の一部を数え落とした値です。
正しくは4ミリ秒と6ミリ秒の合計です。
3:○ 0~4ミリ秒の4ミリ秒と、8~14ミリ秒の6ミリ秒を合わせて10ミリ秒です。
4:× 12ミリ秒は、I/O中の時間など実行可能状態でない時間まで含めた値です。
I/O中は待ち状態であり、実行可能状態ではありません。
【ポイント】
タスクの状態は「実行状態」「実行可能状態」「待ち状態」の3つです。
I/O完了を待っている時間は待ち状態であり、実行可能状態とは区別して数えます。