Deadlocks vermeiden

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
Spooling

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
Überweis' mal was

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
Überweisen ohne Deadlock?

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 80x15.png