デッドロック防止とデッドロック回避の主な違いは、デッドロック防止はデッドロックの原因となる必要条件のうち少なくとも1つが絶対に発生しないようにするのに対し、デッドロック回避はシステムが安全でない状態に陥らないようにすることである。
デッドロックは、複数のプロセスが存在する場合に発生します。
各プロセスはリソースを保持しながら、他のプロセスが保持するリソースを待ちます。
したがって、このような状況はデッドロックとなります。
システムは、相互排他、保留と待機、先取りなし、循環待ちの状態が同時に発生すると、デッドロック状態になることがあります。
ここで、デッドロックに関連する仕組みとして、デッドロック防止とデッドロック回避があります。
デッドロック対策とは
デッドロック防止とは、デッドロックの必要条件のうち少なくとも1つが絶対に発生しないようにする仕組みのことです。
通常、デッドロックの防止を実現することは不可能です。
デッドロックの発生を防ぐためには、既存のすべてのリソースの数、可用性、要求数を知る必要はありません。
デッドロック防止アルゴリズムとして、ノンブロッキング同期アルゴリズムやトークンの直列化などがあります。
さらに、デッドロック防止のための資源配分は保守的です。
デッドロックの回避とは
システムは、デッドロックを起こすことなく、ある順序ですべてのプロセスに資源を割り当てることが可能であれば安全である。
デッドロックとは、システムが安全でない状態に陥らないようにするための仕組みです。
言い換えれば、システムがデッドロックを起こさないようにすることです。
システムが安全でない状態にならないようにするためには、システムは既存の資源の数、利用可能性、要求などを知っておく必要がある。
デッドロックを回避する最も一般的な手法はバンカーズアルゴリズムです。
これは、すべてのプロセスを実行するための安全な経路を見つけるのに役立つ。
また、このアルゴリズムでは、総資源と現在の要求資源を考慮する。
さらに、デッドロックの予防と回避に加えて、デッドロック検出と呼ばれるメカニズムもあります。
これは、デッドロックが発生する前、あるいは発生した後に検出するものです。
デッドロック防止とデッドロック回避の違い
定義
デッドロック防止とは、デッドロックの必要条件のうち少なくとも1つが絶対に発生しないようにする仕組みのことである。
一方、デッドロック回避は、システムが安全でない状態に陥らないようにする仕組みです。
したがって、これがデッドロック防止とデッドロック回避の主な違いです。
情報
デッドロック防止では、システムは既存の資源、資源の利用可能性、資源の要求に関する情報を必要としませんが、デッドロック回避では、システムが安全な状態か危険な状態かを知るために、既存の資源、資源の利用可能性、資源の要求に関する情報を必要とします。
したがって、この点もデッドロック防止とデッドロック回避の違いと言えます。
アルゴリズム
ノンブロッキング同期アルゴリズムとシリアライジングトークンは、いくつかのデッドロック防止アルゴリズムであり、バンカーズアルゴリズムは最も一般的なデッドロック回避アルゴリズムです。
リソース
さらに、リソースの状態は、デッドロック防止とデッドロック回避の重要な違いです。
デッドロック防止では、すべてのリソースを一度に要求するのに対し、デッドロック回避では、少なくとも1つの安全なパスが見つかるまでリソースの要求を操作する。
結論
簡単に説明すると、デッドロックとは、各プロセスが資源を保有し、セット内の他のプロセスが保有する資源の取得を待っているプロセスの集合によって発生する状況のことである。
デッドロックに関連する仕組みとして、デッドロック防止とデッドロック回避があります。
デッドロック防止とデッドロック回避の主な違いは、デッドロック防止はデッドロックの原因となる必要条件の少なくとも1つが絶対に発生しないことを保証し、デッドロック回避はシステムが安全でない状態に陥らないことを保証することである。