Deadlock

Definició

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