interbloqueo (sistemas operativos)
En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal,
deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de
ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican
entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución
general para los interbloqueos.
Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o
más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y
flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que
tomó.
En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar,
que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de
utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock
del 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
otro
# INTERBLOQUEO- SISTEMAS OPERATIVOS Edgar Andrey López Clavijo
# 2. Interbloqueo 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.
# 3. Condiciones necesarias para un interbloqueo • Exclusión mutua: Si dos procesos solicitan un
recurso exclusivo, uno de los dos quedará suspendido hasta que el favorecido libere el recurso. •
Contención o retención y espera: Si un proceso necesita más de un recurso para realizar su
trabajo, conservará en su poder los recursos exclusivos ya asignados, mientras espera por otro
recurso adicional.
# 4. Condiciones necesarias para un interbloqueo • Inapropiatividad: Los recursos asignados a un
proceso, sólo pueden ser liberados por el proceso mismo y no pueden ser desasignados por el
sistema, cuando otro proceso los necesite. • Espera circular: Dependencia: Si un proceso P1 está
suspendido en espera de un recurso exclusivo que está asignado a otro proceso P2, entonces
decimos que P1 depende de P2 (P1 <= P2).
# 5. 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á.
# 6. Formas de enfrentar los interbloqueos • 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 interbloqueo. Una vez detectado, se pueden
implementar políticas de recuperación de interbloqueo, que básicamente consisten en matar
procesos.