Sobes.tech
Junior — Middle

Wat is een deadlock van resources en in welke situaties doet het zich voor in systemen?

sobes.tech AI

Antwoord van AI

Deadlock (dodelock) is een situatie in multitaskingsystemen waarin twee of meer processen (of threads) elkaar voor altijd blokkeren, wachtend op het vrijmaken van resources die door de ander worden gebruikt.

Het ontstaat wanneer alle vier de voorwaarden gelijktijdig worden voldaan:

  1. Wederzijdse uitsluiting — een resource kan slechts door één proces tegelijk worden vastgehouden.
  2. Houden en wachten — een proces houdt een resource vast en wacht op een andere.
  3. Onmogelijk om geforceerd vrij te geven — een resource kan niet van een proces worden afgenomen totdat het deze vrijwillig vrijgeeft.
  4. Cyclisch wachten — er bestaat een cyclus van processen, elk wachtend op een resource die wordt vastgehouden door de volgende in de cyclus.

Voorbeeld: proces A heeft resource 1 vastgehouden en wacht op resource 2, terwijl proces B resource 2 heeft vastgehouden en wacht op resource 1 — beiden zijn voor altijd geblokkeerd.

In iOS en andere systemen komen deadlocks vaak voor door verkeerd gebruik van synchronisatie, bijvoorbeeld bij het verkrijgen van meerdere locks in verschillende volgordes.

Om deadlocks te voorkomen, worden gebruikt:

  • resource-toewijzingsvolgorde;
  • time-outs;
  • het vermijden van het vasthouden van resources terwijl op anderen wordt gewacht;
  • gebruik van gespecialiseerde synchronisatiemechanismen.