第7章デッドロック

  デッドロック:リソース所有アプリケーションはそれほどの変化状態にプロセスのために、もはや待ち時間があることを、他のプロセスを待っている場合。

7.1デッドロック機能

7.1.1 必要条件

  次の4つの条件でシステムが真である場合、それはデッドロックを引き起こす可能性があります。

  • 相互に排他的:少なくとも一つのリソース、すなわち一つだけのプロセスを使用することができ、非共有モードでなければなりません。別のプロセスがリソースに適用する場合、アプリケーション・プロセスは、リソースのリリースまで待つ必要があります。
  • 所持して待機:プロセスは、少なくとも一つのリソースを占有し、他のリソース、および国の他のプロセスのためにそのリソースを待っている必要があります。
  • ノンプリエンプティブ:リソースが唯一のタスク自主的な資源・プロセスの完了後に解放することができる、先取りすることはできません。
  • ループを待つ:待機プロセスセットが存在する{P0、P1、...、Pnが}、P0は、リソースを待っているリソースが占有されているため、...、PN-1は、リソース用のPN、Pnの占有待機している待機P1、P1 P2を占領P0を占有するリソースを待っています。

7.1.2リソース割り当てマップ

          

  P1 - > R1は、アプリケーション側、R1を表し、 - > P2は、配信側を表します。

  リソースは、図リングに割り当てられていない場合、システムはデッドロック状態ではありません。リングがある場合、システムは、またはデッドロックにあってもなくてもよいです。

7.2デッドロック方法

  一般的には、デッドロックの問題に対処するための3つの方法があります。

  • 予防やデッドロックを回避するために、システムが合意により、デッドロック状態に入らないことを確認してください。
  • システムは、システムがデッドロックを入力することができ、それを検出し、復元することができます。
  • 私たちは、デッドロックがシステム内で発生することができないという問題を無視することができます。

  第三の方法は、LinuxとWindowsを含むほとんどのオペレーティングシステムで使用されます。

デッドロックの防止

  少なくとも、必要な条件が満たされていないがあることを確認してください。この方法に資金を提供するために適用する方法を制限することにより、デッドロックを防止するための方法。欠点は、スループットの低いシステムであり、機器の使用率が低いです。

デッドロック回避

  これは、アプリケーション・プロセスとリソースのリソース使用に関する追加情報を実現するためのオペレーティングシステムが必要です。

7.3デッドロック回避

  最も単純で最も有用なモデルは、各プロセスが必要とされ得るリソースの各タイプの最大数を宣言しなければならないことを要求します。

7.3.1セキュリティステータス

  システムは、特定の順序で各プロセスにリソースを割り当てることができるかどうか(その最大の需要を超えない)、それでもデッドロックを避けるため、システムの状態が安全です。より正式に、セキュリティシーケンス、唯一の安全な状態でシステムがある場合のみ。

  セキュリティは、逆に、非セキュア状態デッドロック状態デッドロック状態の状態ではありません。すべての非セキュアな状態はデッドロックにつながることができません。

7.3.2リソース割当てグラフアルゴリズム

  リソース割り当て方式が存在する場合、それは、各リソース・タイプのインスタンスは1つだけです。

  需要側の導入、点線で示します。PI ---> Rjとは、Piが将来のある時点でリソースRjとを要求することができるプロセスを表します。システムリソースの需要が事前に明記しなければなりません。

  リング検査アルゴリズムは、O(Nの複雑採用2)。

        

 

 7.3.3銀行家のアルゴリズム

  各リソースタイプ、リソース割り当てシステムは、複数のインスタンスを有し、リソース割当てアルゴリズムは、図には適用されません。

  ときに、システムに新しいプロセスは、それが必要とされるように宣言されるべきリソースの各タイプのインスタンスの最大数は、量は、システムリソースの合計を超えることができません。ユーザーがリソースのセットを適用すると、システムは、これらのリソースの割り当てがまだ安全な状態でシステムを残すかどうかを判断する必要があります。その場合は、リソースを割り当てることができますが、そうでなければ処理は十分なリソースまでいくつかの他のプロセスを解放するまで待たなければなりません。

  データ構造:システムプロセスのN =数、mはリソースタイプの一種であります

  • 利用可能:長さmのベクトル、各インスタンスのために利用可能なリソースの数を表します。
  • 最大:プロセス要件定義あたりの最大、N * Mマトリクスは、マックス[I] [j]はプロセスのK番目のインスタンスは、リソースタイプRjとのPiにまで適用することができる意味 
  • 割当:各プロセスが現在割り当てられている各リソースタイプ定義のインスタンスの数、N * Mマトリクス、割当[I] [j]は、プロセスは、リソースタイプRjとのパイkのインスタンスが割り当てられていることを示します 
  • 必要性:各プロセスはまた、必要の残りのリソースを示し、N * Mマトリクスは、必要[i]は[J]プロセスは、リソースタイプRjとのパイkのインスタンスを適用することができることを示しています 

  プロセスへのリソースの最初の仮配分による処理リソースの使用のためのアプリケーション、銀行家のアルゴリズムは、その後、システムは分布を決定するために、セキュリティアルゴリズムによって安全な状態にあるときは、安全でない場合は、仮の割り当ては脇に置き、プロセスが待機していきましょう。

セキュリティアルゴリズム

  初期化1.仕事=割り当てと完了[i]を=偽。

  2.一方(TRUE){

    (私は満足する:.見つけることができ完了[I] ==偽&& b.Needi <=仕事)場合は{

      仕事=仕事+ Allocition 

      完了[I] = TRUE;

    }

    そうしないと 

      出口();

  }

  3.すべて完了[I] = TRUE、安全な状態で、システムの場合。

例ショー 

        

 

7.4デッドロックの検出

  ...

7.5デッドロック回復

  デッドロック検出アルゴリズムが決定されたとき、あなたは、手動処理を管理者のデッドロックを通知することができます。我々は、システムが自動的に復元させることができます。デッドロックに2つのオプションが解除するには:単に待っているの悪循環を断ち切るために1つ以上のプロセスを中断し、1つ以上のプロセスのデッドロックから1つ以上のリソースがつかみます。

7.5.1プロセス中断され

  • すべてのプロセスのデッドロックを一時停止
  • プロセスの停止、死のサイクルの排除までアップ

7.5.2プリエンプション

  デッドロックサイクルが中断されるまで使用される他のプロセスにプロセスにリソースの一部をつかむに進みます。しかし、3つの問題に対処するには:

  • プロセスの経費を選択
  • ロールバック
  • 飢餓

おすすめ

転載: www.cnblogs.com/astonc/p/12154483.html