You are on page 1of 41

Sistemas Operativos Ciclo Lectivo 2007

Deadlock (Interbloqueo)
Profesores Exp. Mario IRIBAS Mag. Ing. Liliana CUENCA PLETSCH Auxiliares Ing. Alberto RISTOFF Recopilacin Bibliogrfica y elaboracin del presente material de estudio a cargo de Liliana CUENCA PLETSCH

Ing. Jorge ROA

Bibliografa Consultada
SILBERSCHATZ A. y. otros: Sistemas Operativos Conceptos Fundamentales. Sptima Edicin, Espaa, Revert S.A. TANENBAUM Andrew S.: Sistemas Operativos Diseo e Implementacin. Segunda Edicin, Mxico, Prentice Hall Hispanoamericana, 1.998.

Objetivos especficos
Analizar el problema del Bloqueo o Deadlock. Analizar las diferentes soluciones propuestas para la solucin de este problema. Ejemplificar las diferentes soluciones mediante la resolucin de trabajos prcticos Aplicar los conocimientos adquiridos a situaciones hipotticas.

Deadlock: definicin
Un conjunto de procesos est en estado de deadlock (bloqueo o interbloqueo) cuando

cada uno de los procesos est esperando


por un evento que puede ser causado slo por otro proceso del conjunto
Asignado a:
P1
r1 r2

Solicita:

Asignado a:
P2

Solicita:

Deadlock: ejemplo
Asignado a:
P1
r1

Solicita: Asignado a: Solicita:


r2

Asignado a:
P2

No hay Deadlock porque hay dos instancias del recurso r1: Una est asignada a P1. La otra puede asignarse a P2. Cuando P2 termine devolver el recurso r2 el cual podr asignarse a P1

Deadlock: consideraciones
El sistema consiste de un nmero finito de recursos para un grupo de procesos que compiten por estos. Un proceso que se encuentra en estado de Deadlock y que tiene recursos asignados que son demandados por otros

procesos afecta al desempeo y funcionamiento del


sistema Este problema no tiene una solucin eficiente Es de naturaleza lgica.

Deadlock: consideraciones

Para usar un recurso cada proceso debe proceder del siguiente modo: Solicitar el recurso

<Usar el recurso>
Liberar el recurso

Llamadas al sistema

Posibilidad de Deadlock

Deadlock

Analoga de una situacin de Deadlock en la vida real

Grafos de Asignacin de Recursos


Se utilizan para modelar el estado del sistema respecto de la asignacin de recursos. Los elementos que caracterizan a estos grafos son: Un conjunto de vrtices (V) formado por los procesos (P) y los recursos (R) del sistema. P = {P1, P2, ..., Pn} R = {r1, r2, ..., rm} Procesos Recursos

Un conjunto de arcos (E) que representan asignacin o solicitud de recursos. Se lee rj asignado a Pi E = {(r1;P1), (r2;P2), ..., (rm;Pn), (P1;r2), (P2;r1), } Se lee Pi solicita rj

Grafos de Asignacin de Recursos


P = {P1, P2, P3} Procesos

R = {r1, r2}

Recursos

Hay 1 instancia por cada tipo de recurso.

Arcos = {(r1;P1), (r2;P3), (P1;r2), (P3;r1), (P2;r1) }

P1
r1 r2

P3

P2

Grafos de Asignacin de Recursos


P = {P1, P2, P3} R = {r1, r2, r3,r4}
Instancias de R: r1=1 r2=2 r3=1 r4=3 E = {(r1;P2),(r3;P3), (r2;P1), (r2,P2), (P1;r1), (P2, r3)}

r1

r3

P1

P2

P3

r4

No existe Deadlok porque existe una secuencia de asignacin de recursos para satisfacer todos los requerimientos. r2 cuando P3 termine devolver r3, el cual podr asignarse a P2, que ahora podr terminar. Cuando P2 termine devolver r1 que podr asignarse a P1 para que tambien termine

Condiciones de Deadlock en Grafos


Si el grafo no tiene un ciclo, entonces no existe deadlock. Si existe un ciclo, entonces es posible que exista deadlock (condicin necesaria)

Si existe un ciclo, y todos los recursos


involucrados tienen solo una instancia, entonces existe deadlock (condicin necesaria y suficiente)

Condiciones de Deadlock en Grafos


P2

r2

P3

P1

r4

P4

Hay un ciclo pero no hay Deadlock

Condiciones de Deadlock en Grafos


r1 r3

P1

P2

P3

r2

r4

P1 espera r1 que no ser liberado por P2 hasta que ste obtenga r3. r3 no ser liberado por P3 hasta que ste obtenga 1 instancia de r2. P1 y P2 no liberarn sus instancias de r2 hasta no obtener los recursos que solicitan.

Existe Deadlock

Otro Ejemplo de Deadlock


Hay espacio disponible para la asignacin de 200K bytes, y ocurre la siguiente secuencia de eventos: P1 ... Request 80K bytes; ... Request 60K bytes; ... Request 70K bytes; ... Request 80K bytes; P2

Asignadas la 1era. solicitud de cada proceso quedan 50 Kb libres. Para poder asignar la 2da. Solicitud a un proceso el otro debe liberar la memoria asignada

Condiciones para que haya Deadlock (Coffman)


Exclusin Mutua Retener y esperar No Expropiacin Espera circular

Condiciones para que haya Deadlock:

r1

Proceso P1

Proceso P2

r2

Se cumple la espera circular y la retencin y espera, Si cada recurso puede ser utilizado por un solo proceso a la vez y el SO no puede apropiarse de recursos asignados a un proceso

Estrategias para tratar deadlocks Ignorarlo (Algoritmo del avestruz)


Se utiliza cuando la frecuencia de ocurrencia es relativamente baja El riesgo de una situacin de Deadlock implica volver a iniciar el sistema, y las prdidas producidas podran ser muy graves. Unix, Linux, Windows NT adoptan esta estrategia.

Estrategias para tratar deadlocks Prevenir


Esta estrategia resuelve el problema limitando el uso de los recursos e imponiendo restricciones a los procesos. Siendo las cuatro condiciones necesarias para que ocurra un Deadlock basta con asegurar que una de ellas no

ocurrir.
Las restricciones y limitaciones se imponen con el fin de prevenir que una de las condiciones no ocurra.

Estrategias para tratar deadlocks Prevenir


Exclusin Mutua Difcil de evitar cuando se trata de recursos intrnsecamente no compartibles. Ej: registro de una BD para escribir.

Retencin y espera
Se debe impedir a un proceso que tiene recursos asignados solicitar otro. Para lograrlo, o bien los procesos solicitan todos los recursos antes de comenzar la ejecucin. Si no es posible asignar alguno de los recursos el proceso se bloquea. O bien, antes de solicitar nuevos recursos el proceso debe liberar los que ya tiene asignados.

Estrategias para tratar deadlocks Prevenir


No Expropiacin
Si el recurso solicitado por el proceso no est disponible ste

deber devolver todos los que tiene asignados y solicitarlos ms


tarde. Esta solucin es posible para aquellos casos en que los estados del proceso pueden ser fcilmente grabados y restaurados. O bien, si el recurso solicitado est asignado a otro proceso el

Sistema Operativo puede obligar a dicho proceso a liberarlo.


Esta solucin puede ocasionar inanicin (starvation) si el Sistema Operativo expropia siempre los recursos de un mismo proceso.

Estrategias para tratar deadlocks Prevenir


Espera Circular
Consiste en imponer un orden lineal de ejecucin que evite las esperas circulares.

Dada una lista de recursos r1, r2,......rn, un proceso que solicita


rh, slo puede pedir aquellos recursos rk, con k > h. Esto evita que se forme un crculo ya que el que posee el ultimo

recurso, no podr solicitar el primero


P2 no puede solicitar r1

r1

P1

r2

P2

porque 1 < 2

Estrategias para tratar deadlocks Evitar (Avoid)


Este mtodo consiste en no asignar recursos si hay posibilidad de que ocurra Deadlock.

Es necesario conocer el estado del sistema. El estado del sistema es la asignacin actual de recursos a procesos. Para ello es necesario definir el nmero de recursos disponibles, nmero de recursos asignados y el mximo pedido por cada proceso.

Estrategias para tratar deadlocks Evitar (Avoid)

La cantidad mxima de solicitudes de recursos debe ser

determinada por anticipado.


El proceso bajo consideracin debe ser independiente; no debe haber necesidad de sincronizacin. Debe haber un nmero fijo de recursos a asignar.

Estrategias para tratar deadlocks Evitar (Avoid)


Algoritmo del banquero
El estado del sistema es la actual asignacin de recursos a procesos

Un estado es seguro cuando existe por lo menos una


secuencia de asignacin de recursos que no resulta en deadlock Un estado es inseguro cuando no existe esa secuencia.

Estrategias para tratar deadlocks Evitar (Avoid)


Algoritmo del banquero
Para implementar este algoritmo se dispone de las

siguientes estructuras de datos:


Vector de recursos existentes vector de recursos disponibles

matriz de solicitudes
matriz de asignados Matriz de necesidades
|Disponible| = |Existentes| - |Sumatoria de Asignadosj|

Estrategias para tratar deadlocks Evitar (Avoid)


Algoritmo del banquero
Se asocia a un banco que debe garantizar la disponibilidad de dinero suficiente para satisfacer a sus clientes si sucediera que em algn momento todos solicitan retirar sus mximos. Cuando un proceso entra al sistema debe declarar sus

necesidades mximas para cada tipo de recurso.


No puede exceder del nmero total de recursos (Existencia).

Estrategias para tratar deadlocks Evitar (Avoid)


Algoritmo del banquero
Cuando un proceso solicita un recurso el sistema determina si tal asignacin deja al sistema en un estado seguro. Si el estado es seguro el recurso es asignado. Si el estado es inseguro, el proceso debe esperar

hasta que otro proceso libere suficientes recursos y


se garantice que la asignacin deja al sistema en estado seguro.

Estrategias para tratar deadlocks Evitar (Avoid)


Ejemplo 1

P1 P2 P3 P4

r1 3 10 3 4

r2 r3 2 2 1 3 1 4 2 2

P1 P2 P3 P4

r1 r2 r3 1 0 0 6 1 2 2 1 1 0 0 2
Matriz de Asignados

r1 r2 r3 9 3 6
Vector de Existencia

r1 r2 r3 0 1 1
Vector Disponibles

Matriz de Solicitudes

Un proceso no puede solicitar ms instancias de un recurso que las existentes.

Ejemplo 2

Estrategias para tratar deadlocks Evitar (Avoid) r1 r2 r3 1 0 0 6 1 2 2 1 1 0 0 2


Matriz de Asignados

P1 P2 P3 P4

r1 r2 r3 3 2 2 6 1 3 3 1 4 4 2 2
Matriz de Solicitudes

P1 P2 P3 P4

P1 P2 P3 P4

r1 r2 r3 2 2 2 0 0 1 1 0 3 4 2 0

r1 r2 r3 9 3 6
Vector de Existencia

r1 r2 r3 0 1 1
Vector Disponibles Existenciai - Asignadosi

Matriz de Necesidades Solictud-Asignado

Ejemplo 2

Estrategias para tratar deadlocks Evitar (Avoid)


SI NO

Existe en Necesidades una fila menor que Disponibles


Asignar al proceso los recursos que faltan

Estado inseguro

Cuando el proceso termina devuelve los recursos que tena asignados.


SI

Se incrementa Disponibles

NO

El proceso deber esperar para recibir el recurso

Hay procesos que esperan recursos

Estado seguro

Ejemplo 2

Estrategias para tratar deadlocks Evitar (Avoid)


SI NO

Existe en Necesidades una fila menor que Disponibles


Asignar al proceso los recursos que faltan

Estado inseguro

Cuando el proceso termina devuelve los recursos que tena asignados.


SI

Se incrementa Disponibles

NO

El proceso deber esperar para recibir el recurso

Hay procesos que esperan recursos

Estado seguro

Ejemplo 3

Estrategias para tratar deadlocks Evitar (Avoid) r1 r2 r3 1 0 0 5 1 1 2 1 1 0 0 2


Matriz de Asignados

P1 P2 P3 P4

r1 r2 r3 3 2 2 6 1 3 3 1 4 4 2 2
Matriz de Solicitudes

P1 P2 P3 P4

P1 P2 P3 P4

r1 r2 r3 2 2 2 1 0 2 1 0 3 4 2 0

r1 r2 r3 9 3 6
Vector de Existencia

r1 r2 r3 1 1 2

Matriz de Necesidades Solicitud-Asignado

Vector Disponibles Existenciai - Asignadosi

Estrategias para tratar deadlocks Evitar (Avoid)


Ejemplo 3

Cmo es el estado del sistema? Seguro o Inseguro?

Supongamos que P1 solicita una instancia de r1 y una de r3.

Es posible realizar la asignacin? Fundamente.

Ejemplo 4

Estrategias para tratar deadlocks Evitar (Avoid) r1 r2 r3 0 0 0 2 0 2 0 0 0 1 0 0 0 0 2 r1 r2 r3 0 0 0


Vector Disponibles

P1 P2 P3 P4 P5

r1 r2 r3 0 1 0 2 0 0 3 0 3 2 1 1 0 0 2

P1 P2 P3 P4 P5

Matriz de Asignados

Matriz de Necesidades

1. Obtener la matriz de Solicitudes y el vector de Existencia 2. Aplicar el algoritmo del banquero y determinar si el sistema est en estado seguro.

Ejemplo 5

Estrategias para tratar deadlocks Evitar (Avoid) r1 r2 r3 0 0 0 2 0 2 0 0 1 1 0 0 0 0 2 r1 r2 r3 0 0 0


Vector Disponibles

P1 P2 P3 P4 P5

r1 r2 r3 0 1 0 2 0 0 3 0 3 2 1 1 0 0 2

P1 P2 P3 P4 P5

Matriz de Asignados

Matriz de Necesidades

1. Obtener la matriz de Solicitudes y el vector de Existencia 2. Aplicar el algoritmo del banquero y determinar si el sistema est en estado seguro.

Estrategias para tratar deadlocks Evitar (Avoid)


Un estado inseguro no conducir, necesariamente, al sistema a un estado de deadlock. Evitar el deadlock puede significar que los procesos esperen an cuando el recurso solicitado este libre. El algoritmo del banquero requiere que: o Exista un nmero fijo de recursos o El nmero de procesos sea conocido. o Las solicitudes sean concedidas en tiempo finito o Los procesos deben definir a priori sus necesidades mximas.

Estrategias para tratar deadlocks Detectar


Los recursos se asignan a los procesos a medida que los

solicitan.
Cada cierto tiempo se ejecuta un algoritmo para verificar la existencia o no de un estado de deadlock. Se permite la existencia de las tres primeras condiciones necesarias y se detecta la existencia de una espera circular. En caso de detectar deadlock, iniciar un procedimiento de recuperacin.

Estrategias para tratar deadlocks Detectar


Una vez detectado el deadlock el S.O puede:

Terminar todos los procesos.


Hacer Back up de cada proceso bloqueado a un punto de verificacin (check point) definido previamente y reiniciar todos los procesos mediante rollback al punto anterior. Terminar procesos sucesivamente hasta que no haya deadlock. Expropiar recursos sucesivamente hasta que no haya deadlock.

Estrategias para tratar deadlocks Detectar


Criterios de Seleccin de Procesos vctimas en Deadlock

Menor cantidad de tiempo de procesador consumido hasta el momento. Menor cantidad de lneas de salida producidas hasta el momento.

Mayor tiempo estimado restante.


Menor cantidad de recursos asignados hasta el momento. Menor prioridad.

Estrategias para tratar deadlocks Resumen Ignorarlo

Estrategias
para tratar deadlocks

Prevenir

Evitar

Detectar

You might also like