Interbloqueo (Deadlock)

A cada proceso se le asignan varios recursos para su ejecución.  En sistemas de multiprogramación, uno de los principales objetivos del sistema operativo es el compartimiento de los recursos.  Cuando se comparten los recursos entre una población de usuarios, cada uno de los cuales mantiene un control exclusivo sobre ciertos recursos asignados a él, es posible que otros usuarios no terminen sus procesos (bloqueo entre usuarios).

El bloqueo mutuo puede aparecer de muchas formas:

-         Si a un proceso se le asigna la tarea de esperar a que ocurra un evento y el sistema no incluye providencias para señalar la ocurrencia de dicho evento, habrá un bloqueo mutuo con un solo proceso.  Es muy difícil detectar bloqueos mutuos de esta naturaleza.

-         La mayor parte de los bloqueos mutuos en sistemas reales implican una competencia entre varios procesos por varios recursos.

Bloqueo mutuo = Deadlock = Abrazo mortal

El bloqueo mutuo o abrazo mortal (deadlock) es el problema más serio que se puede presentar en un ambiente de multiprogramación.   Es la actividad en que dos o más procesos esperan un recurso (CPU, memoria, entrada/salida) que nunca les va a ser otorgado.

                                 Bloqueo mutuo

 

Como se ve, aquí el sistema está bloqueado: Proceso 1 tiene a Recurso 1 y necesita a Recurso 2 para continuar. Y Proceso 2 tiene asignado a Recurso 2, y necesita a Recurso 1 para continuar.  Cada proceso espera que el otro libere un recurso que no liberará hasta que el otro libere su recurso, lo cual no sucederá si el primero no libera su recurso. Aquí se presenta una espera circular.

 

                       Bloqueo

Otro ejemplo, dos procesos adueñados de CPU. Proceso A se ejecuta y llama a Proceso B, Proceso B se ejecuta y llama a Proceso A,..., si llega otro proceso, no lo van a dejar entrar a CPU a ejecutarse.

 

Arriba