修了試験 2012-01-22実施分 基本情報技術者試験 問21
三つのタスクの優先度と,各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。 三つのタスクが同時に実行可能状態になってから,すべてのタスクの実行が終了するまでの,CPUの遊休時間は何ミリ秒か。 ここで,I/Oは競合せず,OSのオーバヘッドは考慮しないものとする。 また,表の( )内の数字は処理時間を示すものとする。 優先|単独実行時の動作順序と処理時間(単位 ミリ秒)/高|CPU(3) → I/O(5) → CPU(2) → I/O(5) → CPU(2)/中|CPU(2) → I/O(6) → CPU(2) → I/O(5) → CPU(2)/低|CPU(1) → I/O(5) → CPU(2) → I/O(4) → CPU(1)
正答3
解説
正解は3です。 優先度の高いタスクが実行可能になると、低いタスクからCPUを奪って実行します(プリエンプション)。 I/Oは競合しないので、各タスクのI/Oは同時に進められます。 時刻を追って、CPUが何も実行していない時間を数えます。 【計算】 0〜3ミリ秒:高がCPUを使います(高のI/Oは3〜8ミリ秒)。 3〜5ミリ秒:中がCPUを使います(中のI/Oは5〜11ミリ秒)。 5〜6ミリ秒:低がCPUを使います(低のI/Oは6〜11ミリ秒)。 6〜8ミリ秒:全タスクがI/O中なので、CPUは2ミリ秒遊休です。 8〜10ミリ秒:高がCPUを使います(高のI/Oは10〜15ミリ秒)。 10〜11ミリ秒:全タスクがI/O中なので、CPUは1ミリ秒遊休です。 11〜13ミリ秒:中がCPUを使います(中のI/Oは13〜18ミリ秒)。 13〜15ミリ秒:低がCPUを使います(低のI/Oは15〜19ミリ秒)。 15〜17ミリ秒:高がCPUを使い、高が終了します。 17〜18ミリ秒:中と低がI/O中なので、CPUは1ミリ秒遊休です。 18〜20ミリ秒:中がCPUを使い、中が終了します(低は19ミリ秒にI/Oを終えて待機します)。 20〜21ミリ秒:低がCPUを使い、全タスクが終了します。 遊休時間の合計=2+1+1=4ミリ秒です。 【選択肢別解説】 1:× 2ミリ秒は、最初の遊休時間(6〜8ミリ秒)だけを数えた値です。 その後にも2回の遊休があります。 2:× 3ミリ秒は、遊休区間を1つ数え落とした値です。 遊休は6〜8、10〜11、17〜18ミリ秒の3区間です。 3:○ 遊休時間は2+1+1=4ミリ秒です。 全体の終了時刻21ミリ秒から、CPU使用時間の合計17ミリ秒を引いても4ミリ秒になります。 4:× 5ミリ秒は、遊休時間を多く数えすぎた値です。 低がI/Oを終えた19ミリ秒以降はCPUが使われ続けています。 【ポイント】 この種の問題は、横軸に時間をとったタイムチャートを書いて追うのが確実です。 「終了時刻-CPU使用時間の合計=遊休時間」で検算すると、数え間違いを防げます。まとめて解く
修了試験 2012-01-22実施分を通しで解く(80問)→