El documento describe el problema de interbloqueo en sistemas operativos, donde dos o más procesos quedan bloqueados indefinidamente al esperar eventos que sólo pueden activar otros procesos bloqueados. Se presenta un ejemplo de dos procesos compitiendo por dos recursos únicos que necesitan, resultando en un interbloqueo. Se explican las condiciones necesarias para un interbloqueo y formas de enfrentarlo, incluyendo prevención, evitación y detección con recuperación matando procesos.
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.