Se dice que dos o más procesos están bloqueados, cuando están suspendidos en
espera de un evento que sólo puede ser activado por uno de los procesos
bloqueados, y por lo tanto dicho evento nunca sucederá. Para este problema no
existe solución Un ejemplo fácil para entender este contexto es imaginar que
existen dos procesos que compiten por dos recursos que necesitan para
funcionar, que solo pueden ser usados por un proceso a la vez. El primer
proceso obtiene el permiso de utilizar uno de los recursos. El segundo proceso
toma el otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer
proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez
intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos
procesos esperan la liberación del recurso que utiliza el otro proceso.
CONDICIONES NECESARIAS PARA UN INTERBLOQUEO
Exclusión mutua
Los recursos no se pueden compartir.
Retención y espera
Un proceso que retiene uno o varios recursos se
encuentra esperando por recursos asignados a
otros procesos.
Espera circular
Existe una serie de procesos en espera {Po,P1,...Pn} en la que todo Pi
espera por un recurso retenido por Pi+1; y Pn espera por un recurso
retenido por Po.
No expropiación
Un recurso sólo puede ser liberado por el
proceso que lo retiene, voluntariamente.
FORMAS DE ENFRENTAR LOS INTERBLOQUEOS
Indiferencia
Problema del usuario y del programador, lograr que
no se dé el interbloqueo.
Prevención
Consisten en condicionar el sistema con una serie de restricciones
a los programadores, para que no se den al menos una de las
condiciones del interbloqueo, por lo que éste nunca sucederá.
Evitación o predicción
Esta estrategia consiste en dejar que las condiciones para el
interbloqueo se puedan dar, pero en el momento de asignar
recursos, y se detecte que puede ocurrir un interbloqueo,
deniega la asignación del recurso que puede desencadenar el
interbloqueo.
Detección y recuperación
En esta política, el sistema deja que suceda el interbloqueo, pero se implementan
procesos encargados de revisar el estado de asignación de los procesos, para
detectar los interbloqueos. Una vez detectado, se pueden implementar políticas de
recuperación de interbloqueo, que básicamente consisten en matar procesos