平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
テクノロジ/ソフトウェアRTOS を用いたシステムにおいて,優先度逆転の原因となるものはどれか。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7
- ア優先度の高いタスク A が優先度の低いタスク B の実行に必要なリソースを占有しているが,タスク B はタスク A に必要なリソースを占有していない。
- イ優先度の低いタスク B が優先度の高いタスク A の実行に必要なリソースを占有しているが,タスク A はタスク B に必要なリソースを占有していない。
- ウ優先度の低いタスク B と優先度の高いタスク A が,互いに他タスクが必要なリソースを占有し合いデッドロックとなっている。
- エ優先度の低いタスク B のクリティカルセクション実行中は,他の処理に対して割込み禁止の排他制御を行う。
正解:イ
解説
優先度逆転は,優先度の低いタスクが,優先度の高いタスクの実行に必要なリソース(共有資源)を先に占有してしまうことによって,本来優先されるはずの高優先度タスクが,低優先度タスクの実行終了まで待たされてしまう現象です。低優先度タスクがリソースを占有している間に,仮に中優先度のタスクが割り込むと,低優先度タスクの実行がさらに遅れ,結果として高優先度タスクの待ち時間が一層長くなる場合もあります。
選択肢ごとの解説
- ア誤り。優先度の高いタスクが,優先度の低いタスクの実行に必要なリソースを占有している状況は,優先度逆転の原因にはなりません。高優先度タスクは自分の必要なリソースを既に確保できているため,低優先度タスクの完了を待つ必要がないからです。
- イ正しい。優先度の低いタスク B が,優先度の高いタスク A の実行に必要なリソースを占有していると,タスク A はタスク B がリソースを解放するまで実行できなくなり,優先度が逆転した状態になります。
- ウ誤り。二つのタスクが互いに相手の必要とするリソースを占有し合っている状態はデッドロック(膠着状態)であり,優先度逆転とは異なる現象です。
- エ誤り。クリティカルセクション実行中に割込み禁止による排他制御を行うこと自体は,優先度逆転の直接の原因ではなく,共有資源へのアクセスを保護するための一般的な排他制御の手法です。