平成30年度 春期 午前 問17
ソフトウェア
タスクに関する問題
三つのタスク 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) |
- ア6
- イ8
- ウ10
- エ12
答えと解説を見る
✓ これが正解ウ10
解説
順番待ちは 0〜4 と 8〜14 の延べ 10 ミリ秒です。
設問は、優先順位方式でスケジューリングする OS の下で、タスク C が実行可能状態にあった時間の延べを尋ねています。要点は、タスクの状態を三つに分けて数えることです。CPU を使っている実行状態、動けるのに上位のタスクに CPU を取られて待っている実行可能状態、そして入出力の終わりを待っている待機状態の三つがあり、数えるのは二つめだけです。時刻を追います。0 から 2 は A が CPU を使い、2 から 4 は A が入出力へ移って B が CPU を使うので、ここまで C は順番待ちで 4 ミリ秒です。4 から 6 に C が CPU を使い、6 から 8 は C の入出力なので、この区間は待機状態として数えません。8 で三つの入出力が同時に終わり、8 から 12 は A が、12 から 14 は B が CPU を使うため、C はここでも順番待ちとなり 6 ミリ秒です。合わせて 10 ミリ秒となります。C が終わるのは 17 ミリ秒で、その内訳は順番待ち 10、実行 5、入出力待ち 2 と過不足なく埋まります。
ほかの選択肢はなぜ違うのか
- ア6:後半の 8 から 14 までの区間だけを数えた値です。三つのタスクがそろって動き出した直後、0 から 4 までの 4 ミリ秒ぶんが丸ごと抜けています。
- イ8:0 から 4 までの 4 ミリ秒に、8 から 12 までの 4 ミリ秒だけを足した値です。優先度が中のタスクが最後に CPU を使う 12 から 14 までの 2 ミリ秒を数え落としています。
- エ12:入出力の終わりを待っていた 6 から 8 までの 2 ミリ秒まで足した値です。この 2 ミリ秒は CPU を欲しがっていない時間なので、順番待ちとは別の状態として数える必要があります。
出典:平成30年度 春期 応用情報技術者試験 午前 問17(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)