Deadlock
Definición
Un deadlock sucede cuando cada proceso o subproceso está esperando un recurso para ser liberado, que es controlado por otro proceso
Mutex M1, M2;
/* Thread 1 */
while (1) {
NonCriticalSection()
Mutex_lock(&M1);
Mutex_lock(&M2);
CriticalSection();
Mutex_unlock(&M2);
Mutex_unlock(&M1);
}
/* Thread 2 */
while (1) {
NonCriticalSection()
Mutex_lock(&M2);
Mutex_lock(&M1);
CriticalSection();
Mutex_unlock(&M1);
Mutex_unlock(&M2);
}
Situaciones
Para que se produzca deadlock, cuatro condiciones deben ser verdaderas .
Exclusión mutua - Cada recurso está asignado actualmente o bien exactamente a un proceso o que esté disponible. ( Dos procesos no pueden controlar simultáneamente el mismo recurso o estar en su sección crítica ) .
Mantenga y esperar - los procesos que actualmente ocupa recursos pueden solicitar nuevos recursos, nuevos procesos.
Sin preferencia - Una vez que un proceso tiene un recurso , no puede ser quitado por otro proceso o el kernel .
Circular de espera - Cada proceso está a la espera de obtener un recurso que se celebra por otro proceso .
Como Prevenir
Simplemente ignorarlo y esperar que no suceda
Detección y recuperación - si sucede, tomar medidas
Evitación dinámica por la asignación de recursos cuidadoso. Revise para ver si un recurso se puede conceder , y si la concesión se hará callejón sin salida, no otorgarlo .
Prevención - cambiar las reglas
Windows dice:
Estos bloqueos requieren un cierto grado de " mala suerte " ya que dependen de una serie de cosas sucediendo al mismo tiempo.
Windows utiliza
The ostrich Algorithm
The Ostrych Algorithm
Sólo espero que no suceda estancamiento . En general, esta es una estrategia razonable.
Si el sistema operativo tiene una prevención de deadlock o el sistema de detección en su lugar , esto tendrá un impacto negativo en el rendimiento ( el sistema se ralentice ) porque cada vez que un proceso o subproceso solicita un recurso , el sistema tendrá que comprobar si la concesión de esta solicitud podría causar una situación de bloqueo potencial.
!deadlock
La extensión de !deadlock Muestra información sobre los puntos muertos recogidos por la opción de Detección de Deadlock comprobador de controladores .
!deadlock
Deadlock
By lmkbarral
Deadlock
- 326