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.
Wie sowohl von @kramthegram als auch von @Wandering Logic hervorgehoben wurde, Ereignisein "passiert vor" Ereignis b ist nicht bedeuten , dassein hat physisch verursacht b (passieren).
Eine solche Kausalität, die in Lamports Artikel verwendet wird, wird oft als potenzielle Kausalität bezeichnet . Es erfasst alle Möglichkeiten, führt häufig zu einem riesigen Kausalitätsdiagramm und beeinträchtigt in der Praxis die Skalierbarkeit / Leistung verteilter Systeme.
Um diese Probleme anzugehen, können wir explizite Kausalität oder anwendungsspezifische kausale Abhängigkeiten berücksichtigen . Ein häufiges Beispiel sind Anwendungen in sozialen Netzwerken: Alice hat 100 Kommentare in einem Konversationsthread gelesen und 5 davon mit einem einzigen Kommentar beantwortet. Die unmittelbare Abhängigkeit ihres Kommentars vor der Abhängigkeit konnte nur aus diesen 5 Kommentaren bestehen (anstelle all dieser 100 Kommentare mit potenzieller Kausalität ).
Welches ist die bessere Kausalität ? Es hängt davon ab. Beispielsweise besteht im Forschungsbereich des Debuggens von Multithread-Programmen eine potenzielle Kausalität . Es gibt zwei Hauptgründe (meiner Meinung nach): Erstens haben wir keinen Kontext / keine Semantik, die sagt, ob zwei Ereignisse (lesen oder schreiben Operationen) sind effektiv kausal bedingt oder nicht. Zweitens möchten wir alle möglichen Kausalitäten zwischen Ereignissen erfassen und so viele Debugs wie möglich aufdecken.
Weitere Informationen zu potenzieller Kausalität und expliziter Kausalität finden Sie in diesem Dokument: Die potenziellen Gefahren kausaler Konsistenz und eine explizite Lösung .
quelle
Sie vermissen die Auswahl des Wortes möglich . Dies bedeutet nicht, dass die Beziehung tatsächlich kausal ist, sondern dass es möglich ist, dass a einen kausalen Effekt auf b hat . Seine Aussagen sind nicht falsch, Sie lesen nur mehr hinein, als er tatsächlich sagt. Nur weil es möglich ist, heißt das nicht, dass es wahr ist. Die stärkere Aussage ist das Gegenteil, wenn ein nicht erledigt erklärt b ist es unmöglich für ein ein haben kausalen Einfluss darauf b . Es ist nur eine Frage der Formulierung.
quelle