修了試験 2012-07-22実施分 基本情報技術者試験 問21
二つのタスクA,Bを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は,表のとおりである。 次の条件で二つのタスクが同時に実行可能状態になってから,タスクBの実行が完了するまでの時間は何ミリ秒か。 ここで,表の( )内の数字は処理時間を表すものとする。 〔条件〕 (1) タスクA,Bは同一のI/Oを使用し,タスクAが先に実行される。 (2) CPU処理を実行中のタスクは,入出力処理を開始するまでは処理を継続し,中断されない。 (3) I/Oも入出力が終了するまで処理を中断されない。 (4) その他のオーバヘッドは考慮しない。 〔表〕単独実行時の動作順序と処理時間(単位 ミリ秒) タスクA:CPU(20)→I/O(30)→CPU(20)→I/O(40)→CPU(10) タスクB:CPU(10)→I/O(30)→CPU(20)→I/O(20)→CPU(20)
正答3
解説
正解は3です。 CPUとI/Oはそれぞれ1つしかなく、同時に処理できるタスクは1つだけです。 一方のタスクがI/Oを使っている間に、もう一方のタスクがCPUを使うことはできます。 条件(2)(3)により、CPU処理もI/O処理も途中で中断されません。 時刻0からの動きを順にたどります。 【計算】 0〜20ミリ秒:AがCPU(20)を実行します。 20〜50ミリ秒:AがI/O(30)を実行し、並行してBが20〜30ミリ秒にCPU(10)を実行します。 30〜50ミリ秒:BはI/Oを使いたいのですが、Aが使用中なので待ちます。 50〜70ミリ秒:AがCPU(20)を実行し、並行してBが50〜80ミリ秒にI/O(30)を実行します。 70〜80ミリ秒:AはI/Oを使いたいのですが、Bが使用中なので待ちます。 80〜100ミリ秒:BがCPU(20)を実行し、並行してAが80〜120ミリ秒にI/O(40)を実行します。 100〜120ミリ秒:BはI/Oを使いたいのですが、Aが使用中なので待ちます。 120〜130ミリ秒:AがCPU(10)を実行して終了し、並行してBが120〜140ミリ秒にI/O(20)を実行します。 140〜160ミリ秒:BがCPU(20)を実行して終了します。 したがって、タスクBの完了は160ミリ秒後です。 【選択肢別解説】 1:× 120ミリ秒の時点では、まだAのI/O(40)が終わったばかりで、BにはI/O(20)とCPU(20)が残っています。 Bは完了していません。 2:× 140ミリ秒の時点では、BのI/O(20)が終わったところで、最後のCPU(20)が残っています。 Bの完了はこの20ミリ秒後です。 3:○ 上の時系列のとおり、BのCPU(20)が140〜160ミリ秒に実行され、160ミリ秒で完了します。 4:× 180ミリ秒は、実際の完了時刻より20ミリ秒遅い値です。 CPUとI/Oの並行動作を正しく考慮すると、160ミリ秒で完了します。 【ポイント】 CPUとI/Oの競合問題は、時間軸に沿って「誰がCPUを、誰がI/Oを使っているか」を書き出すと確実です。 資源が使用中のときの待ち時間を見落とさないようにしましょう。まとめて解く
修了試験 2012-07-22実施分を通しで解く(80問)→