Definición de interbloqueo
También conocido como bloqueo mutuo o deadlock.
Es una espera circular permanente de dos o más procesos. Existen una serie de condiciones para que se produzca y una serie de estrategias para resolverlos.
- Ejemplo simple:
Se aprecian dos procesos (P1 y P2), cada uno con un recurso diferente asociado (R1 y R2). Llega un punto en el que el proceso P1 ha adquirido el recurso R1 y el proceso P2 ha adquirido el recurso R2 y cada proceso necesita el otro recurso. Este es el punto de interbloqueo.
Un conjunto de P procesos está interbloqueado si y sólo si cada proceso Pi, que pertenezca a P, está bloqueado en espera de un evento que sólo puede ser provocado por otro proceso Pi, que pertenece a P. Si uno de los procesos está esperando a algo que no depende de los demás es una espera en cadena. La utilidad de los grafos de relación proceso/recurso es que habrá interbloqueo si y sólo si en el grafo se produce un ciclo.
Según Dijkstra, una configuración de procesos y recursos es estado seguro si a partir de ella podemos seguir ejecutando código, es decir, no se producen interbloqueos.