リアルタイムシステムにおける優先度逆転(Priority Inversion)の発生要因

優先度逆転(Priority Inversion) とは、高優先度タスクが低優先度タスクよりも後回しにされて実行が遅延する現象です。低優先度タスクBが共有リソース(ミューテックスやセマフォ)を獲得してクリティカルセクションを実行している間に、高優先度タスクAが起動して同じリソースを要求して待ち状態(ブロック)になります。このとき、リソースを要求しない中優先度タスクCがタスクBをプリエンプトして長時間実行を続けると、タスクBがリソースを解放できず、結果として 高優先度タスクAが中優先度タスクCよりも待たされる という優先度逆転が発生します。その根本的な引き金は「低優先度タスクが高優先度タスクの必要とするリソースを占有していること」です。したがって、正解は イ です。 ア: 高優先度タスクがリソースを占有している場合は通常の優先度順序どおりの実行であり、優先度逆転は発生しません。 ウ: 相互にリソースを待ち合って永久停止するのは「デッドロック(死に別れ)」の説明です。 エ: 割込み禁止による排他制御は優先度逆転を防止するための対策手法の一つであり、原因ではありません。

RTOSを用いたシステムにおいて,優先度逆転の原因となるものはどれか。

出典平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
ア
優先度の高いタスクAが優先度の低いタスクBの実行に必要なリソースを占有しているが,タスクBはタスクAに必要なリソースを占有していない。
イ
優先度の低いタスクBが優先度の高いタスクAの実行に必要なリソースを占有しているが,タスクAはタスクBに必要なリソースを占有していない。
ウ
優先度の低いタスクBと優先度の高いタスクAが,互いに他タスクが必要なリソースを占有し合いデッドロックとなっている。
エ
優先度の低いタスクBのクリティカルセクション実行中は,他の処理に対して割込み禁止の排他制御を行う。