Bloqueos mutuos o deadlocks
Bueno hoy hablaremos sobre los bloqueos mutuos también conocido como deadlocks o interbloqueo que es cuando tenemos demasiados procesos que compiten por recursos finitos, puede darse una situación en la que un proceso está bloqueado esperando por un recurso que nunca se liberará, porque lo posee otro proceso también bloqueado.A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los bloqueos mutuos.
En el siguiente ejemplo que vemos arriba es uno de los más comunes para entender lo que es el bloqueo mutuo. Cuatro autos en una intersección de caminos que cada uno bloquea al otro, por lo que existe un interbloqueo que no tiene por tanto una solución sencilla ya que para que cada uno se pueda mover se ha de mover el de delante suya.
Métodos para manejar bloqueos mutuos
No hacer absolutamente nada
Los bloqueos mutuos son evidentemente indeseables. Los recursos retenidos por los procesos bajo bloqueo mutuo no están disponibles para otros procesos, y los procesos en deadlock no pueden avanzar. Pero si un bloqueo mutuo se produce, en promedio, cada diez años y en cambio el sistema se cae todos los días por fallas en el hardware o en el sistema operativo, entonces el problema de los bloqueos mutuos es irrelevante.Detección y recuperación
Una posibilidad es monitorear cada cierto tiempo el estado del grafo de recursos.Si se detecta un ciclo, se matan todos los procesos del ciclo , o se van matando procesos del ciclo hasta que no queden ciclos. Es un método drástico, pero mejor que nada.