21 - 10.4 Nichtsequentialität: Koordination von Konkurrenz [ID:23447]
50 von 290 angezeigt

Nun diese Abhängigkeiten, insbesondere diese Datenabhängigkeiten, die wir jetzt

betrachtet haben, die zwingen uns hin und wieder, denn dazu eine

Sequenzialisierung der Prozesse durchzuführen. Und das bringt uns dann zu

dem Begriff der Koordinierung der Konkurrenz. Nun, Koordination von

Konkurrenz ist wichtig, wenn wir gleichzeitige Aktionen haben, die sich in

Raum und Zeit überlappen. Und dabei ist dann halt durchaus zu berücksichtigen,

dass wir dann mal davon ausgehen, dass der Moment des Zusammentreffens eben

dieser gleichzeitigen Aktion für gewöhnlich nicht vorherbestimmt ist.

Zudem gehen wir mal davon aus, dass diese Aktionen eben komplex sind, die

bestehen aus mehreren Einzelschritten. Es könnten also Unterprogramme zum

Beispiel sein und es sind nicht nur einfache einzelne Maschinenbefehle. Und die

besondere Eigenschaft ist eben die Teilbarkeit dieser Aktionen in zeitlicher

Hinsicht. Nun wissen wir, dass kausal zusammenhängende Aktionen eben

nacheinander stattfinden müssen. Das kann man offline-mäßig erreichen, zum

Beispiel indem wir eine statische Einplanung vornehmen. Das geht dann gut,

wenn wir alle Daten und Kontrollflussabhängigkeiten kennen und auf

Basis dieser Kenntnis eben in der Lage sind, einen Ablaufplan zu generieren, der

einfach für eine implizite Synchronisation für diese Prozesse sorgt.

Das ist ein strikt analytischer Ansatz, der aber Vorabwissen auf jeden Fall

erfordert. Und wenn wir jetzt den Aspekt betrachten, dass wir nicht davon ausgehen,

dass der Moment des Zusammentreffens dieser gleichzeitig Aktionen bekannt ist,

dann werden wir eigentlich diesen Offline-Weg eigentlich nicht gehen können,

um dann nachher sicherzustellen, dass dann solche Aktionen eben auch

nacheinander stattfinden. Das heißt, wir müssen eine Online-Lösung finden und

das führt uns dann eigentlich immer zur dynamischen Einplanung, wo denn die

Startpunkte für die Prozesse durch Ereignisse repräsentiert werden. Das heißt,

Prozesse werden durch Ereignisse ausgelöst. Das können interne wie auch

externe Ereignisse sein. Hier ist dann explizite Synchronisation in den einzelnen

Programmanweisungen vorzunehmen, damit dann einfach diese Koordination

geschieht. Man nennt das eben auch als konstruktiven Ansatz, weil man dafür

Programmanweisungen wirklich explizit präsentieren muss und durchaus auch

seine Software so entwerfen muss im Vorfeld, dass nachher eine einfache

Synchronisation denn möglich ist. Der große Vorteil dieses Verfahrens ist

eben oder diese Herangehensweise ist eben, dass man hier ohne Vorabwissen

auskommt. Vorabwissen ist immer noch vorteilhaftig zu haben, aber man

braucht dieses Vorabwissen über Prozesse und wann die stattfinden,

eben nicht, um praktisch dann halt hier für eine vernünftige Reihenfolgenbildung

in Bezug auf gleichzeitige Aktionen durchzuführen.

Diese explizite Prozesssynchonisation, die man dann halt macht, kann Streit

hervorbringen und das wird man immer dann haben oder muss man dann damit

rechnen, wenn wir praktisch mehrere gleichzeitig Prozesse halt haben, die

sozusagen ein und dasselbe wiederverwendbare Betriebsmittel mit

benutzen wollen. Also sowas wie Sharing von Datenstrukturen zum Beispiel,

durchführen wollen oder andere Arten von Betriebsmittel oder wir betrachten

konsumierbare Betriebsmittel und dann betrifft sozusagen der Punkt des

Wettstreiks immer genau der Moment der Übergabe des Betriebsmittels von dem

einen Prozess an den anderen Prozess, wenn man so will. Wichtig ist hier, egal wie

man eigentlich synchronisiert, Hauptsache, dass diese Methode, die man verwendet,

eben minimal invasiv für die jeweiligen Prozesse wirkt. Das heißt also die

Prozesse, die denn koordiniert werden, müssen, die sollten nicht zu stark

Teil eines Kapitels:
10.1 Nichtsequentialität

Zugänglich über

Offener Zugang

Dauer

00:24:19 Min

Aufnahmedatum

2020-11-10

Hochgeladen am

2020-11-11 02:57:27

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen