因果関係はこの論文では未定義の用語であることに注意してください。ランポートは非公式の説明でそれを使用しています。彼は因果的に影響を与える可能性があると直感的に理解できる概念であり、読者にとっても彼と同じことを意味すると想定しています。私はランポートのためだと思う因果的に影響を与える可能性があり実際にはもっと何か意味情報が流れる可能性からにまたはの行動影響を与える可能性がする古典的なアリストテレスの考え方よりも、の物理的な結果です。a baba bb a
たとえば、コンピュータが次の2つのステートメントを含むプログラムを実行しているとします。
a: X := 1
b: print X
私たちは、すべてのその文が同意すると思うa
前に起こる b
が、私はそれは、「代入文(イベントを実行することは言わないだろうa
)原因実行するプログラムprint
のステートメント(イベントb
)」。一方、私は少し異なる何かを言うかもしれません:「イベントa
(値1にを割り当てるX
)は、イベントによって出力される値に影響を与えたb
」。
次に、(潜在的に)もっと物議を醸す例を見てみましょう。
a: X := 1
b: Y := 1
a
前に起こる b
が、私は、ほとんどの人が言うと思う「との間には因果関係がないa
とはb
。」しかし、この論文では、との間には因果関係がa
ありb
ます。私はこれをできるだけ簡潔に説明するつもりですが、長くなるでしょう。
紙はステートマシンについてです
ここだランポートが彼のホームページ上の紙について言いたいこと:
分散システムは、プロセッサのネットワークで実装される特定のシーケンシャルステートマシンとして説明できます。入力要求を完全に順序付ける機能は、すぐにアルゴリズムにつながり、プロセッサのネットワークによって任意の状態マシンを実装します。したがって、分散システムを実装します。そこで、私はこの文書を書きました。これは、任意の分散状態マシンを実装する方法についてです。...
これは私の最も頻繁に引用される論文です。...しかし、この論文がステートマシンについて何も述べていないことに気づいた人はほとんどいない。分散システムにおけるイベントの因果関係か、分散相互排除の問題のどちらかだと人々は考えているようです。紙にはステートマシンについては何もないと主張されています。私は自分が書いたものを本当に覚えていると自分に納得させるために戻ってそれを読み直す必要さえありました。
各プロセスは状態マシンであり、分散システム/アルゴリズムへのプロセスの構成は状態マシンです。
Lamportは、デジタル設計ではレジスタ転送と呼ばれる簡略表記を暗黙的に使用しており、各プロセスは(暗黙的に)アルゴリズムステートマシンです。私たちが本当に気にしているのは、各イベントが各プロセスの状態全体にどのように影響するかです。各レジスタ転送ステートメントは、前の状態に依存する一連の状態遷移について話す簡潔な方法です。
したがって、「論争の的」な例では、マシンの状態には2つの部分ます。レジスタ転送ステートメントは、4つの異なる状態遷移の省略形です:、、、および。したがって、ステートメントで起こったことは、ステートメントによって生成される最終的な状態に非常に影響します。私たちのケースでは、最終的な状態がであることを知っています。これは、実行されなかった場合や、⟨X,Y⟩Y := 1
⟨0,0⟩→⟨0,1⟩⟨0,1⟩→⟨0,1⟩⟨1,0⟩→⟨1,1⟩⟨1,1⟩→⟨1,1⟩a
b
⟨1,1⟩a
a
(のようなX := 0
)別の文でした。
このホワイトペーパーでは、分散状態マシンの1つが他の状態マシンの状態をどれだけ知ることができるかについて説明しているため、個々のマシンで発生する順序が非常に重要です。