平成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) (注:本サイトでは原問題の表を文字表記に変換しています)
出典:平成30年度 秋期 基本情報技術者試験 午前 問16
- ア2
- イ3
- ウ4
- エ5
正解:イ
解説
優先度方式のプリエンプティブなスケジューリングでは,常にその時点で実行可能な最も優先度の高いタスクにCPUを割り当てます。時刻0で高優先度タスクがCPUを3ms使用(0〜3ms)した後I/Oに移り(3〜8ms),その間に中優先度タスクがCPUを2ms使用(3〜5ms)してI/Oに移り(5〜11ms),続いて低優先度タスクがCPUを1ms使用(5〜6ms)してI/Oに移ります(6〜11ms)。この時点で全タスクがI/O中となり,CPUは6〜8msの2ms間遊休します。8msに高優先度タスクがI/Oから戻り残りのCPU処理2msを実行して10msに完了しますが,10〜11msは中・低優先度タスクがまだI/O中のため,CPUは再び1ms遊休します。11msに両タスクがI/Oから戻り,優先度の高い中優先度タスクが先にCPUを2ms,続いて低優先度タスクが1ms使用して全タスクが完了します。したがって,CPUの遊休時間は2ms+1ms=3msです。
選択肢ごとの解説
- ア誤り。8〜10msの高優先度タスク再開待ちの遊休時間だけを数え,10〜11msの遊休時間を見落とすとこの値になります。
- イ正しい。CPUが遊休するのは6〜8msの2msと10〜11msの1msの合計3msです。
- ウ誤り。遊休時間を1ms多く見積もった場合の値です。
- エ誤り。遊休時間をさらに多く見積もった場合の値で,タスクの実行順序を誤ると生じる値です。