Deadlock
UTN - Sistemas Operativos
RECURSOS DEL SISTEMA
UTN - Sistemas Operativos
RECURSOS DEL SISTEMA
UTN - Sistemas Operativos
R1
R2
P1
P2
Solicita
Asignado
Solicita
Asignado
Solicita
Solicita
P2 SUFRE DE STARVATION
P1 y P2 SE ENCUENTRAN EN DEADLOCK
Situación 1: P2 necesita R1 y R2 para ejecutar. P1 pide únicamente R2 y no lo libera.
Situación 2: P2 y P2 necesitan tanto R1 y R2 para ejecutar.
DEFINICIÓN
UTN - Sistemas Operativos
EJEMPLO
UTN - Sistemas Operativos
P1 | P2 |
WHILE (true) { wait(sem1); wait(mutex); SECCIÓN CRÍTICA signal(mutex); signal(sem2); } | WHILE (true) { wait(mutex); wait(sem2); SECCIÓN CRÍTICA signal(mutex); signal(sem1); } |
P1 | P2 |
WHILE (true) { wait(sem1); T1) wait(mutex); T3) SECCIÓN CRÍTICA signal(mutex); signal(sem2); } | WHILE (true) { wait(mutex); T2) wait(sem2); T4) SECCIÓN CRÍTICA signal(mutex); signal(sem1); } |
mutex = 1;
sem1 = 1;
sem2 = 0;
El orden en que se realizan los waits genera un deadlock
CONDICIONES NECESARIAS
UTN - Sistemas Operativos
GRAFO DE ASIGNACIÓN DE RECURSOS
UTN - Sistemas Operativos
RECURSO
INSTANCIA
P2
P1
SOLICITUD
ASIGNACIÓN
TRATAMIENTO DE DEADLOCKS
UTN - Sistemas Operativos
TRATAMIENTO DE DEADLOCKS
UTN - Sistemas Operativos
Petición
Asignación
Deadlock
DETECCIÓN
EVASIÓN
PREVENCIÓN
¿En dónde se aplica cada técnica?
PREVENCIÓN DE DEADLOCKS
UTN - Sistemas Operativos
PREVENCIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
PREVENCIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
Establecer orden petición recursos
A cada recurso se le asigna un valor
Inicialmente se puede realizar cualquier petición
Las siguientes peticiones deben ser a R con valores crecientes
F(R1) = 3 F(R2) = 1 F(R3)=2
P1 | P2 | P3 |
R1 | R3 | R2 |
R2 | R1 | R3 |
| R2 | R1 |
PREVENCIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
Establecer orden petición recursos
P1
P3
P2
RA
RB
RC
DEADLOCK??
=> F(RC) > F(RB) > F(RA) > F(RC)
=> F(RC) > F(RC) ??
EVASIÓN DE DEADLOCKS
UTN - Sistemas Operativos
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
Algoritmo del Banquero
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
Ejemplo
| R1 | R2 | R3 |
P1 | 2 | 0 | 1 |
P2 | 1 | 3 | 1 |
P3 | 1 | 1 | 1 |
Peticiones Máximas (PM)
| R1 | R2 | R3 |
P1 | 1 | 0 | 0 |
P2 | 0 | 1 | 1 |
P3 | 1 | 0 | 0 |
Recursos Asignados (RA)
R1 | R2 | R3 |
2 | 3 | 2 |
Recursos totales
D
A
T
O
S
| R1 | R2 | R3 |
P1 | 1 | 0 | 1 |
P2 | 1 | 2 | 0 |
P3 | 0 | 1 | 1 |
Necesidad = PM - RA
2 | 1 | 1 |
R1 | R2 | R3 |
0 | 2 | 1 |
Recursos disponibles
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
2) La petición es válida?
Petición = ( 0, 1, 0)
3) Tengo esa cantidad disponible?
4) Deja a mi sistema en estado seguro?
Asigno lo que se pidió
SI
No asigno (debe esperar a que se liberen recursos)
NO
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
| R1 | R2 | R3 |
P1 | 1 | 0 | 0 |
P2 | 0 | 1 | 1 |
P3 | 1 | 1 | 0 |
| R1 | R2 | R3 |
P1 | 1 | 0 | 1 |
P2 | 1 | 2 | 0 |
P3 | 0 | 0 | 1 |
Necesidad = PM - RA
R1 | R2 | R3 |
0 | 1 | 1 |
Recursos disponibles
4.1) Simulo asignación
Recursos Asignados (RA)
4.2) Busco al menos UNA secuencia segura
| R1 | R2 | R3 |
Inicial | 0 | 1 | 1 |
Elijo P3 | 0 | 1 | 0 |
Finaliza P3 | 1 | 2 | 1 |
Elijo P2 | 0 | 0 | 1 |
Finaliza P2 | 1 | 3 | 2 |
Elijo P1 | 0 | 3 | 1 |
Finaliza P1 | 2 | 3 | 2 |
Secuencia: P3 - P2 - P1
Deja en estado seguro:
PUEDO ASIGNAR
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
2) La petición es válida?
B. Si P2 pide 2 R2 … puedo asignárselo inmediatamente??
Petición = ( 0, 2, 0)
3) Tengo esa cantidad disponible?
4) Deja a mi sistema en estado seguro?
EVASIÓN DE DEADLOCKS (CONT.)
UTN - Sistemas Operativos
| R1 | R2 | R3 |
P1 | 1 | 0 | 0 |
P2 | 0 | 2 | 1 |
P3 | 1 | 0 | 1 |
Necesidad = PM - RA
R1 | R2 | R3 |
0 | 0 | 1 |
Recursos disponibles
4.1) Simulo asignación
Recursos Asignados (RA)
4.2) Busco al menos UNA secuencia segura
No puedo atender a ningún proceso:
No existe secuencia segura
| R1 | R2 | R3 |
P1 | 1 | 0 | 1 |
P2 | 1 | 0 | 0 |
P3 | 0 | 1 | 1 |
Deja en estado inseguro:
NO PUEDO ASIGNAR
DETECCIÓN Y RECUPERACIÓN DE DEADLOCKS
DETECCIÓN
¿Con qué frecuencia hay que correr el algoritmo de detección?
UTN - Sistemas Operativos
DETECCIÓN Y RECUPERACIÓN DE DEADLOCKS (CONT.)
RECUPERACIÖN
Factores a considerar para seleccionar víctimas:
UTN - Sistemas Operativos
COMPARACIÓN
UTN - Sistemas Operativos
| Prevención | Evasión | Detección y recuperación |
Flexibilidad en las peticiones | Restringida por la política aplicada | Intermedia, los procesos deben declarar sus peticiones máximas | Flexible, cualquier solicitud puede realizarse |
Puede ocurrir deadlock | No | No | Si |
Overhead requerido | Por lo general es poco, sólo se define en qué forma se realizan las peticiones | Alto, con cada petición se debe correr el algoritmo del banquero | Intermedio, depende de la frecuencia del algoritmo de detección |
Utilización correcta de los recursos | Puede ser muy ineficiente | SI | Puede llegar a ser ineficiente en caso de desalojos frecuentes |
DEADLOCK EN LA VIDA REAL
UTN - Sistemas Operativos
Dudas??
LIVELOCK
UTN - Sistemas Operativos
DEADLOCK
LIVELOCK