Sobes.tech
Junior — Middle

Was ist eine Ressourcen-Deadlock und in welchen Situationen tritt sie in Systemen auf?

sobes.tech KI

Antwort von AI

Deadlock (Verklemmung) ist eine Situation in Mehrprozesssystemen, bei der zwei oder mehr Prozesse (oder Threads) sich gegenseitig dauerhaft blockieren, während sie auf die Freigabe von Ressourcen warten, die vom anderen gehalten werden.

Dies tritt auf, wenn alle vier Bedingungen gleichzeitig erfüllt sind:

  1. Gegenseitiger Ausschluss — eine Ressource kann nur von einem Prozess gleichzeitig gehalten werden.
  2. Hold and Wait — ein Prozess hält eine Ressource und wartet auf eine andere.
  3. Unmöglichkeit der erzwungenen Freigabe — eine Ressource kann einem Prozess nicht weggenommen werden, solange dieser sie nicht freiwillig freigibt.
  4. Zyklisches Warten — es gibt einen Zyklus von Prozessen, die jeweils auf eine Ressource warten, die vom nächsten im Zyklus gehalten wird.

Beispiel: Prozess A hat Ressource 1 gehalten und wartet auf Ressource 2, während Prozess B Ressource 2 gehalten hat und auf Ressource 1 wartet — beide sind dauerhaft blockiert.

In iOS und anderen Systemen treten Deadlocks häufig durch falschen Einsatz von Synchronisation auf, z.B. beim gleichzeitigen Halten mehrerer Sperren in unterschiedlicher Reihenfolge.

Zur Vermeidung von Deadlocks werden verwendet:

  • Ressourcen-Erwerb in einer bestimmten Reihenfolge;
  • Timeouts beim Warten;
  • Vermeidung des Haltens von Ressourcen während des Wartens auf andere;
  • Einsatz spezieller Synchronisationsmechanismen.