優先度逆転とは?ゆうせんどぎゃくてん
優先度逆転とは、優先度で決めたはずの実行の順番が、排他制御による資源の占有に押し負けて逆さまになる現象。資源を握っているのが優先度の低いタスクだと、それを要求した高優先度タスクは相手が手放すまで進めない。さらに中間の優先度のタスクが割り込んで低優先度側を止めると、解放の見込みが立たず待ち時間の上限を保証できなくなる(無制限優先度逆転)。
最終更新:2026-10-06
この語が出る過去問を解く →背景
優先度は「先に走らせる順番」を決めるが、排他制御は「資源を持っている者が離すまで進めない」という別の順序を持ち込む。この二つの順序が衝突したとき、優先度の高いほうが低いほうに待たされるという逆転が生じる。設計の欠陥ではなく、プリエンプションと排他制御を同時に使えば構造的に起こりうる現象である点が要点で、だからこそ対策はスケジューラ側の仕掛けとして用意される。締切を持つ制御タスクが関わる系では、最悪応答時間の見積りに直結する。
具体例
火星探査機マーズ・パスファインダーでは、低優先度の気象データ処理がミューテックスを保持したまま中優先度の通信処理に押しのけられ、高優先度のバス管理タスクが締切を破ってリセットが繰り返された。JPLは地上からVxWorksの優先度継承を有効化するパッチを送り込み、運用を続行させている。
試験での引っ掛け
原因は排他制御による資源待ちであって、スケジューラの不具合ではない。対策は優先度継承プロトコル(資源を持つ低優先度タスクの優先度を一時的に引き上げる)と優先度上限(天井)プロトコルで、この2つを取り違えないこと。デッドロックとも別物で、優先度逆転は待ちが解ける可能性はあり、ただ時間の上限が保証できない状態を指す。
関連用語
出た過去問
出典:平成30年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問10(IPA)
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSにおいて、タスクの優先度逆転が発生する可能性があるのはどれか。
正解:排他制御
要点:優先度逆転は排他制御による資源待ちで発生する
優先度逆転は、低優先度タスクが共有資源のロック(排他制御)を保持したまま中優先度タスクにプリエンプトされ、その資源を待つ高優先度タスクが長時間ブロックされる現象である。つまり資源の排他制御がある場面でのみ起こる。対策としては優先度継承や優先度上限(プライオリティシーリング)プロトコルが使われる。
出典:平成31年度 春期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問7(IPA)
RTOSを用いたシステムにおいて、優先度逆転の原因となるものはどれか。
正解:優先度の低いタスクBが優先度の高いタスクAの実行に必要なリソースを占有しているが、タスクAはタスクBに必要なリソースを占有していない。
要点:優先度逆転は低優先度タスクの資源占有が高優先度を待たせる
優先度逆転は、高優先度タスクが必要とする資源を低優先度タスクが占有しているために、高優先度タスクが待たされる状況で起きる。さらに中間の優先度をもつタスクが低優先度タスクをプリエンプトすると、待ち時間が際限なく延びる無制限優先度逆転となる。相互に資源を奪い合うデッドロックとは別の現象である点に注意したい。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。