Nun mit dem Ablaufplan, der im Rahmen des Schedulings erstellt wird, werden Prozessabläufe schon in gewisser Art und Weise koordiniert.
Eben entsprechend der Reihenfolgenbildung, die bezüglich der Bereitliste letztendlich stattgefunden hat.
Aber wir müssen die Koordinierung noch aus einem anderen Blickwinkel betrachten. Das wollen wir jetzt hiermit mal tun.
Die Koordinierung kann praktisch über den Ablaufplan erfolgen und zwar implizit erfolgen, wenn wir zum Zeitpunkt der Prozesseinplanung ein komplettes Vorwissen zu allen Kontrollfluss- und Datenabhängigkeiten haben.
Und zwar von allen Prozessen, die eingeplant werden sollen, deren Reihenfolge letztendlich vorherbestimmt sein soll.
Wenn man das schafft, also wenn man dieses Vorwissen wirklich komplett in dieser Art und Weise denn besitzt, dann ist doch wirklich ein Ablaufplan möglich, wo wir sagen, dass nachher der spätere Prozessablauf implizit koordiniert geschehen wird.
Häufig ist das nicht der Fall. Wenn wir also kein komplettes Vorwissen über diese Prozesse besitzen, dann müssen wir explizit koordinieren.
Also da wo wir wissen, dass wir eine Koordinationsmaßnahme ergreifen müssen, gerade beim Zugriff auf gemeinsame Betriebsmittel letztendlich, dann müssen wir explizit koordinieren.
Und das muss man mit entsprechenden Programmanweisungen im Maschinenprogramm bewerkstelligen.
Ja und das macht dann dieses Maschinenprogramm dann letztendlich wiederum zum nicht sequenziellen Programm.
Ebenso wie wir in diesem Programm dann eben Anweisungen drin haben werden, um überhaupt parallele Programmabläufe, also weitere Prozesse zu erzeugen, die in diesem Programm da selbst agieren,
brauchen wir jetzt Anweisungen, die diese Prozesse, die gleichzeitig stattfinden könnten, eben koordinieren.
Letztlich. Wir haben da eine Situation, wo wir natürlich auf den Ablaufplan als solchen nicht verzichten.
Der reiht die Prozesse schon in gewisser Art und Weise entsprechend der Einplanungsstrategie, die man sich vorgenommen hat.
Aber wir können dann nicht mehr einfach aufgrund fehlendes Wissens, Vorwissens sicherstellen, dass immer ein komplett koordinierter Ablauf dieser Prozesse möglich ist.
Also der Plan koordiniert da nicht wirklich. Das ist eigentlich der Regelfall, den man hat. Man hat deshalb eben beide Komponenten drin.
Man hat eben die Ablaufplanerstellung im Sinne des Scheduling.
Und dann braucht man eben auch noch explizite Maßnahmen der Prozesskoordinierung, um nachher für korrekte Programmabläufe,
und zwar für korrekte Abläufe innerhalb eines nicht sequenziellen Programms nachher zu sorgen.
Und das ist das, was man als Synchronisation bezeichnet.
Synchronisation, sagen wir es, ist die Koordination der Kooperation und Konkurrenz zwischen Prozessen.
Kooperation zwischen Prozessen, die in gewissen Rollen letztendlich spielen.
Also der kooperierten Produzentenprozess mit dem Consumerprozess letztendlich oder umgekehrt.
Oder Konkurrenz zwischen Prozessen an den Stellen, wo wir dann feststellen, dass wir wiederverwendbare Betriebsmittel besitzen,
die aber nur in begrenzter Zahl verfügbar sind und um die Verfügbarkeit dieser Betriebsmittel eben mehrere Prozesse,
gleichzeitig Prozesse konkurrieren. Und demzufolge läuft denn diese Form der Synchronisation noch durch,
ist sehr unterschiedlich, je nachdem, was wir für Betriebsmittelarten vor uns sehen
und wie die Prozesszugriffsarten denn letztendlich aussehen.
Ein ganz wichtiger Punkt ist hierbei zu beachten, auch wenn wir eine Situation hätten,
wo wir ein sehr umfangreiches Vorwissen über alle diese Prozesse und die Abhängigkeiten, die dort existieren, besitzen,
dann kann man noch lange nicht sagen, dass ein vorhergesagter, sagen wir mal,
man aus der Menge der vorhergesagten Prozesse auch wirklich zu einem, sagen wir mal, durchsetzbaren,
entsprechend durchsetzbaren Ablaufplan kommt. Vorwissen kann unvollständig sein und damit hat man denn eben eine gewisse Ungewissheit,
die immer zu berücksichtigen ist. Aber unabhängig denn davon kann es allein die Berechnungskomplexität sein,
um einen solchen Plan zu erstellen, die einfach den engen Zeitrahmen, den man zur Verfügung hat, um diesen Plan zu erstellen,
einfach sprengen würde. Also wirklich eine algorithmische Komplexität existiert,
die einfach nach hier eine zu hohe Laufzeit in der Sortierung der Prozesskontrollblöcke
für eine dynamische Implementierung einer Bereitliste zur Folge haben würde,
dass wir einfach sagen können, ne, das können wir nicht machen.
Wir haben demzufolge keine Möglichkeit, einen optimalen, kompletten Ablaufplan zu erstellen.
Oder wir haben eben auch so eine Sache, was man als Hintergrundrauschen bezeichnet, das ist eigentlich immer da.
Unterbrechung, Zugriffsfehler, wir haben Zugriff auf Zwischen- und Arbeitsspeicher,
wir haben Pipelining-Effekte in der Hardware, also Befehlsverknüpfung,
Logik, Arbitrationslogik auf dem Bus zwischen CPU und Speicher und Peripherie.
Das sind alles Dinge, softwaremäßig wie auch hardwaremäßig, die dazu führen,
dass es Störungen gibt, Interferenzen gibt, die Hintergrundrauschen produzieren,
was sich auf ein Zeitverhalten von Prozessen auswirkt, weshalb eben auch eine zeitliche Vorhersage von Prozessen,
die insbesondere dynamisch in Systeme denn eingespeist werden, einfach nur noch sehr, sehr schwer
und in vielen Fällen eben unmöglich ist. Deshalb ist Koordinierung, also explizite Maßnahmen
zur Synchronisation von Prozessen eine ganz wichtige Sache.
Presenters
Zugänglich über
Offener Zugang
Dauer
00:40:31 Min
Aufnahmedatum
2020-05-27
Hochgeladen am
2020-05-27 17:36:36
Sprache
de-DE