エンベデッドシステムスペシャリスト 2014年 午前2 問09
問題文
CPU時間を多く必要とするタスクAと、入出力処理が多くCPU時間をほとんど必要としないタスクBで構成されているシステムがある。このシステムのスループットを高くする方法として、適切なものはどれか。
選択肢
ア:タスクAとタスクBの優先度を同じにして、一定時間間隔ごとに処理を切り替えることによって平等に処理する。
イ:タスクAとタスクBの優先度を同じにして、先に開始したタスクが終了後に別のタスクを処理する。
ウ:タスクAの優先度を高くして、タスクAを優先して処理する。
エ:タスクBの優先度を高くして、タスクBを優先して処理する。(正解)
🔒 解説は解答すると表示されます
CPU・入出力処理の優先制御【午前2解説】
正解の理由
タスクAはCPUを長時間使う一方、タスクBは入出力処理が多く、CPUを使う時間は短いタスクです。
エのようにタスクBの優先度を高くすると、Bが実行可能になったときにすぐCPUを使って入出力処理を開始できます。Bが入出力の完了を待っている間は、CPUを必要とするAを実行できます。
このように、Bの入出力待ち時間とAのCPU処理時間を重ねることで、CPUや入出力装置の待ち時間を減らし、システム全体のスループットを高められます。
解法ステップ
- 各タスクが主に使う資源を確認します。
- A:CPUを多く使う
- B:入出力を多く使い、CPU使用は少ない
- 入出力待ちの間に、CPUを別のタスクに使えるかを考えます。
- Bを優先して入出力を早く開始させ、Bの待ち時間にAを実行する方法を選びます。
選択肢別の誤答解説
- ア:優先度を同じにして一定時間ごとに切り替える方式です。公平な処理には向きますが、Bの入出力処理を早く開始させるとは限らず、スループットを高める方法としては適切ではありません。
- イ:先に開始したタスクが終了するまで、もう一方を処理しません。AがCPUを長時間使うとBの入出力処理の開始が遅れ、資源を並行して活用できません。
- ウ:CPUを多く必要とするAを優先する方法です。Bの入出力開始が遅れる可能性があり、CPUと入出力装置を効率よく並行利用できません。
- エ:Bを優先することで、Bの入出力を早く開始できます。Bが入出力を待つ間にAを実行できるため、全体の処理効率が高まります。
よくある誤解
- CPUを多く使うタスクを優先すれば、スループットも高くなる
CPUだけでなく、入出力装置も含めてシステム全体の稼働状況を考える必要があります。 - 優先度を高くすると、そのタスクがCPUをずっと占有する
Bは入出力待ちになる時間が長いため、その間はCPUをAに使えます。 - タスクの公平性とスループットは同じ目的である
公平性を重視する方式と、資源を効率よく使って処理量を増やす方式は、必ずしも一致しません。
補足コラム
スループットは、単位時間当たりに処理できる仕事量です。複数のタスクを同時に進行させ、CPUが入出力待ちで遊ばないようにすることが、スループット向上の基本です。
なお、優先度の設定はスループットだけでなく、応答時間や公平性にも影響します。特定のタスクを過度に優先すると、ほかのタスクの実行が遅れる場合があります。
FAQ
Q. Bを優先するのに、Aも実行できるのはなぜですか?
A. Bが入出力処理を開始すると、入出力の完了を待つ状態になります。その間、CPUはAの処理に使えるためです。
A. Bが入出力処理を開始すると、入出力の完了を待つ状態になります。その間、CPUはAの処理に使えるためです。
Q. Aを優先すると、CPUの利用率が上がるのではありませんか?
A. CPU利用率だけでなく、入出力装置も含めて資源を効率よく使うことが重要です。Bの入出力開始を遅らせると、システム全体の処理が滞る可能性があります。
A. CPU利用率だけでなく、入出力装置も含めて資源を効率よく使うことが重要です。Bの入出力開始を遅らせると、システム全体の処理が滞る可能性があります。
関連キーワード: スループット、CPUバウンド、入出力バウンド、優先度スケジューリング、入出力待ち

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

