コンセンサス数のための原子価議論における「動き」についての混乱

マルチプロセッサプログラミングの技術」の節5.1.1「状態と価値」では、 Maurice
HerlihyとNir Shavit
によって、( 重点追加

まず、最も簡単な興味深いケースについて考えてみましょう.2つのスレッドのバイナリコンセンサス(つまり、入力0または1)($ A
$と$ B $と呼んでください)。各スレッドは、値を決定するまで移動します。ここでは、
移動は共有オブジェクトへのメソッド呼び出しです

     

プロトコル状態は、スレッドと共有オブジェクトの状態で構成されます。
初期状態は、スレッドが移動する前のプロトコル状態であり、最終状態はすべてのスレッドが終了した後のプロトコル状態です。最終状態の決定値は、その状態のすべてのスレッドによって決定された値です。

     

待ち状態のないプロトコルの可能な状態の集合はツリーを形成し、各ノードは可能なプロトコル状態を表し、各エッジはあるスレッドによる可能な移動を表す

     

5.2(下記参照)は、各スレッドが2回移動する2スレッドプロトコルのツリーを示しています。 $ A $の動きは黒で表示され、$
B $は灰​​色で表示されます。 ノード$ s $からノード$ s ‘$までの$ A $のエッジは、$ A
$がプロトコル状態$ s $で動くと、新しいプロトコル状態は$ s’ $であることを意味します。
em>
$ s ‘$を$ s
$の後継状態と呼びます。プロトコルはウェイトフリーなので、ツリーは有限でなければなりません。リーフノードは最終的なプロトコル状態を表し、0または1の決定値でラベル付けされます。


私の問題:

私はプロトコルの状態を理解しています。しかし、私はその動きについて混乱している。

まず、プロトコル状態はスレッドの状態と共有オブジェクトで構成されていることがわかります。それでは、個々のスレッドによって行われるローカルの動きを考えないでください。

第2に、図の実行ツリーに示されているように、各実行は、プロセスステップが完全な操作(すなわち、共有オブジェクトへのメソッド呼び出し)の細かさでインターリーブされるだけの逐次実行である。より多くのイベント(例えば、各プロセスのローカル計算と共有オブジェクトへのメソッド呼び出し)がインターリーブされるようにする非順次実行を検討してみませんか?


execution-tree

ベストアンサー
申し訳ありませんが、適切な答えはありません

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です