エンベデッドシステムスペシャリスト 2016年 午前2 問09
問題文
リアルタイムOSを用いたシステムにおいて、タスクAの優先度が最も低いとする。実行状態又は実行可能状態であるタスクがタスクAだけであるとき、電力の消費を抑えるためにタスクAで行う処理として、適切なものはどれか。
選択肢
ア:各タスクの状態を再チェックする。
イ:休止命令を実行して割込みを待つ。(正解)
ウ:システムのログ情報を記録する。
エ:何もしないループ処理を続ける。
🔒 解説は解答すると表示されます
リアルタイムOSの休止処理【午前2解説】
正解の理由
実行状態または実行可能状態のタスクがタスクAだけなら、タスクAはほかに実行すべきタスクがないときに動く「アイドルタスク」のような役割になります。
このとき、タスクAが何もしないループを続けると、CPUは処理を続けるため電力を消費します。イのように休止命令を実行して割込みを待てば、CPUを休止状態にして消費電力を抑えられます。割込みが発生するとCPUが処理を再開し、必要なタスクが実行されます。
解法ステップ
- 実行中または実行可能なタスクがタスクAだけだと確認します。
- タスクAは、ほかに実行するタスクがない場合に動くアイドルタスクに相当すると考えます。
- 問題の目的が「電力の消費を抑えること」なので、CPUを動かし続ける処理ではなく、休止して割込みを待つ処理を選びます。
選択肢別の誤答解説
-
ア:各タスクの状態を再チェックする
状態確認を繰り返すだけではCPUが動作し続けるため、電力削減には適しません。 -
イ:休止命令を実行して割込みを待つ
CPUを休止状態にして、割込みが発生したときに処理を再開できます。電力消費を抑える方法として適切です。 -
ウ:システムのログ情報を記録する
ログの記録は処理を追加することになり、電力消費を抑える方法ではありません。 -
エ:何もしないループ処理を続ける
何もしていないように見えても、ループの実行中はCPUが動作し続けます。休止命令を使う方法より電力を消費します。
よくある誤解
- 「何もしないループなら電力を使わない」と考えがちです。ループを回すためにCPUは動作し続けます。
- 休止命令を実行するとシステムが停止したままだと思いがちです。割込みによってCPUは処理を再開できます。
- タスクAの優先度が最も低いことだけに注目しがちです。重要なのは、ほかに実行可能なタスクがなく、CPUを休止させられる状況であることです。
補足コラム
リアルタイムOSでは、タスクが実行可能でない間、アイドルタスクが動作する構成があります。アイドルタスクに休止命令を含めると、実行すべきタスクがない時間を利用してCPUの消費電力を抑えられます。
FAQ
休止中に割込みが発生すると、どうなりますか?
CPUが処理を再開し、割込み処理を行います。その後、実行可能になったタスクの優先度などに応じて、スケジューラが実行するタスクを決定します。
CPUが処理を再開し、割込み処理を行います。その後、実行可能になったタスクの優先度などに応じて、スケジューラが実行するタスクを決定します。
エのループ処理も、待っているという点では同じではありませんか?
目的は似ていますが、CPUの使い方が異なります。ループ処理はCPUを動作させ続けるのに対し、休止命令はCPUを休止状態にできるため、電力を抑えられます。
目的は似ていますが、CPUの使い方が異なります。ループ処理はCPUを動作させ続けるのに対し、休止命令はCPUを休止状態にできるため、電力を抑えられます。
関連キーワード: リアルタイムOS、アイドルタスク、休止命令、割込み、消費電力

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

