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:
- Exclusión mutua — un recurso solo puede ser tomado por un proceso a la vez.
- Retención y espera — un proceso mantiene un recurso y espera por otro.
- Imposibilidad de liberar forzosamente — un recurso no puede ser tomado de un proceso hasta que este lo libere voluntariamente.
- 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.