54 - 11.4: Grundlagen der Systemblockade [ID:26445]
50 von 186 angezeigt

Nun die Systemblockade. Hier zunächst Grundlagen, dann schauen wir uns mal ein Fallbeispiel an,

um das Problem ein bisschen besser zu verdeutlichen und dann gehen wir auf

Gegenmaßnahmen ein. Also um so eine Blockaden vielleicht überhaupt gar nicht erst auftreten

zu können, sie vorzubeugen, zu vermeiden oder sie zu erkennen und sich dann praktisch von

solch einer Blockadesituation irgendwie geeignet erholen zu können. Stillstand von Prozessen Deadly

Embraced. Das ist die Situation, wo also denn gekoppelte Prozesse gegenseitig auf die Aufhebung

einer Wartepedingung warten, wobei diese Wartepedingung aber eben durch Prozesse dieses

Systems, die untereinander gekoppelt sind, selbst aufgehoben werden müsste. Es reicht aus eine

einzige Wartepedingung zu haben, die sagt aber für gewöhnlich in so einer Situation etwas über die

Verfügbarkeit eines bestimmten Betriebsmittels aus, vielleicht auch mehrere Betriebsmittel,

aber es reicht dann sozusagen ein Betriebsmittel, das halt hier zu dieser Wartepedingung, die für

die Prozesse gelten, denn in Bezug stehen. Das ist unabhängig von der Art des Betriebsmittels,

aber es ist eben so, dass die Prozesse, die gekoppelten Prozesse, die Versorgung dieses

Betriebsmittels eben durch entsprechende Aktionen gleichgestellter anderer Prozesse erwarten. Also ein

ganz einfaches Beispiel ist so eine indirekte Maßnahme, wo ein Prozess speicherfrei gibt.

Speicher ist eine wiederverwendbare Ressource, wo denn dieser freigegebenen Speicher von einem

anderen Prozess, der darauf wartet, Speicher zugeteilt zu bekommen, genutzt werden kann,

ohne dass die Prozesse sich jetzt halt kennen müssen. Das können wirklich vollkommen

verschiedene Maschinenprogramme sein, geregelt im Betriebssystem natürlich wird dann diese

Speicherverwaltung, diese Betriebsmittelverwaltung bezüglich dieses gemeinsamen Hauptspeichers,

hätte man so eine Schiene. Eine andere direkte Art und Weise wäre die, dass ein Prozess zum

Beispiel auf den Empfang einer Nachricht wartet, die ihm ein anderer Prozess zusenden muss. Also

da sind denn die Prozesse, die kennen sich sehr wohl untereinander und der eine schickt dem anderen

einfach eine Nachricht zu, weil die miteinander kommunizieren wollen. In beiden Fällen, ob die

sich nun kennen, die Prozesse oder ob die sich nicht kennen, ob die sozusagen logisch eigentlich

unabhängig voneinander sind, kann es sehr wohl zu in ungünstigen Situationen, zu solchen

Verklemmungssituationen, zu so einem Stillstand dieser Prozesse kommen. Und wenn jetzt alle

Prozesse so handeln, also wenn alle Prozesse praktisch so eine Warte Bedingung entgegen sehen,

dass da mal irgendwann eine Ressource frei wird, dann wird eben überhaupt gar kein Betriebsmittel

verfügbar gestellt, weil kein anderer Prozess tatsächlich diese Anweisung der Freigabe ausführen

würde. Wir werden Beispiele davon noch mitbekommen. Nun ist es so, dass diese Situation,

von der wir hier sprechen, einfach entstehen kann, obwohl eben kein einziger Prozess mehr als die

insgesamt verfügbare Menge von Betriebsmitteln benötigt. Also wir hätten keinen einzigen Prozess

gesagt, ich möchte den gesamten 8 GB Hauptspeicher meines 8 GB großen physischen Hauptspeichers

belegen. Die Situation haben wir nicht. Die belegen immer nur Teile davon. Aber das machen eben alle

Prozesse. Und es führt dann nachher dann dazu, dass wenn denn jeder einen einzelnen Teil verwendet,

aber in Summe sozusagen diese Ansprüche den gesamtverfügbaren Hauptspeichervorrat überschreitet,

hätten wir so eine Situation. Also nochmal, kein einziger Prozess will alles haben. Die wollen

immer nur Teile davon haben. Und so eine Verklemmungssituation kann unabhängig davon

auftreten, ob denn praktisch diese Betriebsmittelzuteilung, von der wir hier immer

ausgehen müssen, in der Verantwortlichkeit des Betriebssystems liegt oder etwa des

Anwendungsprogramms selbst. Natürlich sprechen wir jetzt hier von Vorgängen, die vorwiegend

innerhalb von Betriebssystemen halt ablaufen. Aber auch Anwendungsprogramme selbst verwalten

Ressourcen auf ihrer Ebene. Sehr problemspizifische Ressourcen, die werden natürlich immer irgendwie

abgebildet auf die vom Betriebssystem bereitgestellten Betriebsmittel. Also wenn wir jetzt etwa an

Speicher denken. Aber natürlich können Anwendungsprozesse auf ihrer Ebene oberhalb

eines Betriebssystems sehr wohl in so einer Verklemmungssituation halt kommen. Und davon

kriegt ein Betriebssystem dann überhaupt nichts mit. Ihr Betriebssystem würde nur noch sehen,

die sind verklemmt, aber man wüsste überhaupt gar nicht mehr, warum die verklemmt sind. Eine

andere Situation hätte man denn halt innerhalb des Betriebssystems. Da ist ja die Verklemmung

Teil eines Kapitels:
10.4 Kreiseln

Zugänglich über

Offener Zugang

Dauer

00:20:35 Min

Aufnahmedatum

2020-12-14

Hochgeladen am

2020-12-14 13:39:52

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen