Silberschatz/Galvin 著の「Operating System Principles」(第 9 版) とウィキペディアの優先順位の逆転に関する記事では、優先順位の逆転では、優先順位の高いプロセスは優先順位の低いプロセスが保持するリソースを使用できないと述べています。優先度が中程度のプロセスは、優先度が低いプロセスを横取りし、そのリソースを取得します。しかし、そうである場合 (つまり、優先度に基づくプリエンプションが許可されている場合)、優先度の高いプロセスが優先度の低いプロセス自体をプリエンプトしてリソースを取得できないのはなぜでしょうか?
以下は、本とウィキペディアの記事で言及されていることです。
それぞれ高優先度と低優先度の 2 つのタスク H と L を考えます。どちらも共有リソース R の排他的使用を取得できます。L が R を取得した後に H が R を取得しようとすると、L がリソースを解放するまで H がブロックされます。適切に設計されたシステムで専用リソース (この場合は R) を共有するには、通常、H (優先度の高いタスク) が長時間ブロックされたままにならないように、L が R をすぐに放棄する必要があります。ただし、優れた設計にもかかわらず、中程度の優先度 (p(L) < p(M) < p(H)、p(x) はタスク (x) の優先度を表す) の 3 番目のタスク M が実行可能になる可能性があります。 L による R の使用。この時点で、M は L より優先度が高いため、L を先取りし、L が R をすぐに放棄できなくなり、H (最も優先度の高いプロセス) が実行できなくなります。