組込み・ファームウェア
優先度逆転を防ぐために使われる「優先度継承」の考え方として正しいものはどれか。
- A高いタスクの優先度を、低いタスクと同じまで下げる
- Bすべてのタスクの優先度を同じにする
- C資源を持つ低いタスクの優先度を、その資源を待つ高いタスクと同じ高さまで一時的に上げる
答えと解説を見る
正解:C. 資源を持つ低いタスクの優先度を、その資源を待つ高いタスクと同じ高さまで一時的に上げる
優先度継承では、高いタスクが低いタスクの持つミューテックスを待ち始めたとき、低いタスクの優先度を一時的に高いタスクと同じにします。すると中くらいのタスクに横取りされずに処理を進め、資源を手放した時点で元の優先度に戻ります。高いタスクの待ち時間は、低いタスクが資源を使う短い時間だけになります。多くのRTOSのミューテックスがこの機能を持っています。
- A. 高いタスクの応答がさらに遅れてしまいます。
- B. 優先度の意味がなくなります。
- C. 正しい。中くらいのタスクに止められずに資源を早く手放せます。