Beachten Sie, dass Kausalität ein undefinierter Begriff in der Arbeit ist. Lamport verwendet es in einer informellen Erklärung. Er geht davon aus, dass dies ein intuitives Konzept sein könnte, das für seine Leser dasselbe bedeutet wie für ihn. Ich denke für Lamportein könnte kausal beeinflussen bbedeutet eigentlich etwas mehr wie Informationen könnten fließen ausein zu b oder ein könnte das Verhalten von beeinflussen b, als die klassische aristotelische Idee von b ist eine physische Folge von ein.
Angenommen, ein Computer führt ein Programm mit zwei Anweisungen aus:
a: X := 1
b: print X
Ich denke, wir könnten uns alle einig sein, dass die Anweisung a
vorher passiert, b
aber ich würde nicht sagen, dass "das Ausführen der Zuweisungsanweisung (Ereignis a
) das Programm veranlasst hat , die print
Anweisung (Ereignis b
) auszuführen ". Andererseits könnte ich etwas anderes sagen: "Ereignis a
(Zuweisung des Werts 1 zu X
) hat den vom Ereignis gedruckten Wert beeinflusst b
."
Nehmen wir nun ein (möglicherweise) kontroverses Beispiel.
a: X := 1
b: Y := 1
a
passiert vorher b
, aber ich denke, die meisten Leute würden sagen: "Es gibt keinen kausalen Zusammenhang zwischen a
und b
." Aber in diesem Artikel gibt es einen kausalen Zusammenhang zwischen a
undb
. Ich werde versuchen, dies so kurz wie möglich zu erklären, aber es wird lange dauern.
Das Papier handelt von Zustandsautomaten
Hier ist , was Lamport über das Papier auf seiner Homepage zu sagen hat :
Ein verteiltes System kann als eine bestimmte sequentielle Zustandsmaschine beschrieben werden, die mit einem Netzwerk von Prozessoren implementiert ist. Die Fähigkeit, die Eingabeanforderungen vollständig zu ordnen, führt sofort zu einem Algorithmus, um eine beliebige Zustandsmaschine durch ein Netzwerk von Prozessoren zu implementieren und somit jedes verteilte System zu implementieren. Also habe ich dieses Papier geschrieben, in dem es darum geht, eine beliebige verteilte Zustandsmaschine zu implementieren. ...
Dies ist meine am häufigsten zitierte Arbeit. ... Aber ich habe selten jemanden getroffen, der wusste, dass die Zeitung etwas über Staatsmaschinen sagte. Die Leute scheinen zu denken, dass es entweder um die Kausalitätsbeziehung von Ereignissen in einem verteilten System oder um das Problem des verteilten gegenseitigen Ausschlusses geht. Die Leute haben darauf bestanden, dass in der Zeitung nichts über Staatsmaschinen steht. Ich musste sogar zurückgehen und es noch einmal lesen, um mich davon zu überzeugen, dass ich mich wirklich an das erinnerte, was ich geschrieben hatte.
Jeder Prozess ist eine Zustandsmaschine, und die Zusammensetzung der Prozesse zu einem verteilten System / Algorithmus ist eine Zustandsmaschine.
Lamport verwendet implizit eine Kurzschreibweise, die wir im digitalen Design Registerübertragungen nennen , und jeder Prozess ist (implizit) eine algorithmische Zustandsmaschine . Was uns wirklich wichtig ist, ist, wie jedes Ereignis den gesamten Status jedes Prozesses beeinflusst. Jede Registerübertragungsanweisung ist eine prägnante Art, über eine Reihe von Zustandsübergängen zu sprechen, die vom vorherigen Zustand abhängen.
In unserem "kontroversen" Beispiel besteht der Zustand der Maschine aus zwei Teilen ⟨ X, Y.⟩. Die Registerübertragungsanweisung Y := 1
ist eine Abkürzung für vier verschiedene Zustandsübergänge:⟨ 0 , 0 ⟩ → ⟨ 0 , 1 ⟩, ⟨ 0 , 1 ⟩ → ⟨ 0 , 1 ⟩, ⟨ 1 , 0 ⟩ → ⟨ 1 , 1 ⟩, und ⟨ 1 , 1 ⟩ → ⟨ 1 , 1 ⟩. Was also in der Aussage passiert ist, a
wirkt sich sehr stark auf den durch die Aussage erzeugten Endzustand aus b
. In unserem Fall wissen wir, dass der Endzustand ist⟨ 1 , 1 ⟩, und das wäre nicht der Fall gewesen, wäre nicht a
ausgeführt worden oder a
wäre eine andere Aussage gewesen (wie X := 0
).
In diesem Artikel geht es darum, wie viel eine der verteilten Zustandsmaschinen über die Zustände der anderen Zustandsmaschinen wissen kann. Daher ist es sehr wichtig, welche Reihenfolge auf jeder einzelnen Maschine abläuft.