[gesichtete Version] | [gesichtete Version] |
Kwastg (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
|||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<p> | <p> | ||
Wenn es um die Erkennung von Deadlocks geht, dann impliziert dies immer, dass der Deadlock-Zustand bereits eingetreten ist. Irgendeine Art von negativen Folgen wird sich daraus zwangsläufig ergeben. | Wenn es um die [[Deadlocks erkennen|Erkennung von Deadlocks]] geht, dann impliziert dies immer, dass der Deadlock-Zustand bereits eingetreten ist. Irgendeine Art von negativen Folgen wird sich daraus zwangsläufig ergeben. | ||
</p> | </p> | ||
Zeile 12: | Zeile 11: | ||
<loop_area type="important"> | <loop_area type="important"> | ||
<p> | <p> | ||
Wenn man ein Betriebssystem entwickelt, welches mindestens eine der [[ | Wenn man ein Betriebssystem entwickelt, welches mindestens eine der [[Vier Bedingungen nach Coffman|vier Bedingungen für Deadlocks]] '''unerfüllbar''' macht, dann können Deadlocks überhaupt nicht auftreten! | ||
</p> | </p> | ||
</loop_area> | </loop_area> | ||
Zeile 26: | Zeile 25: | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Spooling"> | <loop_task title="Spooling" id="5fa97854ef31a"> | ||
<p> | <p> | ||
Recherchiere und erläutere:<br /> | Recherchiere und erläutere:<br /> | ||
Zeile 32: | Zeile 31: | ||
</p> | </p> | ||
<p> | <p> | ||
Spooling ist prinzipiell geeignet, um Deadlocks zu vermeiden. Welche der [[ | Spooling ist prinzipiell geeignet, um Deadlocks zu vermeiden. Welche der [[Vier Bedingungen nach Coffman|vier Bedingungen]] macht Spooling unerfüllbar? | ||
</p> | </p> | ||
</loop_task> | </loop_task> | ||
Zeile 39: | Zeile 38: | ||
<br /> | <br /> | ||
== Aufgabe 2 == | == Aufgabe 2 == | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Überweis' mal was"> | <loop_task title="Überweis' mal was" id="5fa97854ef320"> | ||
<p> | <p> | ||
Denke dir folgende Situation in einer Bank: | Denke dir folgende Situation in einer Bank: | ||
Zeile 79: | Zeile 79: | ||
<p> | <p> | ||
<loop_area type="task"> | <loop_area type="task"> | ||
<loop_task title="Überweisen ohne Deadlock?"> | <loop_task title="Überweisen ohne Deadlock?" id="5fa97854ef324"> | ||
<p> | <p> | ||
Es geht wieder um Überweisungen in einer Bank, gemäß der vorangegangenen Aufgabe. Der Prozess zur Durchführung einer einzelnen Überweisung geht diesmal nach einem besonderen Muster vor. | Es geht wieder um Überweisungen in einer Bank, gemäß der [[Deadlocks_vermeiden#Aufgabe_2|vorangegangenen Aufgabe]]. Der Prozess zur Durchführung einer einzelnen Überweisung geht diesmal nach einem besonderen Muster vor. | ||
</p> | </p> | ||
<p> | <p> | ||
Zeile 95: | Zeile 95: | ||
Kann bei dieser Vorgehensweise noch ein Deadlock auftreten? | Kann bei dieser Vorgehensweise noch ein Deadlock auftreten? | ||
* Falls ja: Erläutere eine Beispielsituation mit dem Deadlock und zeichne den zugehörigen Betriebsmittelgraphen. | * Falls ja: Erläutere eine Beispielsituation mit dem Deadlock und zeichne den zugehörigen Betriebsmittelgraphen. | ||
* Falls nein: Welche der [[ | * Falls nein: Welche der [[Vier Bedingungen nach Coffman|vier Bedingungen]] ist nicht erfüllt? | ||
</p> | |||
<spoiler text="Noch ein Denkanstoß"> | |||
<p> | |||
Die einfachste Situation besteht aus zwei Prozessen und zwei Konten. | |||
</p> | |||
<p> | |||
Aber was ist, wenn die zwei Prozesse auf insgesamt drei Konten zugreifen?<br /> | |||
Und wenn man noch mehr Prozesse einbezieht, dann könnte auch die Anzahl der beteiligten Konten weiter steigen. | |||
</p> | |||
<p> | |||
Ist dann ein Deadlock möglich, oder nicht? Erläutere! | |||
</p> | </p> | ||
</spoiler> | |||
</loop_task> | </loop_task> | ||
</loop_area> | </loop_area> |
Wenn es um die Erkennung von Deadlocks geht, dann impliziert dies immer, dass der Deadlock-Zustand bereits eingetreten ist. Irgendeine Art von negativen Folgen wird sich daraus zwangsläufig ergeben.
Eine andere Strategie ist die Vermeidung von Deadlocks. Ein Betriebssystem könnte von vorneherein so konstruiert werden, dass Deadlocks gar nicht möglich sind.
Wenn man ein Betriebssystem entwickelt, welches mindestens eine der vier Bedingungen für Deadlocks unerfüllbar macht, dann können Deadlocks überhaupt nicht auftreten!
Man betrachte also einzelne Möglichkeiten in dieser Richtung. Die folgenden Aufgaben beschäftigen sich damit.
Recherchiere und erläutere:
Was versteht man unter Spooling? (Zum Beispiel bei einem Drucker-Spooler.)
Spooling ist prinzipiell geeignet, um Deadlocks zu vermeiden. Welche der vier Bedingungen macht Spooling unerfüllbar?
Denke dir folgende Situation in einer Bank:
Es werden von einem Großrechner der Bank viele Überweisungen durchgeführt. Der Einfachheit halber (für diese Aufgabe) nur innerhalb derselben Bank.
Zu einer Überweisung gehören drei Dinge:
Für jede Überweisung startet das Betriebssystem des Großrechners einen separaten Prozess. Dieser Prozess zur Durchführung einer einzelnen Überweisung geht nun wie folgt vor:
Die beiden Konten A und B sind damit die vom Überweisungsprozess benötigten Betriebsmittel.
Erläutere eine Situation, bei der es durch die zu erledigenden Überweisungen zu einem Deadlock kommt! Zeichne dazu den Betriebsmittelgraphen.
Es geht wieder um Überweisungen in einer Bank, gemäß der vorangegangenen Aufgabe. Der Prozess zur Durchführung einer einzelnen Überweisung geht diesmal nach einem besonderen Muster vor.
Für jede Überweisung:
Kann bei dieser Vorgehensweise noch ein Deadlock auftreten?
Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png