Interbloqueo SO
Interbloqueo SO
Interbloqueo SO
Concurrencia: Interbloqueo
Detección
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.1 A
diferencia de otros problemas de concurrencia de procesos, no existe una solución general para
los interbloqueos.
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos
antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si
satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo.
De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará
en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o
inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los
recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos
mutuos:
• Algoritmo del banquero, introducido por Dijkstra.
• Algoritmo de grafo de asignación de recursos.
• Algoritmo de Seguridad.
• Algoritmo de solicitud de recursos.
Prevención
Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna de las condiciones
necesarias vistas anteriormente.
• Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso.
Esto es imposible para procesos que no pueden ser encolados (puestos en un spool), e incluso
con colas también pueden ocurrir interbloqueos.
Silvio Arzeno (ID: 1076358) – Sistemas Operativos
• La condición de posesión y espera puede ser eliminada haciendo que los procesos pidan
todos los recursos que van a necesitar antes de empezar. Este conocimiento por adelantado
muchas veces es imposible nuevamente. Otra forma es requerir a los procesos liberar todos
sus recursos antes de pedir todos los recursos que necesitan. Esto también es poco práctico
en general.
Supresión de espera circular (3ª estrategia de Havender): Si todos los recursos comunes a
varios procesos se solicitan siempre en el mismo orden no se producen interbloqueos. De esta
manera, se ordenan los recursos y se solicitan en ese orden
Predicción
El sistema operativo observa la evolución que siguen los procesos, y predice una posible
situación de interbloqueo. Si detecta una alta probabilidad de que suceda, adopta una trayectoria
de ejecución nueva para los procesos involucrados de manera que se garantice que no va a
suceder un interbloqueo.
Si tuviéramos de antemano información sobre cómo los procesos van a usar los recursos,
tal vez podríamos forzar un entrelazado de las asignaciones que nunca llevase a interbloqueo. Es
un ejemplo el algoritmo del banquero. El inconveniente de este tipo de técnicas es que son poco
realistas, ya que en sistemas reales no tenemos forma de predecir a la perfección el futuro de
accesos a recursos.
Tipos de recursos
Recursos consumibles:
Estos se caracterizan por que dejan de existir una vez que los usa.
Ejemplo: Espacios de memoria, así como archivos temporales de procesos.