<< 4.2 Erkennung und Behebung | Index | 4.4 Vermeidung (prevention) >>


4.3 Deadlock-Verhinderung (avoidance)

  • Betrachtung der dynamischen Zuteilung der Ressourcen
    • Deadlocks können durch die richtige Zuteilung verhindert werden, wenn im Voraus bekannt ist, wie viele Ressourcen sie maximal benötigen.
    • Idee: Bei ungünstiger Zuweisung der Ressourcen wird irgendwann eine Schwelle erreicht, an dem für keinen einzigen Prozess die maximal nötige Anzahl Ressourcen zur Verfügung steht.
      => Überschreiten diese Schwelle verhindern
  • Problem daran
    • Maximal nötige Ressourcen müssen bekannt sein, in der Praxis aber nur selten der Fall.
    • Anzahl der Prozesse ändert sich ständig
    • Anzahl der Ressourcen kann sich ändern (z. B. bei Defekt)
=> Verfahren werden in der Praxis kaum angewandt!

Sichere und unsichere Zustände

  • Sicherer Zustand
    • Es existiert eine Ausführungsreihenfolge, bei der die maximalen Anforderungen jedes Prozesses nach und nach erfüllt werden können und so alle Prozesse zu Ende laufen können.
    • Führt garantiert nicht zu einem Deadlock
  • Unsicherer Zustand
    • Es existiert keine solche Ausführungsreihenfolge.
    • Kann zu einem Deadlock führen, muss nicht (z. B. wenn ein Prozess nicht seine Maximalforderung ausschöpft).

Bankiers-Algorithmus und Habermann-Verfahren

  • Belegungsmatrix B und Anforderungsmatrix A (max. erforderliche Ressourcen) wie in Kapitel 4-2 gegeben.
  • Idee: Bei jeder neuen Anforderung wird überprüft, ob eine Zuteilung in einen unsicheren Zustand führen würde. Falls ja erfolgt keine Zuteilung, sonst schon.
  • Bankiers-Algorithmus
    • Nur eine Ressource ("Geld"), Ablauf siehe "Idee".
  • Habermann-Verfahren
    • Bankiers-Algorithmus für mehrere Ressourcen
    • Bei neuer Anforderung:
      1. Erstellen von Matritx B' und Restvektor R' als ob Zuteilung erfolgt wäre
      2. Deadlock-Erkennung starten
      3. Falls Zustand sicher war: Zuteilung kann erfolgen, sonst nicht.

Nach oben

Zuletzt geändert am 14 März 2005 17:38 Uhr von chrschn