Sobes.tech
Junior — Middle

¿Qué es un interbloqueo de recursos y en qué situaciones surge en los sistemas?

sobes.tech AI

Respuesta de la IA

La interbloqueo (deadlock) es una situación en los sistemas multitarea en la que dos o más procesos (o hilos) se bloquean mutuamente para siempre, esperando liberar recursos que están siendo utilizados por el otro.

Ocurre cuando se cumplen simultáneamente las cuatro condiciones:

  1. Exclusión mutua — un recurso solo puede ser tomado por un proceso a la vez.
  2. Retención y espera — un proceso mantiene un recurso y espera por otro.
  3. Imposibilidad de liberar forzosamente — un recurso no puede ser tomado de un proceso hasta que este lo libere voluntariamente.
  4. Espera cíclica — existe un ciclo de procesos, cada uno esperando un recurso que posee el siguiente en el ciclo.

Ejemplo: el proceso A ha tomado el recurso 1 y espera el recurso 2, mientras que el proceso B ha tomado el recurso 2 y espera el recurso 1 — ambos están bloqueados para siempre.

En iOS y otros sistemas, los interbloqueos a menudo ocurren por un uso incorrecto de la sincronización, por ejemplo, al tomar varias bloqueos en orden diferente.

Para prevenir los interbloqueos se utilizan:

  • ordenamiento en la adquisición de recursos;
  • tiempos de espera;
  • evitar mantener recursos mientras se espera por otros;
  • uso de mecanismos de sincronización especializados.