www.wikidata.de-de.nina.az
Eine Vektoruhr ist eine Softwarekomponente oder ein Protokoll zum Zuweisen von eindeutigen Zeitstempeln an Nachrichten Sie ist also eine logische Uhr die es erlaubt den Ereignissen in einem Verteilten System aufgrund eines Zeitstempels eine Kausalordnung zuzuweisen Sequentialisierung und insbesondere die Nebenlaufigkeit von Ereignissen zu ermitteln Sie stellt eine Erweiterung der Lamport Uhr dar die auch der starken Uhrenbedingung genugt Vektoruhren wurden von mehreren Wissenschaftlern unabhangig voneinander entwickelt insbesondere von Colin J Fidge Friedemann Mattern und Frank Bernhard Schmuck Beispiel eines Systems von VektoruhrenInhaltsverzeichnis 1 Funktionsweise 2 Partielle Ordnung 2 1 Nebenlaufigkeit 3 LiteraturFunktionsweise BearbeitenDas Vorgehen beim Betrieb von Vektoruhren ist wie folgt Ahnlich wie bei der Lamport Uhr fuhrt jeder Prozess einen Zahler der bei jedem Ereignis insbesondere beim Senden und Empfangen von Nachrichten erhoht wird Aber anders als bei der Lamport Uhr besteht hier die Uhr jedes Prozesses nicht nur aus einem Zahler sondern aus einem Vektor bzw einem Array oder einer assoziativen Liste von Zahlern Jeder Prozess merkt sich den Zahlerstand aller anderen Prozesse soweit der bekannt ist Der aktuelle Stand der Uhr wird jeder gesendeten Nachricht angehangt Bei jedem Ereignis wird immer nur der eigene Zahler erhoht Wird eine Nachricht empfangen wird aus dem aktuellen und dem empfangenen Vektor ein elementweises Maximum gebildet um den neuen Stand der Uhr zu ermitteln Als Pseudocode sieht die Routine zum Senden einer Nachricht so aus Uhr PID Uhr PID 1 Zeitstempel Uhr sende Nachricht Zeitstempel Dabei sei PID fur jeden Prozess ein fest vorgegebener und eindeutiger Bezeichner zum Beispiel eine Prozess ID oder eine IP Adresse oder auch eine Kombination aus diesen beiden Die Felder der Uhr fur die Prozesse von denen noch keine Nachricht empfangen wurde werden als null angenommen Routine zum Empfangen einer Nachricht Nachricht Zeitstempel empfange Uhr PID Uhr PID 1 for Prozesse P do begin Uhr P max Uhr P Zeitstempel P end Partielle Ordnung BearbeitenUm nun anhand der Zeitstempel entscheiden zu konnen welche Nachricht bzw welches Ereignis von welcher anderen kausal abhangig ist wird uber den Standen der Vektoruhr eine partielle Ordnungsrelation definiert Ein Ereignis A ist eine Ursache von Ereignis B wenn der Zahler fur jeden Prozess im Zeitstempel C A kleiner oder gleich dem Zahler im Zeitstempel C B fur den korrespondierenden Prozess und fur mindestens einen dieser Zahler kleiner ist Formal A B E r e i g n i s s e displaystyle A B Ereignisse nbsp C A a 1 a 2 a 3 a n displaystyle C A a 1 a 2 a 3 a n nbsp C B b 1 b 2 b 3 b n displaystyle C B b 1 b 2 b 3 b n nbsp A B 1 i n a i b i i a i lt b i displaystyle A rightarrow B Leftrightarrow forall 1 leq i leq n a i leq b i land exists i a i lt b i nbsp Da fur Vektoruhren die Implikation in beide Richtungen gultig ist erfullen sie die starke Uhrenbedingung Eine Umsetzung der obigen Ordnungsrelation in Pseudocode A und B seien die zu vergleichenden Zeitstempel die Frage ist ob A eine Ursache von B war procedure ist ursache A B mindestens ein element strikt kleiner NEIN for Prozesse P do begin if A P gt B P then return NEIN if A P lt B P then mindestens ein element strikt kleiner JA end return mindestens ein element strikt kleiner end procedure Nebenlaufigkeit Bearbeiten Es ist durchaus moglich dass weder A B noch B A gilt die genannte Prozedur somit bei den Aufrufen ist ursache A B ist ursache B A jeweils NEIN als Antwort zuruckliefert Die Ereignisse sind dann nebenlaufig man schreibt auch A B Es ist gerade der entscheidende Vorteil von Vektoruhren uber den einfacheren Lamport Uhren dass es aufgrund der Zeitstempel moglich ist zu erkennen welche Ereignisse nebenlaufig sind Das ergibt sich aus der Gultigkeit der starken Uhrenbedingung Zu beachten ist hierbei dass im Gegensatz zur Ursachenrelation die Nebenlaufigkeit nicht transitiv ist Literatur BearbeitenC J Fidge Timestamps in message passing systems that preserve the partial ordering In K Raymond editor Proc of the 11th Australian Computer Science Conference ACSC 88 pp 56 66 February 1988 Reinhard Schwarz und Friedemann Mattern Detecting Causal Relationships in Distributed Computations In Search of the Holy Grail PDF 278 kB in Distributed Computing Nr 3 Vol 7 Springer 1994 Abgerufen von https de wikipedia org w index php title Vektoruhr amp oldid 231577310