優先順位の逆転
同様に、高優先順位のタスクは時間的制限が問題となるから高優先順位に設定される。対話的にユーザーにデータを提供している場合もあるし、何らかのリアルタイムな応答を保証した処理をしているかもしれない。優先順位の逆転は低優先順位のタスクが高優先順位のタスクをブロックしてしまうので、システムの応答性能の低下を招き、保証された応答性能の違反となる可能性もある。
この問題は1970年代から知られているが、この状況を予測する確実な方法はない。様々な解決策は存在している。最も一般的な解決策は次のようなものである。
クリティカルセクションを保護するために全ての割り込みを不可とする。
優先度上限プロトコル
優先度継承
割り込みを不可にして優先順位の逆転を防ぐことができる場合、preemptible と interrupts disabled の二つの優先順位しかない。それ以外の優先順位がない場合、逆転は不可能となる。ひとつしかロックデータ(割り込み可能ビット)がないので、ロックの順番間違いも起きないし、デッドロックも発生しない。クリティカルセクションは常に最後まで実行されるので、ハングアップも発生しない。これは全割り込みを不可にした場合のみ有効であることに注意されたい。特定のハードウェア割り込みのみ不可にしたとしても、優先順位の逆転は防げない。
簡単なバリエーションとして、「単一の共有フラグロック」を複数CPUシステムで使用することがある。