スレッドロックとは何か、デッドロックとは何か、デッドロックを解決する方法です.

1219 ワード

デッドロック:2つ以上のプロセスが実行中に、競合リソースまたは相互通信によるブロック現象を指し、外力の作用がなければ推進できません.
   **     :**

デッドロックの4つの必要条件
コンピューター専攻の学部教材では、通常、デッドロックの4つの必要条件を紹介します.この4つの条件が1つ欠けてはいけない、あるいはいずれかの条件を破壊すれば、デッドロックは起こり得ない.復習してみましょう.この4つの条件は、•反発(Mutual exclusion):ある時点で1つの実行スレッド(スレッドとも呼ばれる)にしか割り当てられないリソースが存在します.•保有(Hold and wait):要求されたリソースが占有され、実行スレッドがブロックされた場合、リソース占有者はリソースを解放する必要がないだけでなく、より多くのリソースを要求し続けることができます.•剥奪不可(No preemption):実行緒が獲得した反発資源は強制的に剥奪されてはならない.言い換えれば、資源占有者自身だけが資源を解放することができる.•リングウエイト(Circular wait):いくつかの実行スレッドが異なる順序で反発リソースを取得し、リングウエイトの局面を形成し、複数の実行スレッドからなるリングチェーンの中で、各実行スレッドが次の実行スレッドがデッドロックを持つのを待っていることを想像する.2つ以上のプロセスが実行中であることを指す.競合するリソースや通信によるブロックの現象は、外力がなければ推進できません.
デッドロックを回避する方法:
デッドロック解除の必要条件
デッドロックの4つの必要条件のうち,第2,3,4の条件は比較的容易に解消されることが明らかになった.トランザクション・メカニズムを導入することで、すべてのロック・オペレーションをトランザクションとして扱うことで、ロックが開始されると、すべてのオペレーションがロールバックできることを確保し、ロック・マネージャによってデッドロックを検出し、リソース(ロールバック・トランザクション)を剥奪する第2、3の2つの条件を解消することができます.このようなやり方は、大きなオーバーヘッドをもたらす場合があり、ロックモードをより多く変更する必要があります.
第4の条件を解消することは比較的容易で、代価が低い方法である.具体的には、鍵をかける順番が一致しなければならないという方法です.具体的には、ロックに「水位」のような方向性プロパティを人為的に指定します.いかなるロックが既に保持されているかにかかわらず、この実行はすべてのロック操作を実行し、一致した前後順序で低から高(または高から低)まで行わなければならず、1つのシステムでは、1つの前後順序しか使用できない.のリソースです.