平成28年度秋期 応用情報技術者試験 午前 問17
五つのタスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。優先度"高"のタスクと,優先度"低"のタスクのうち一つだけを同時に実行する。実行を開始してから,両方のタスクの実行が完了するまでの間のCPUの遊休時間が最も短いのは,どの優先度"低"のタスクとの組合せか。ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示すものとする。

- ア CPU(2)→I/O(5)→CPU(2)→I/O(2)→CPU(3)
- イ CPU(3)→I/O(2)→CPU(2)→I/O(3)→CPU(2)
- ウ CPU(3)→I/O(2)→CPU(3)→I/O(1)→CPU(4)
- エ CPU(3)→I/O(4)→CPU(2)→I/O(5)→CPU(2)
解答・解説を見る
正解:ウ
AI解説
優先度の高いタスクがI/O実行中はCPUが空くため、その間に優先度の低いタスクのCPU処理をうまく重ねられる組合せほどCPU遊休時間が短くなる。高優先度タスクのCPU・I/Oの時間経過を横軸に描き、各候補タスクのCPU処理が高優先タスクのI/O待ち時間にどれだけはまるかをタイムチャートで検証すると、ウの組合せが最もCPUの空き時間を埋められ、遊休時間が最短となる。 ア: アのタスクはCPU処理とI/Oのタイミングが高優先度タスクのI/O期間とかみ合わず、CPUの空き時間が残る。 イ: イのタスクも一部は重なるが、両タスク完了までのCPU遊休時間はウより長くなる。 ウ: 正しい。CPU(3)→I/O(2)→CPU(3)→I/O(1)→CPU(4)の処理タイミングが高優先度タスクのI/O待ちと最もよく重なり、CPU遊休時間が最短になる。 エ: エのタスクはI/O時間が長く、高優先度タスクとI/Oが重ならない部分でCPUが遊休となる時間が長い。 💡 この種の問題はタイムチャート(ガントチャート)を書くのが確実。「優先度高のタスクがCPUを使っていない時間帯」を先に塗り、そこに低優先タスクのCPU処理を割り付けて空きを数える。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。