Sequentialisierung

Unter Sequentialisierung versteht man das schaffen einer Ordnung für eine Menge von Aktionen entlang der Kausalordnung, die zum Beispiel durch einen Funktionsbaum gegeben ist. Der Sinn ist es, eine Reihenfolge zu finden, in der die Aktionen hintereinander ausgeführt werden können, so dass jede Aktion, die das Ergebnis einer anderen benötigt, erst ausgeführt wird, wenn dieses Ergebnis vorliegt. Die Reihenfolge, in der dabei nebenläufige (kausal unabhängige) Aktionen ausgeführt werden, ist beliebig. So ergeben sich oft mehrere mögliches Sequentialisierungen, die aber alle zu dem gleichen Ergebnis führen (sonst wären es eben keine korrekten Sequentialisierungen).

Die Sequentialisierung ist das Gegenteil der Parallelisierung.

Anwendung

Die Sequentialisierung von Operationen ist insbesondere bei der Resourcenplanung (Scheduling) wichtig um Deadlocks zu vermeiden. Auch für die Integrität von Transaktionssystemen ist sie entscheident. Die nachträgliche Sequentialisierung von Nachrichten auf Grund von Zeitstempeln ist in Verteilten Systemen wichtig, sowohl im Betrieb, als auch zur Analyse (siehe dazu Logische Uhr).

Beispiel

thumb|Beispiel eines Funktionsbaums für Spaghetti Bolognese

Die Abbildung zeigt einen stark vereinfachten Funktionsbaum für die Zubereitung von Spaghetti bolognese. Wenn wir nun einen Koch hätten, der immer nur eine Aufgabe auf einmal erfüllen kann, müssen wir eine Reihenfolge festlegen, in denen er diese Dinge tun muss. Aus der Abbildung ergeben sich mehrere möglichen Sequentialisierungen (wenn wir außer Acht lassen, dass die Spaghetti kalt werden könnten, etc):


Dagegen sind die folgenden Reihenfolgen keine korrekten Sequentialisierungen:


Kategorie:Parallelverarbeitung Kategorie:Datenbank

See also: Sequentialisierung, Deadlock, Funktionsbaum, Kausalordnung, Logische Uhr, Nebenläufigkeit, Ordnungsrelation, Parallelisierung, Scheduling, Spaghetti