Deadlocks
Deadlocks
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)
- Mutual Exclusion — Ressource wird exklusiv verwendet → Kritischer Abschnitt & Mutual Exclusion
- Hold and Wait — ein Prozess, der schon Ressourcen hält, fordert weitere an
- No Preemption — zugeteilte Ressourcen gibt nur der Besitzer frei
- Circular Wait — es existiert ein Zyklus wechselseitig anfordernder Prozesse
Fällt eine Bedingung weg, ist kein Deadlock möglich. Probiere es aus:
Behandlung von Deadlocks
| Strategie | Idee | Beispiel |
|---|---|---|
| Ignorieren | Möglichkeit & Auftreten ignorieren („Vogel-Strauß") | die meisten modernen OS — andere Ansätze sind zu teuer |
| Erkennen & beheben | Auftreten erkennen, dann auflösen | Ressourcen-Belegungsgraph, dann Abbruch oder Ressourcen-Wegnahme |
| Verhindern | vor jeder Vergabe prüfen | Banker-Algorithmus (sehr teuer) |
| Vermeiden | mind. eine der 4 Bedingungen grundsätzlich ausschalten | z.B. Ressourcen-Ordnung → Philosophenproblem |
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 ������