Windows system >> Windowsの知識 >  >> Windowsチュートリアル合成 >> システムFAQ >> システムプロセスがデッドロックを解消するための完璧なソリューション

システムプロセスがデッドロックを解消するための完璧なソリューション

  

私たちのコンピュータで同時に複数のプログラムが実行されている場合は、特定のデータリソースについて競合が起こり、リソースが不足すると待機状態になります。要求されたリソースが他の待機プロセスによって占有されている場合、待機プロセスは永久に待機状態にあり、状態を変更することはできませんこれは、いわゆるシステムプロセスデッドロックです。では、システムプロセスをデッドロックさせない方法はありますか。

実際、システムがデッドロックしないようにするための基本的な方法は、デッドロックに必要な4つの条件を排除することです。これらの条件を破壊する方法

ミューテックス条件の破棄

ミューテックス条件の破棄は、複数のプロセスが同時にリソースにアクセスすることを可能にします。ほとんどのリソースの排他的アクセスの固有の特性は変更できないため、デッドロックの防止は、この必要条件を破壊することによって多くの状況で機能しません。たとえば、プリンタリソースは交換可能に使用する必要がありますが、それ以外の場合は、複数のプロセスが同時に使用され、各プロセスが1行を印刷します。

所有および待機条件の破棄

この条件は、静的リソース割り当て方法を使用することで解消できます。つまり、操作に必要なすべてのリソースが、プロセスの実行前に一度に割り当てられます。 。システムにプロセスに割り当てるのに十分なリソースがある場合、システムは必要なリソースを一度にプロセスに割り当てます。そのため、プロセスの実行中にリソース要求は行われず、待機状態は確立されません。割り当て時に満たすことができないリソース要件がある場合、プロセスが必要とする他のリソースは最初にプロセスに割り当てられないため、待機期間中にプロセスがリソースを占有し、占有条件を破棄することを回避し、デッドロックの発生を回避できます。

この方法はシンプルで簡単に実装できますが、プロセスの実行中に必要なリソースが完全に占有されるため、使用時間の短いリソースが長時間占有されるため、システムリソースの完全使用に深刻な影響を及ぼします。その結果、リソース使用率が減少し、ピアはすべてのリソースにアクセスできないプロセスの動作の遅延にも影響を与えます。

破壊と剥奪の条件

破壊的な管理は、特定の資源をすでに維持しているプロセスを作成することによって、この条件を破壊することができます。保持しているすべてのリソースを一時的に解放し(剥奪)、待機してからタオルを一緒にシステムに持ってくる必要があります。これによってもデッドロックが防止されます。この方法は、リソースのサイトを自動的に放棄して後で回復することからプロセスを保護するためには高価であり、プロセッサおよびメモリリソースにしか適用できないため、他のリソースには使用しないでください。 。

ループ待機条件を解除する

リソース順序の割り当て方法を使用すると、条件を解除することができます。この割り当て方法の基本的な考え方は、システムのすべてのリソースを複数のレベルに分割することですプロセスが特定の層のリソースを取得した後は、リソースの上位層を要求することしかできません。リソースが使用されるとき、それは最初にそれが占有するより高いレベルのリソースを解放しなければなりません;プロセスがあるレイヤのリソースを取得するとき、それはレイヤ内の別のリソースを再度適用したいですそして最初にレイヤ内でそれを解放します。リソースの所有つまり、プロセスがリソースを解放する順序は、要求されたリソースの逆の順序です。これにより、ループ待機が発生しなくなり、デッドロックが発生しなくなります。このアプローチで特に懸念されるのは、レベルでのリソースの配置です。通常の状況下では、各プロセスで頻繁に使用されるより一般的なリソースが下位レベルに配置され、リソースの使用を最大化するために、重要で比較的希少なリソースが上位レベルに配置されます。 。上記の方法と比較して、この方法は、リソース利用率およびシステムスループットにおいてかなりの改善を有する。しかし、いくつかの欠陥もあります。

(1)プロセスがそのレベルでのリソースの割り当てを要求する前に、低レベルのリソースを事前に適用する必要がありますこれは、当面必要でない低レベルのリソースを待つアイドルの無駄です。

(2)いったんさまざまな種類の機器のリソースレベルを設定したら、それらを自由に変更することはできません。そのため、新しい種類の機器の増加が制限されます。

(3)各リソースのレベルは、ほとんどのプロセスがリソースを使用する順序で設定されます。このレベルでのリソースの使用と点滅のプロセスでは、リソースを有効に活用できますが、そうでなければリソースの無駄が残ります。

デッドロックが発生すると、プロセスは完了できず、システムリソースの使用が妨げられ、他のジョブが実行を開始できなくなります。したがって、システムプロセスにデッドロックが発生していないことが重要であり、注意を引く必要があります。

Copyright © Windowsの知識 All Rights Reserved