いくつかのプロセスは、リソースの競合により、他のプロセスが占有リソースを解放するのを延々と待っています。
#コンピュータ システム内の限られたリソースと、リソースの割り当てを要求する多くのプロセスの間には矛盾があります。複数のプロセスが必要とするリソースの合計が、システムが提供できるリソースの数よりも多い場合、プロセス間でリソースが横取りされる現象が発生し、プロセスによって横取りされたリソースが適切に管理または割り当てられていないと、デッドロックが発生します。起こる。 (推奨学習: Web フロントエンド ビデオ チュートリアル )
デッドロックとは、2 つ以上のプロセスがリソースを求めて競合しているか、実行中に相互に通信しているという事実を指します。一種のブロッキング現象で、外力がなければ前に進むことができません。このとき、システムがデッドロック状態にある、またはシステムがデッドロックに陥っているといい、このように常に待ち合っているプロセスをデッドロックプロセスと呼びます。発生条件
実行プロセス中にデッドロックが発生する場合がありますが、デッドロックが発生するには以下の4つの条件を満たす必要があります。 1) 相互排他条件: プロセスによる割り当てられたリソースの排他的使用を指します。つまり、特定のリソースが一定期間内に 1 つのプロセスによってのみ占有されることを指します。この時点でリソースを要求している他のプロセスがある場合、要求者はリソースを占有しているプロセスが使い果たされて解放されるまで待つことしかできません。 2) 要求および保留条件: プロセスが少なくとも 1 つのリソースを保持しているが、新しいリソース要求を行っており、そのリソースが他のプロセスによって占有されている状態を意味します。このとき、要求元のプロセスははブロックされていますが、すでにリソースを要求しています。取得された他のリソースは変更されません。 3) 非剥奪条件: プロセスが取得したリソースを指し、使い果たされる前に剥奪することはできず、使い切った場合にのみ解放できます。 4) ループ待機条件: デッドロックが発生した場合、プロセス、つまりリソースの循環チェーン、つまりプロセス集合 {P0, P1, P2,...,Pn} 内の P0 が存在する必要があります。 P1 が占有するリソースを待機中、P1 は P2 が占有するリソースを待機、...、Pn は P0 が占有するリソースを待機しています。原因
リソースの競合によりプロセスのデッドロックが発生する
プリンターなどのリソースがシステム内の複数のプロセスで共有されている場合、パブリック キューなど、その数がプロセスのニーズを満たすのに十分でない場合、プロセス間でリソースの競合が発生し、デッドロックが発生します。一時リソースの競合
上記のプリンタリソースは、順次再利用可能なリソースであり、永続リソースと呼ばれます。また、あるプロセスによって生成され、別のプロセスによって使用され、短期間で使用できなくなるリソースを指す、いわゆる一時リソースもあり、ハードウェアなどの消耗品リソースとも呼ばれます。割り込み、シグナル、メッセージ、バッファー、メッセージなど、デッドロックを引き起こす可能性もあります。以上がシステムデッドロックの原因の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。