組込み・ファームウェア

優先度逆転を防ぐために使われる「優先度継承」の考え方として正しいものはどれか。

  1. A高いタスクの優先度を、低いタスクと同じまで下げる
  2. Bすべてのタスクの優先度を同じにする
  3. C資源を持つ低いタスクの優先度を、その資源を待つ高いタスクと同じ高さまで一時的に上げる
答えと解説を見る

正解:C. 資源を持つ低いタスクの優先度を、その資源を待つ高いタスクと同じ高さまで一時的に上げる

優先度継承では、高いタスクが低いタスクの持つミューテックスを待ち始めたとき、低いタスクの優先度を一時的に高いタスクと同じにします。すると中くらいのタスクに横取りされずに処理を進め、資源を手放した時点で元の優先度に戻ります。高いタスクの待ち時間は、低いタスクが資源を使う短い時間だけになります。多くのRTOSのミューテックスがこの機能を持っています。

  • A. 高いタスクの応答がさらに遅れてしまいます。
  • B. 優先度の意味がなくなります。
  • C. 正しい。中くらいのタスクに止められずに資源を早く手放せます。
この分野を解く 分野ページへ

組込み・ファームウェアのほかの問題

  1. RTOSで、センサを読むタスクから表示するタスクへデータを渡すのに、キュー(メッセージキュー)を使う利点として正しいものはどれか。
  2. ハードリアルタイムとソフトリアルタイムの違いとして正しいものはどれか。
  3. ウォッチドッグタイマをリセットする(キックする)処理を、1 msごとのタイマ割り込みハンドラの中で無条件に行うのが良くない理由として正しいものはどれか。
  4. 組込み機器のブートローダの役割として正しいものはどれか。
  5. 無線でファームウェアを書き換える(OTA更新)機器で、フラッシュメモリにファームウェアを置く場所を2つ(A面とB面)用意する理由として正しいものはどれか。