miércoles, 17 de noviembre de 2010

UNIDAD 2 Gestión del procesador, comunicación y sincronización de datos(2da parte)


Bloqueos mutuos o deadlocks

Bueno hoy hablaremos sobre los bloqueos mutuos también conocido como deadlocks o interbloqueo que es cuando tenemos demasiados procesos que compiten por recursos finitos, puede darse una situación en la que un proceso está bloqueado esperando por un recurso que nunca se liberará, porque lo posee otro proceso también bloqueado.A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los bloqueos mutuos.

En el siguiente ejemplo que vemos arriba es uno de los más comunes para entender lo que es el bloqueo mutuo. Cuatro autos en una intersección de caminos que cada uno bloquea al otro, por lo que existe un interbloqueo que no tiene por tanto una solución sencilla ya que para que cada uno se pueda mover se ha de mover el de delante suya.

Métodos para manejar bloqueos mutuos

No hacer absolutamente nada

Los bloqueos mutuos son evidentemente indeseables. Los recursos retenidos por los procesos bajo bloqueo mutuo no están disponibles para otros procesos, y los procesos en deadlock no pueden avanzar. Pero si un bloqueo mutuo se produce, en promedio, cada diez años y en cambio el sistema se cae todos los días por fallas en el hardware o en el sistema operativo, entonces el problema de los bloqueos mutuos es irrelevante.

Detección y recuperación

Una posibilidad es monitorear cada cierto tiempo el estado del grafo de recursos.
Si se detecta un ciclo, se matan todos los procesos del ciclo , o se van matando procesos del ciclo hasta que no queden ciclos. Es un método drástico, pero mejor que nada.

Prevención

Exclusión mutua.
Hay recursos que son intrínsecamente no compatibles, de modo que no se puede descartar la exclusión mutua.
No expropiación.
Esta condición se puede eliminar imponiendo expropiación. Si un proceso P tiene recursos y solicita otro que está ocupado, se le pueden expropiar a P los que ya tiene, o bien expropiarle al otro proceso el recurso que P necesita. Es aplicable a cierta clase de recursos (cuyo estado se puede almacenar y luego recuperar), pero no a otros como registros de base de datos o impresoras.
Retención y espera.
Podemos impedir esta condición exigiendo que los procesos soliciten de una vez, al comienzo, todos los recursos que van a necesitar. Si uno o más recursos no están disponibles, el proceso se bloquea hasta que pueda obtenerlos todos. Inconvenientes: muchos procesos no pueden saber de antemano qué y cuántos recursos necesitarán. Subutilización de recursos, ya que quedan retenidos de principio a fin de la ejecución