Hier nun kurz eine Einführung in den Vorlegungsstoff von heute.
Ja, es geht also um den Stillstand gekoppelter Prozesse, wo eine Betriebsmittelzuteilung
vorgenommen worden ist, die in irgendeiner Form vielleicht fehlkonstruiert ist oder
die eben fehlgeleitet ist.
Man wird sehen, dass es zum Beispiel um solche sogenannten überkreuzen Anforderungen von
Betriebsmitteln geht, die die Prozesse gemeinsam benutzen werden.
Dafür werden wir Beispiele sehen.
Es kann aber eben auch ganz einfach darum gehen, dass bestimmte Freigaben von Betriebsmitteln
einfach verloren gehen.
Aus irgendwelchen Gründen, dass eine bestimmte Release-Operation von einem Prozess nicht
mehr durchgeführt wird.
Oder es geht eben auch um im Voraus erworbene Ressourcen, die einfach nicht freigegeben
werden, aufgrund von Fehlzuständen vielleicht die Prozesse innerhalb ihrer Programme denn
erfahren würden, wenn die Programme dann eben zur Ausführung kommen.
Der Dijkstra nannte das Deadly Embrace, also die tödliche Umarbung solcher Prozesse, die
dann direkt oder indirekt voneinander abhängig sind, weil sie über gemeinsame Ressourcen
und sei es nur eine gemeinsame Variable, miteinander gekoppelt sind.
Typischerweise würde man sagen können, ja, das sind Entwurfsfehler in den Programmen.
Tatsächlich ist es der Fall, dass eben dieses nicht zirkelsfehlende Programm, was solchen
Situationen zugrunde liegt, einfach einen Fehler enthält und eine Behebung dieser tödlichen
Umarbung bedeuten würde, dass man Entwurfsänderungen oder Programmieränderungen denn wirklich
vornehmen müsste, so man denn diesen Fehler erkannt hat.
Man kann hier analytisch oder konstruktiv rangehen.
Wir werden beide Dinge in der Vorlesung behandeln, aber der Schwerpunkt wird eben eher auf diese
konstruktiven Maßnahmen liegen.
Das heißt also programmiertechnische Maßnahmen, davon werde ich so kleine Beispiele bringen,
die man ergreifen kann, um letztendlich solche Verklemmungssituationen vorzubeugen.
Es gibt verschiedene Aspekte von solchen Verklenkungen der Prozesse und das hat dann damit zu tun,
wie die eigentlich warten, also was denn wirklich eine Wartesituation technisch gesehen bedeutet.
Wir reden hier einmal von der Totsperre, das wäre der Deadlock oder die Lebenssperre, das
wäre der Livelock.
Nun ist es bezeichnenderweise so, dass die Totsperre das kleinere Übel ist, weil wir
sie erkennen können.
Dazu werde ich dann später konkret noch mehr sagen.
Wohingegen die Lebenssperre einfach nicht erkennbar ist, ist dennoch den gleichen Effekt
halt, hat die Prozesse laufen, also irgendwie noch, aber das Gesamtsystem kommt überhaupt
nicht voran.
Wir können es nicht erkennen und damit ist es eigentlich das größere Übel in dem Fall.
Ideal wäre natürlich ein System, wo man vollständig von solchen Stillstandssituationen
befreit ist.
Gegenmaßnahmen sind jetzt hier Verbeugung von Verklemmung, Vermeidung von Verklemmung
oder eben die Erkennung und dann eben auch Erholung von solchen Situationen.
Die Verbeugung ist eine typische, die Vorbeugung ist eine typische konstruktive Maßnahme, die
ist verbreitet.
Die wird in vielen Systemen denn realisiert.
Man hat zum Teil eben auch noch analytische Maßnahmen, die man versucht zu ergreifen,
die dann aber aufgrund ihrer Komplexität, auch Berechnungskomplexität, die dahintersteckt,
um herauszufinden, wer jetzt mit wem, warum möglicherweise in einer Verklemmungssituation
steckt, ist eben sehr hoch, weshalb man solche analytischen Maßnahmen für gewöhnlich nicht
vorfindet, sondern eben die vorbeugenden Maßnahmen im Vordergrund stehen.
Presenters
Zugänglich über
Offener Zugang
Dauer
00:04:54 Min
Aufnahmedatum
2020-12-14
Hochgeladen am
2020-12-14 10:50:11
Sprache
de-DE