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.
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.
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)
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.
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.
Caracterización
DEADLOCK <=====> las 4 condiciones ocurren
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
Grafo de Recursos
P1 P2 P3
R1 R3
R2
R4
Ejemplo
P1 P2
P3
R2
P4
R1
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.
Ejemplo
P1 P2 P3
R1 R3
R2
R4
D
E
A
D
L
O
C
K
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.
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
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
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.
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.
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.
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.
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.
Abolir Deadlock
System grants resources only if it is safebasic assumption: maximal request per process is
knownExample: 2 processes and 2 devices (Printer & Plotter)
Estado Seguro e Inseguro
Safe stated:Not deadlockedThere is a way to satisfy all possible future
requests
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 .
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]
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.
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
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
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.
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
Detección de deadlock
Permite que el sistema entre en deadlock Algoritmo de detección. Esquema de recuperación
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.
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
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
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
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.
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.
Top Related