3.2.12.4 Deadlocks vermeiden

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Deadlocks vermeiden=
<p>
<p>
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.
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.
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 [[Deadlocks#Vier_Bedingungen_f.C3.BCr_einen_Deadlock|vier Bedingungen]] macht Spooling unerfüllbar?
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 [[Deadlocks_vermeiden#Aufgabe_2|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.
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 [[Deadlocks#Vier_Bedingungen_f.C3.BCr_einen_Deadlock|vier Bedingungen]] ist nicht erfüllt?
* Falls nein: Welche der [[Vier Bedingungen nach Coffman|vier Bedingungen]] ist nicht erfüllt?
</p>
</p>
<spoiler text="Noch ein Denkanstoß">
<spoiler text="Noch ein Denkanstoß">

Aktuelle Version vom 10. November 2020, 13:52 Uhr

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.


Wichtig

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.


Aufgabe 1

Aufgabe

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?


Aufgabe 2

Aufgabe

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:

  1. Der Überweisungsbetrag.
  2. Die Nummer des Kontos, von dem der Betrag abgebucht wird (Konto A).
  3. Die Nummer des Kontos, dem der Betrag gutgeschrieben wird (Konto B).

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:

  • Reserviere Konto A.
  • Reserviere Konto B.
  • Führe aus: A minus Überweisungsbetrag ("abbuchen").
  • Führe aus: B plus Überweisungsbetrag ("gutschreiben").
  • Gib Konto B frei.
  • Gib Konto A frei.

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.


Aufgabe 3

Aufgabe

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:

  • Reserviere zunächst das Konto mit der kleineren Kontonummer.
  • Reserviere anschließend das Konto mit der größeren Kontonummer.
  • Führe aus: A minus Überweisungsbetrag ("abbuchen").
  • Führe aus: B plus Überweisungsbetrag ("gutschreiben").
  • Gebe das Konto mit der größeren Kontonummer wieder frei.
  • Gebe das Konto mit der kleineren Kontonummer wieder frei.

Kann bei dieser Vorgehensweise noch ein Deadlock auftreten?

  • Falls ja: Erläutere eine Beispielsituation mit dem Deadlock und zeichne den zugehörigen Betriebsmittelgraphen.
  • Falls nein: Welche der vier Bedingungen ist nicht erfüllt?



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png