平成28年度 秋期 午前 問17
ソフトウェア
遊休時間に関する問題
五つのタスクを単独で実行した場合の CPU と入出力装置(I/O)の動作順序と処理時間は,表のとおりである。優先度“高”のタスクと,優先度“低”のタスクのうち一つだけを同時に実行する。実行を開始してから,両方のタスクの実行が完了するまでの間の CPU の遊休時間が最も短いのは,どの優先度“低”のタスクとの組合せか。ここで,I/O は競合せず,OS のオーバヘッドは考慮しないものとする。また,表の( )内の数字は処理時間を示すものとする。
〔表:単独実行時の動作順序と処理時間(単位 ミリ秒)〕
| 優先度 | 単独実行時の動作順序と処理時間 |
|---|---|
| 高 | CPU(3) → I/O(3) → CPU(3) → I/O(3) → CPU(2) |
- ア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)
答えと解説を見る
✓ これが正解ウCPU(3) → I/O(2) → CPU(3) → I/O(1) → CPU(4)
解説
隙間の6ミリ秒を使い切れる相方だけ遊休が消えます。
優先度が高いタスクの動きは組合せによらず同じなので、先にその時間割だけを引いてしまいます。CPU を 0 から 3、入出力を 3 から 6、CPU を 6 から 9、入出力を 9 から 12、CPU を 12 から 14 で使い、14 ミリ秒で終わります。すると優先度が低い側が CPU を使えるのは、3 から 6 までと 9 から 12 までの各 3 ミリ秒、それに 14 以降です。ここで各組合せの低い側の CPU 時間の合計を数えると、3 と 3 と 4 で合計 10 ミリ秒のものだけが飛び抜けて多く、残りはいずれも 7 ミリ秒です。合計 10 のものを実際に並べます。3 から 6 で 3 ミリ秒ぶん、6 から 8 で入出力、9 から 12 でもう 3 ミリ秒ぶん、12 から 13 で入出力、そして 14 から 18 で残り 4 ミリ秒ぶんです。入出力は競合しないので、高い側の入出力と重ねられます。結果として 0 から 18 まで CPU は途切れず、遊休時間は 0 になります。検算すると、全体の 18 は高い側の CPU の 8 と低い側の 10 の和にちょうど一致します。
ほかの選択肢はなぜ違うのか
- アCPU(2) → I/O(5) → CP…:入出力の 5 ミリ秒が長いため、空いた区間に戻ってこられません。実際に並べると 5 から 6 までと 9 から 10 までが空き、合わせて 2 ミリ秒ぶん CPU が止まります。
- イCPU(3) → I/O(2) → CP…:CPU を使う合計が 7 ミリ秒しかないので、空き区間と終了後を合わせても埋めきれません。並べると 11 から 12 までが空き、1 ミリ秒ぶん止まります。惜しい組合せですが 0 にはなりません。
- エCPU(3) → I/O(4) → CP…:入出力が 4 ミリ秒と 5 ミリ秒で長く、とくに最後の入出力の間は使う相手がいません。並べると 9 から 10 までと 14 から 17 までが空き、合計 4 ミリ秒ぶんとなって四つの中で最も長くなります。
出典:平成28年度 秋期 応用情報技術者試験 午前 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)