Deadlocks (interbloqueos)
Un deadlock o interbloqueo ocurre cuando dos o más procesos quedan bloqueados indefinidamente porque cada uno espera un recurso que está siendo utilizado por otro. 👉 Es como un atasco de tráfico en el que nadie puede avanzar porque todos esperan que el otro se mueva primero.
1. Condiciones necesarias para que ocurra un deadlock #
Según Coffman (1971), deben cumplirse 4 condiciones simultáneamente:
-
Exclusión mutua
- Los recursos no pueden compartirse: solo un proceso puede usarlos a la vez.
-
Retención y espera
- Un proceso retiene un recurso mientras espera otro.
-
No expropiación
- Los recursos no pueden quitarse por la fuerza a un proceso; deben liberarse voluntariamente.
-
Espera circular
- Existe una cadena de procesos donde cada uno espera un recurso retenido por el siguiente → un círculo de espera.
👉 Si las 4 se cumplen, puede ocurrir un deadlock.
2. Ejemplo clásico #
- Proceso A tiene el Recurso 1 y necesita el Recurso 2.
- Proceso B tiene el Recurso 2 y necesita el Recurso 1.
- Ninguno puede continuar → bloqueo eterno.
3. Estrategias frente a deadlocks #
-
Prevención (evitar que se cumplan las 4 condiciones)
- Ejemplo: no permitir espera circular → imponer un orden en la petición de recursos.
-
Evitación (el SO analiza y decide si otorgar recursos)
- Ejemplo: algoritmo del banquero (Banker’s Algorithm) → solo concede recursos si garantiza que el sistema seguirá en estado seguro.
-
Detección y recuperación
- El SO permite que ocurran y los detecta después.
- Solución: abortar procesos implicados o quitarles recursos.
-
Ignorar el problema
- Algunos SO (ej. Windows, Linux en muchos casos) ignoran deadlocks porque son raros y difíciles de prever.
4. Ejemplo práctico #
-
En una impresora de red:
- El proceso A tiene acceso al archivo pero espera la impresora.
- El proceso B tiene acceso a la impresora pero espera el archivo.
- Ninguno avanza → el administrador debe liberar manualmente los recursos.
Resumen del tema
Conceptos clave #
- Definición de Interbloqueo (Deadlock): estado permanente en el que dos o más procesos compiten por recursos y quedan bloqueados esperando indefinidamente recursos retenidos por otros miembros del conjunto.
- 4 Condiciones Necesarias de Coffman (1971):
- Exclusión Mutua: los recursos no pueden ser compartidos simultáneamente.
- Retención y Espera (Hold and Wait): procesos retienen recursos mientras solicitan otros adicionales.
- No Expropiación (No Preemption): los recursos solo se liberan voluntariamente por el proceso poseedor.
- Espera Circular: cadena cerrada de procesos donde cada uno espera un recurso que posee el siguiente.
- Estrategias de Gestión:
- Prevención: diseñar protocolos que invaliden al menos una de las 4 condiciones (p. ej., orden jerárquico de adquisición).
- Evitación: comprobar si la asignación deja al sistema en estado seguro mediante el Algoritmo del Banquero (Dijkstra).
- Detección y Recuperación: monitorización mediante Grafos de Asignación de Recursos (RAG) y aborto de procesos / expropiación.
- Algoritmo del Avestruz: ignorar el problema cuando su coste de gestión supera la probabilidad de ocurrencia.
Qué debes recordar #
Un deadlock requiere las 4 condiciones de Coffman simultáneamente; se gestiona mediante prevención (rompiendo una condición), evitación (algoritmo del banquero) o detección con grafos RAG.