Interbloqueos
-
La secuencia correcta para usar un recurso es:
- Solicitar el recurso
- Usarlo
- Liberarlo
-
Si el recurso no está disponible cuando se lo solicita, el proceso debe esperar
- Dependiendo del SO, el solicitante será bloqueado y despertado, o podría tener que hacer una espera ocupada
-
Entonces, un conjunto de procesos está en interbloqueo si cada proceso del conjunto está esperando un evento que sólo puede ser ocasionado por otro proceso del conjunto
- Este evento es la liberación de un recurso no apropiativo
Condiciones para los interbloqueos
- Exclusión mutua: Cada recurso se asigna a un sólo proceso a la vez, o está disponible
- Contención y espera: Los procesos que tienen recursos pueden solicitar nuevos recursos
- Condición no apropiativa: Todos los recursos del conjunto son no apropiativos
- Espera circular: Debe haber una cadena circular de 2 o más procesos, cada uno esperando un recurso del proceso siguiente
Modelado de interbloqueos
Simbología:
Estrategias para lidiar con un interbloqueo
Ignorar el problema (algoritmo del avestruz)
Detección
Tomar acción cuando ya haya ocurrido un interbloqueo
- Si hay un recurso de cada tipo: se arma un gráfico de recursos, y si hay ciclos existe un interbloqueo
- Si hay varios recursos de cada tipo: se usa un algoritmo basado en matrices para detectar interbloqueos entre
procesos - Evitarlos en forma dinámica (cuidando la asignación de recursos)
- Prevención (evitar estructuralmente alguna de las condiciones de interbloqueo)
Recuperación
- Por apropiación
- A veces es posible apropiar un recurso. Muchas veces requiere intervención manual, y muchos casos es inviable
- Por retroceso
- Los procesos van creando puntos de comprobación (copias de su estado actual en memoria) periódicamente en el disco
- Cuando se detecta un interbloqueo, el proceso que posee un recurso necesario se se revierte a un punto de comprobación anterior en el tiempo, antes de haber apropiado el recurso
- Eliminando procesos
Anexos
Definiciones previas
Tipos de recursos
- Apropiativo: Se lo puede quitar al proceso sin producir efectos dañinos
- No apropiativo: El proceso debe ceder el recurso voluntariamente, el SO no puede sacarselo a la fuerza