循環リクエストがデッドロックを引き起こすことは知っていますが、次のリクエストもデッドロックを引き起こすのではないかと思います...
よくわかりませんが、「2つ以上のプログラム/プロセスの両方が操作を完了する前に他方からの応答を必要とするために失敗または続行できない」場合も考えました。
これは、プロセス2とプロセス4の両方にR7が必要な場合、デッドロックが発生することを意味しますか?(複数のプロセスによって要求されているリソースR5とR4についても同じです)
循環リクエストがデッドロックを引き起こすことは知っていますが、次のリクエストもデッドロックを引き起こすのではないかと思います...
よくわかりませんが、「2つ以上のプログラム/プロセスの両方が操作を完了する前に他方からの応答を必要とするために失敗または続行できない」場合も考えました。
これは、プロセス2とプロセス4の両方にR7が必要な場合、デッドロックが発生することを意味しますか?(複数のプロセスによって要求されているリソースR5とR4についても同じです)
画像で表記を使用するための最も単純なデッドロックグラフは、2つのプロセスがそれぞれ同じ2つのリソースを必要とする場合です。たとえば、サンプルプロセスでP2
リソースに依存している場合R5
、デッドロックが発生する可能性があります。両方P2
とそれぞれが両方とをP4
要求し、それがロックしてロックするとします。次に、を待機し、待機します。つまり、それぞれが他方がロックを解放するのを待機します。これは最小限の例です。R7
R5
P2
R7
P4
R5
P2
R5
P4
R7
あなたの状況では、2つのリソースが2つの異なるプロセスによって共有されることはないため、そのような可能性はありません。問題となっているのは。だけですP4
。またはとの競合がある場合は、最初に実行するかP2
(問題なし)、または他のプロセスを最初に実行し、リソースのロックを解除して実行を許可します(これも問題ありません)。P7
P4
P4