平成30年度 秋期 午前 問16
ソフトウェア
タスクスケジューリングの問題
三つのタスクの優先度と,各タスクを単独で実行した場合の CPU と入出力(I/O)装置の動作順序と処理時間は,表のとおりである。優先度方式のタスクスケジューリングを行う OS の下で,三つのタスクが同時に実行可能状態になってから,全てのタスクの実行が終了するまでの,CPU の遊休時間は何ミリ秒か。ここで,CPU は1個であり,1CPU は1コアで構成され,I/O は競合せず,OS のオーバヘッドは考慮しないものとする。また,表中の( )内の数字は処理時間を示すものとする。
| 優先度 | 単独実行時の動作順序と処理時間(ミリ秒) |
|---|---|
| 高 | CPU(3) → I/O(5) → CPU(2) |
| 中 | CPU(2) → I/O(6) → CPU(2) |
| 低 | CPU(1) → I/O(5) → CPU(1) |
- ア2
- イ3
- ウ4
- エ5
答えと解説を見る
✓ これが正解イ3
解説
三つの仕事を時刻の順に並べ、空いた時間だけを数えます。
優先度の高いものから処理装置を使うので、時刻を追って並べていきます。最初の3ミリ秒は高い仕事が使い、その後は入出力に移ります。空いた装置を中位の仕事が2ミリ秒使い、続いて低い仕事が1ミリ秒使います。ここで三つとも入出力の待ちに入り、処理装置は誰にも使われません。高い仕事の入出力が終わる時刻まで、2ミリ秒の空きが生じます。高い仕事が残りの2ミリ秒を使って終わると、他の二つはまだ入出力の途中です。ここでもう1ミリ秒の空きが出ます。以降は中位と低位が続けて使うので、空きはこれ以上生じません。合わせて3ミリ秒が求める時間になります。入出力どうしは競合しないと断ってあるので、三つが同時に進む前提で並べられます。優先度の高い仕事が待ちに入ると、次に高いものへ順番が移ります。空いた時間だけを足します。
ほかの選択肢はなぜ違うのか
- ア2:最初に生じた空きだけを数えた値になっています。優先度の高い仕事が終わった後にも、残る二つの入出力が終わるまでの空きがあります。空きは一度きりとは限らないので、終わりまで追う必要があります。後半にも空きが残ります。
- ウ4:優先度の低い仕事の入出力の長さを、そのまま空きとして数えると近い値になります。入出力の最中でも、別の仕事が処理装置を使っていれば空きにはなりません。待っている仕事があるかどうかを、時刻ごとに見ていく必要があります。
- エ5:高い仕事の入出力の5ミリ秒を、そのまま空きと数えた場合の値です。その間も中位と低位の仕事が処理装置を使っています。数えるべきなのは、使う仕事が一つも無い時間だけです。重なりの長さではありません。
出典:平成30年度 秋期 基本情報技術者試験 午前 問16
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)