分散コンピューティングの例を次に示します。
1背景
1.1非同期共有メモリモデル
共有メモリ変数を使用して通信する分散ノードのコレクションを考えてみましょう。ノードがステップを実行するタイミングとメッセージを配信するタイミングを制御する敵がいます。計算は非同期です。つまり、敵はノードのステップを任意の(有限の)時間遅らせることができます。ノードのステップは、ローカルオートマトン(アルゴリズムによる)の状態遷移
と考えることができます。次の状態は、現在の状態と最後のステップ以降のノードの観測によって決定されます。
1.2安全性と活力
非同期アルゴリズムのプロパティについて正式に推論する場合、安全性と活性プロパティを区別します。非公式には、
安全プロパティは、「悪い」ことが決して起こらないという保証として解釈できます。(Egは、相互排除のために、安全性の宿泊施設には、2つのノードが同時にクリティカルセクションを入力していないことになります。)ライブネスが、一方で、「最終的にどうなる何か良い」、例えばとして解釈することができます。すべてのノードが最終的に終了します。
MMα 、β∈ M2− nnαβ
SP⊆ MPM∖ P
ケーニッヒの無限補題の適用
特定のプロパティが安全なプロパティであるかどうかを確認するのは必ずしも簡単ではありません。基本的な共有メモリ変数の読み取り/書き込みアトミックオブジェクトの実装を検討してください。このような実装では、要求とその応答を、ある時点で発生し、呼び出しの順序に違反しないように見えるように処理する必要があります。(これは非同期動作に、要求と応答との間の実際の持続時間は、ゼロでないかもしれない。)不可分としても知られて不可分操作。[A]のセクション13.1は、原子性が安全性であることの証拠を示しています。この証明では、Koenigの補題を使用して、無限の実行シーケンス(それぞれがAtomicityを満たしている)の制限もAtomicityを満たしていることを示します。
[A] N.リンチ。分散アルゴリズム。モーガンカウフマン、1996年。