Sobes.tech
Junior — Middle

Qu'est-ce qu'une situation de blocage mutuel des ressources et dans quelles situations elle survient dans les systèmes?

sobes.tech IA

Réponse de l'IA

Le blocage mutuel (deadlock) est une situation dans les systèmes multitâches où deux processus ou plus se bloquent mutuellement pour toujours, en attendant de libérer des ressources occupées par l’autre.

Il survient lorsque toutes les quatre conditions suivantes sont remplies simultanément :

  1. Exclusion mutuelle — une ressource ne peut être détenue que par un seul processus.
  2. Retenue et attente — un processus détient une ressource et attend une autre.
  3. Impossibilité de libération forcée — une ressource ne peut pas être retirée d’un processus tant qu’il ne la libère pas volontairement.
  4. Attente cyclique — il existe un cycle de processus, chacun attendant une ressource détenue par le suivant dans le cycle.

Exemple : le processus A a pris la ressource 1 et attend la ressource 2, tandis que le processus B a pris la ressource 2 et attend la ressource 1 — tous deux sont bloqués pour toujours.

Dans iOS et d’autres systèmes, les blocages se produisent souvent en raison d’une mauvaise utilisation de la synchronisation, par exemple lors de la prise de plusieurs verrouillages dans un ordre différent.

Pour prévenir les blocages, on utilise :

  • un ordonnancement de la prise de ressources ;
  • des délais d’attente ;
  • éviter de maintenir des ressources en attendant d’autres ;
  • l’utilisation de mécanismes de synchronisation spécialisés.