五つのタスクA〜Eの優先度と、タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は、表のとおりである。
優先度“高”のタスクAとB〜Eのどのタスクを組み合わせれば、組み合わせたタスクが同時に実行を開始してから、両方のタスクが終了するまでの間のCPUの遊休時間をゼロにできるか。
ここで、I/Oは競合せず、OSのオーバヘッドは無視できるものとする。
また、表の( )内の数字は処理時間を表すものとする。
タスク | 優先度 | 単独実行時の動作順序と処理時間(ミリ秒) | |
A | 高 | CPU(3) → I/O(3) → CPU(3) → I/O(3) → CPU(2) | |
ア | B | 低 | CPU(2) → I/O(5) → CPU(2) → I/O(2) → CPU(3) |
イ | C | 低 | CPU(3) → I/O(2) → CPU(2) → I/O(3) → CPU(2) |
ウ | D | 低 | CPU(3) → I/O(2) → CPU(3) → I/O(1) → CPU(4) |
エ | E | 低 | CPU(3) → I/O(4) → CPU(2) → I/O(5) → CPU(2) |
答え ウ
【解説】
タスクAとタスクB〜Eが同時に実行を開始したときの処理状態を図にする。
はタスクAの処理、はタスクB〜Eの処理、はCPU遊休時間であり、I/Oは競合しないので、各タスクは別のI/Oにアクセスすると考える。
ア | タスクAとタスクB |
イ | タスクAとタスクC |
ウ | タスクAとタスクD |
エ | タスクAとタスクE |
【キーワード】
・タスクの状態