3 SynchronisationDeadlocks

Deadlocks

Auf einen Blick

Ein Deadlock (Verklemmung) liegt vor, wenn sich zwei oder mehr Prozesse gegenseitig sperren, sodass keiner mehr weiterarbeiten kann. Er entsteht genau dann, wenn vier Bedingungen gleichzeitig erfüllt sind.

Definition

Ein Deadlock liegt vor, wenn zwei oder mehr Prozesse/Threads sich gegenseitig sperren, sodass kein Prozess mehr weiterarbeiten kann.

Ursache ist der exklusive Zugang zu Ressourcen, der zu Wartezuständen führt, die nicht mehr aufgelöst werden können. Gefährlich für Zuverlässigkeit und Performance.

Die vier Bedingungen (notwendig und hinreichend)

  1. Mutual Exclusion — Ressource wird exklusiv verwendet → Kritischer Abschnitt & Mutual Exclusion
  2. Hold and Wait — ein Prozess, der schon Ressourcen hält, fordert weitere an
  3. No Preemption — zugeteilte Ressourcen gibt nur der Besitzer frei
  4. Circular Wait — es existiert ein Zyklus wechselseitig anfordernder Prozesse

Fällt eine Bedingung weg, ist kein Deadlock möglich. Probiere es aus:

deadlock.html

Behandlung von Deadlocks

StrategieIdeeBeispiel
IgnorierenMöglichkeit & Auftreten ignorieren („Vogel-Strauß")die meisten modernen OS — andere Ansätze sind zu teuer
Erkennen & behebenAuftreten erkennen, dann auflösenRessourcen-Belegungsgraph, dann Abbruch oder Ressourcen-Wegnahme
Verhindernvor jeder Vergabe prüfenBanker-Algorithmus (sehr teuer)
Vermeidenmind. eine der 4 Bedingungen grundsätzlich ausschaltenz.B. Ressourcen-Ordnung → Philosophenproblem
Bezug zum Scheduling

Je nach Scheduling-Algorithmus wird eine der Deadlock-Bedingungen ausgeschaltet — Scheduling ist eine Form der „Synchronisation" der Ressource CPU.

Verwandte Notes

Philosophenproblem · Semaphoren · Kritischer Abschnitt & Mutual Exclusion · Scheduling-Grundlagen

← Kapitelübersicht ������


⬅️ Semaphoren · Philosophenproblem ➡️

Built with LogoFlowershow