Detección

Es el proceso de determinar si realmente existe un bloqueo mutuo e identificar los procesos y recursos implicados en él.

 

Mediante estrategias de detección de interbloqueos se concederán los recursos que los procesos necesiten siempre que sea posible, y periódicamente el SO ejecuta un algoritmo que permite detectar la condición de espera circular. El control del interbloqueo puede llevarse a cabo: 


  En cada solicitud de recurso: conduce a una pronta detección y el algoritmo es relativamente simple puesto que está basado en cambios incrementales del estado del sistema. La frecuencia de comprobación consume un tiempo de procesador considerable. 


  Con una frecuencia estipulada: consume menos tiempo de procesador.

Una vez detectado el interbloqueo hace falta una estrategia de recuperación, algunos de los enfoques posibles son:

 

  • Abandonar todos los procesos bloqueados (la más utilizada por los SO). 
  • Retroceder cada proceso bloqueado hasta algún punto de control definido previamente y volver a ejecutar todos los procesos. El no determinismo del procesamiento concurrente asegura que, en general, no se repetirá el interbloqueo original. 
  • Abandonar sucesivamente los procesos bloqueados hasta que deje de haber interbloqueo. Para ello se seguirá un criterio de mínimo coste. Después de cada abandono se deberá ejecutar nuevamente el algoritmo de detección. 
  • Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo. Se debe emplear también una solución basada en el coste. Un proceso que pierde un recurso debe retroceder hasta un momento anterior a la adquisición de ese recurso.