プロセスのデッドロックとは何ですか?条件は何ですか?デッドロックを回避するには?

デッドロックの概念:2つ以上のプロセスがリソースを延々と待っているシステム状態を指します。

 デッドロックの主な理由は、( 1 )システムリソースの不足、(2 )実行中のプロセスの順序が不適切、(3 )リソースの割り当てが不適切、などです。

 

デッドロックに必要な条件:

1 )相互排除、リソースは一度に1つのプロセスでのみ使用できます。

2 保留して待機hold and wait )。リソースを要求したためにプロセスがブロックされた場合、取得したリソースを保持します。

3 )プリエンプションなし(プリエンプションなし)、プロセスが取得したリソースは、解放される前に強制的に奪うことはできません。

4 )循環待機(循環待機)は、複数のプロセス間で循環待機リソースの関係を形成するプロセスです。

デッドロックにはこれらの4つの条件が必要ですが、システムにデッドロックがある限り、これらの条件が成立している必要があり、上記の条件のいずれかが満たされない限り、デッドロックは発生しません。

 

デッドロック処理戦略:ダチョウ戦略、防止戦略、回避戦略、デッドロックの検出と除去

ダチョウ戦略:目をくらませる

 

防止戦略:静的リソース割り当て方法:すべてのリソースが一度に割り当てられるため、リクエストがなくなる

順序付けされたリソース割り当て方法:システムは各タイプのリソースに番号を割り当て、各プロセスは増加する番号順にリソースを要求し、解放は反対です(ループ待機状態を解除)

保有・待機状態が破壊される可能性もあり、あるリソースを獲得したが他のリソースを獲得できない場合、占有していたリソースを解放します(保有・待機状態を破壊)

 

 

回避戦略:プロセスがリソースを動的に適用できるようにします。したがって、システムは、リソース割り当てを実行する前に、リソース割り当てのセキュリティを事前に計算します。割り当てによってシステムが危険な状態にならない場合、リソースはプロセスに割り当てられ、そうでない場合、プロセスは待機します。デッドロックを回避するための最も代表的なアルゴリズムは、銀行家のアルゴリズムです。

銀行家のアルゴリズム:まず、状態とセキュリティ状態の概念を定義する必要があります。システムの状態は、プロセスへのリソースの現在の割り当てです。状態には、2つのベクトル Resource (システム内の各リソースの総量)とAvailable (プロセスに割り当てられていない各リソースの総量)および2つの行列Claim (プロセスのリソース要件を表す)とAllocation (現在の割り当てを表す)が含まれます。プロセスへのリソース)。安全な状態とは、少なくとも1つのリソース割り当てシーケンスでデッドロックが発生しないことを意味します。プロセスが一連のリソースを要求すると、要求が合意されたと見なされ、システムの状態が変更され、結果がまだ安全な状態かどうかが判断されます。はいの場合は要求に同意し、そうでない場合は、要求に同意した後もシステム状態が安全になるまでプロセスをブロックします。

 

デッドロックを検出

1. 各プロセスと各リソースに一意の番号を割り当てます

2. 次に、リソース割り当てテーブルをセットアップして、各プロセスとその占有リソース間の関係を記録します。

3. 各プロセスと適用対象のリソースとの関係を記録するプロセス待機テーブルを設定します

これら2つのテーブルをチェックして、デッドロックが本当に発生したかどうかを判断する

 

デッドロックを取り除く

プロセスのデッドロックが発見されたら、それをデッドロック状態からただちに解放する必要があります。

リソースの剥奪:デッドロック状態を解除できるように、他のプロセスからデッドロックプロセスに十分な量のリソースを奪います。

元に戻すプロセス:デッドロックプロセス、またはデッドロック状態が解消されるまでコストが最も低いプロセスを直接キャンセルできます。いわゆるコストは、優先度、実行コスト、プロセスの重要性と値などを指します。

おすすめ

転載: www.cnblogs.com/wl889490/p/12748239.html