36
Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de Emely Arráiz Ene-Mar 08

Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Embed Size (px)

Citation preview

Page 1: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Deadlocks

Caracterización de deadlock

Métodos para manejar

deadlock

Prevenir, Predecir, detección

Recuperación de deadlock

Emely Arráiz

Ene-Mar 08

Page 2: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Conceptos

Bloqueo permanente de un grupo de procesos

que compiten por los recursos del sistema o bien

se comunican unos con otros.

Un sistema consiste en un número finito de

recursos que será distribuidos entre los procesos

dentro del sistema.

Ejemplos Recursos: CPU, memoria, disco, etc.

Page 3: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo

Un programa A quiere copiar desde el disco 1 al

disco 2 y toma el control sobre disco 1.

Un programa B quiere copiar desde el disco 2 al

disco 1 y toma el control sobre disco 2.

El programa A debe esperar hasta que el

programa B libere el disco 2. El programa B debe

esperar hasta que el programa A libere disco 1.

Ambos programas deberán espera para siempre.

Page 4: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Modelo del sistema

Tipos de recursos: R1,R2,….,Rn

– ciclos de CPU, espacio de memoria, E/S

Cada Recurso Ri posee W

i instancias.

Cada proceso usa los recursos

– solicita o hace un requerimiento

– los usa

– los libera (al final)

Page 5: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Modelo del Sistema El uso de los recursos solo puede ser hecho por

medio de llamadas al sistema (System Calls)

Ejemplo

Open/close para archivos

malloc/free para memoria

request/release para dispositivos (waits y signal)

Existe deadlock cuando cada proceso en el

conjunto está esperando por un evento que sólo

puede ser causado por otro proceso en el

conjunto.

Page 6: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Caracterización

Condiciones necesarias para que deadlock ocurre:

– Exclusión Mutua: solo un proceso a la vez puede

usar el recurso.

– Hold and wait: un proceso tiene al menos un recurso y

espera que le asignen otros.

– No Preemption: recursos solo puede ser liberado

voluntariamente, por el proceso que lo tiene.

– Espera circular: dos o mas procesos esperan por

recursos tenidos por otros procesos. p1 espera por p2,

p2 espera por p3, y pn espera por p1.

Page 7: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Caracterización

DEADLOCK <=====> las 4 condiciones ocurren

Page 8: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Grafo de recursos

G = (V,E) dirigido V dividido en dos tipos

– P : conjunto de procesos en el sistema

– R : conjunto de recursos en el sistema.

Lados de requerimientos: arcos dirigidos Pi-->R

j

Lados de asignación: arcos dirigidos Rj-->P

i

Page 9: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Grafo de Recursos

P1 P2 P3

R1 R3

R2

R4

Page 10: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo

P1 P2

P3

R2

P4

R1

Page 11: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Grafo

Si el grafo NO contiene ciclos ==> NO deadlock

Si el grafo contiene ciclos ==>

– Deadlock si hay una instancia por recurso

– Posibilidad de deadlock si muchas instancias por

tipo de recursos. Un ciclo es condición

necesaria pero no suficiente.

Page 12: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo

P1 P2 P3

R1 R3

R2

R4

D

E

A

D

L

O

C

K

Page 13: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Métodos para Manejar Deadlock

Asegurar que el sistema nunca entra en estado

de deadlock.

– Prevención

– Predicción

Permitir que el sistema entre al estado de

deadlock y luego recuperarlo.

Ignorar el problema y pretender que no va a

ocurrir. (Sol. De muchos sistemas como UNIX. El

sistema se va degradando y tiene que intervenir

el administrador. Es un enfoque aceptable.

Page 14: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Prevención

Método: trata de garantizar que alguna de las 4

condiciones no ocurra.

– M.E. No es posible prevenir por negación de la

exclusión mutua, ya que existe recursos

intrínsicamente no compartibles. Ej printer

– H.and W. Se debe garantizar que siempre que un

proceso solicite un recurso, el no tiene otro. Protocolo 1: se le asignan a los procesos TODOS los

recursos antes de comenzar.

Protocolo 2: Un proceso solo puede solicitar recursos cuando

no tiene ninguno. Baja utiliz. de recursos, starvation

Page 15: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Prevención

No preemption: Si un proceso solicita recursos que

NO pueden ser asignados inmediatamente, entonces

todos los recursos que el tiene asignado son

liberados. Los recursos quitados son sumados a la

lista de recursos por la cual el proceso espera. El

proceso continua cuando le sean devueltos los

recursos quitados, mas los nuevos.

Circular Wait: Se impone un orden total de todos los

tipos de recursos y que los procesos hagan sus

requerimientos en orden creciente de enumeración

Page 16: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Predicción

Se le da a los procesos los recursos siempre que

sea posible. Se requiere toda la información acerca

de los request y release. Con esta información se

decide si el proceso debe esperar o no.

Información requerida

– Recursos disponibles

– Recursos asignados a cada proceso

– Liberaciones y futuras solicitudes de recursos.

Page 17: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Predicción

Un algoritmo que evita deadlock examina

dinámicamente el estado de los recursos

asignados para asegurar que nunca puede haber

un condición de espera circular.

El estado de asignación de recursos es definido

por

– el número de recursos disponibles y asignados

– la demanda máxima de los procesos.

Page 18: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Estado seguro

Cuando un proceso solicita recursos, el sistema

debe decidir si la inmediata asignación deja al

sistema en estado seguro.

Un sistema está en estado seguro, si existe una

secuencia segura de todos los procesos.

La secuencia <P1,P2,….Pn> es segura si para

cada Pi, los recursos que P

i aun necesita pueden

ser satisfechos por los recursos disponibles +

los que libere Pj para todo j < I.

Page 19: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Estado seguro

Si los recursos que Pi necesita no est'an

disponibles inmediatamente, entonces Pi puede

esperar hasta que Pj haya finalizado.

Cuando Pj finaliza, P

i puede obtener los recursos,

se ejecuta y devuelve los recursos asignados.

Cuando Pi termina, P

i+1 puede obtener los

recursos que el necesita.

Page 20: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Hechos básicos

Si un sistema está en estado seguro ==> NO

deadlock

Si un sistema está en estado inseguro ==> existe

posibilidad de deadlock.

Predicción ==> asegurar que el sistema nunca

entre en estado inseguro.

Page 21: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Abolir Deadlock

System grants resources only if it is safebasic assumption: maximal request per process is

knownExample: 2 processes and 2 devices (Printer & Plotter)

Page 22: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Estado Seguro e Inseguro

Safe stated:Not deadlockedThere is a way to satisfy all possible future

requests

Page 23: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Algoritmo del Banquero

Cada proceso debe a priori declara el número

máximo de recursos a usar.

Cuando un proceso solicita recurso, el puede

tener que esperar.

Cuando a un proceso se le asignan todos los

recursos, el debe devolverlos en una cantidad

finita de tiempo .

Page 24: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Algoritmo del Banquero

Sea n número de procesos; m número de tipos de recursos

Available[m]. Si Available[j]=k, hay k instancia disponible del

tipo de recurso Rj

Max[nxm]. Si Max[i,j]=k, entonces Pi a lo mas debe requerir k

instancias del recurso Rj

Allocation[nxm]. Si Allocation[i,j] =k, entonces Pi tiene

asignado k instancia del recurso Rj.

Need[nxm]. Si Need[i,j]=k, entonces Pi un necesita k

instancia de Rj para completar su tarea.

– Need[i,j]= Max[i,j] - Allocation[i,j]

Page 25: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Algoritmo Seguro

1. Work[m]:= Available[m] ; Finish[i] :=false para i=1,….n

Find an i such that both:

Finish[i]=false

Needi <= Work

if no exists i, go to step 4

Work := Work + Allocationi

Finisk[i] := true

go to step 2

1. If Finish[i] = true for all i,then the system is in a safe state.

Page 26: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Algoritmo Banker’s If Requesti <= Needi go to step 2. Caso contrario error

el proceso excede su máximo de demanda. If Requesti <= Available, go to step 3. Caso contrario,

Pi debe espera. Los recursos no están disponibles. Intenta la asignacion

– Available := Available - Requesti

– Allocationi := Allocationi + Requesti

– Needi:= Needi - Requesti

if safe => los recursos son asignados a Pi

If unsafe => Pi debe esperar , se recupera el estado anterior

Page 27: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo Banquero

5 procesos, 3 tipos de recursos tipo A 10 instancias tipo B 5 instancias y tipo C 7 instancias.

Foto en el tiempo T0. Total-Recur: A=10, B=5, C=7

Allocation Max Available

A B C A B C A B C

P0 0 1 0 7 5 3 3 3 2

P1 2 0 0 3 2 2

P2 3 0 2 9 0 2

P3 2 1 1 2 2 2

P4 0 0 2 4 3 3

7 2 5

Page 28: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo Banker’s El contenido de la Matriz Need es

Need

A B C

P0 7 4 3

P1 1 2 2

P2 6 0 0

P3 0 1 1

P4 4 3 1

El sistema esta en estado seguro puesto que la secuencia P1,P3,P4,P2,P0 es una secuencia segura.

Page 29: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo Banker’s

Supongamos que P1 requiere (1,0,2) . Cheque que Request <= Available ( (1,0,2) <= (3,3,2)) ==> true

Allocation Need Available

A B C A B C A B C

P0 0 1 0 7 4 3 2 3 0

P1 3 0 2 0 2 0

P2 3 0 2 6 0 0

P3 2 1 1 0 1 1

P4 0 0 2 4 3 1

Ejecutando el algoritmo se encuentra que P1,P3,P4,P0,P2 es una Secuencia segura

Page 30: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Detección de deadlock

Permite que el sistema entre en deadlock Algoritmo de detección. Esquema de recuperación

Page 31: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Algoritmo de Detección

Work y Finish vectores de long. m y n respectivamente.

Work:= Available ;

1. For i=1,2,….n if Allocationi <> 0 then

Finish[i] :=false else Finish[i] :=true

2. Find an index i such that both:

(Finish[i] = false ) and ( Requesti <= Work)

if no such i exists, go to step 4

3. Work := Work + Allocationi

• Finisk[i] := true• go to step 2

4. If Finish[i] = false for some i,then the system is in a deadlock.

Page 32: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo deteccion 5 procesos, 3 tipos de recursos tipo A 7 instancias tipo B 2

instancias y tipo C 6 instancias.

Foto en el tiempo T0

Allocation Request Available

A B C A B C A B C

P0 0 1 0 0 0 0 0 0 0

P1 2 0 0 2 0 2

P2 3 0 3 0 0 0

P3 2 1 1 1 0 0

P4 0 0 2 0 0 2

La secuencia P0,P2,P3,P1,P4 resulta con Finish[i]=true para todo i

Page 33: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Ejemplo Deteccion

P2 requiere una instancia adicional del tipo C

Request Available

A B C 0 0 0

P0 0 0 0

P1 2 0 2

P2 0 0 1

P3 1 0 0

P4 0 0 2

P0 puede liberar sus recursos, pero insuficientes para satisfacer los otros procesos.

Deadlock existe, constituido por los procesos P1,P2,P3,P4

Page 34: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Recuperación del Deadlock

Terminación de Procesos

– Abortar todos los procesos que forman parte del deadlock. => costo elevado

– Abortar un proceso a la vez hasta que el ciclo del deadlock sea eliminado. => overhead (se debe llamar muchas veces el algoritmo)

– El orden de elección del proceso a abortar– Prioridad de procesos

– Que cantidad ha calculado el proceso y cuanto le falta para completar

– recursos usados por el proceso

– recursos que necesita para terminar

– Procesos interactivo o batch

– Numero de procesos que necesitan ser terminados

Page 35: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Recuperación del Deadlock

Preemption

– Le sacamos algunos recursos a los procesos que participan en el deadlock y se lo damos a otro a ver si le va bien.

– Victima de costo mínimo

– Rollback. Llevar al proceso a estado seguro, el proceso continua desde el estado seguro

– starvation, algunos procesos son siempre elegidos como victimas.

Page 36: Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08

Enfoque Combinado

Combina los tres enfoque

– prevención

– predicción

– detección

permite el uso del enfoque optimo para cada clase de recursos en el sistema

Partir los recursos en clases ordenadas jerarquicamente.

Usar la técnica mas apropiada para manejar deadlock dentro de cada clase.