next up previous contents
Next: Detectar y actuar Up: Concurrencia y Distribución Previous: Monitores   Índice General

Bloqueo


Un bloqueo se produce cuando un proceso está esperando algo que nunca se cumple.

Ejemplo:

Cuando dos procesos P0 y P1 quieren tener acceso simultaneamente a dos recursos r0 y r1, es posible que se produzca un bloqueo de ambos procesos. Si P0 accede con exito a r1 y P1 accede con exito a r0, ambos se quedan atrapados intentando tener acceso al otro recurso.

Cuatro condiciones se tienen que cumplir para que sea posible que se produzca un bloqueo entre procesos:

  1. los procesos tienen que compartir recursos con exclusión mutua
  2. los procesos quieren acceder a un recurso más mientras ya tienen acceso exclusivo a otro
  3. los recursos solo permiten ser usados por menos procesos que lo intentan al mismo tiempo
  4. existe una cadena circular entre peticiones de procesos y asignaciónes de recursos

Un problema adicional con los bloqueos es que es posible que el programa siga funcionando correctamente según la definición, es decir, el resultado obtenido es el resultado deseado, aún cuando algunos de sus procesos están bloqueados durante la ejecución (es decir, se produjo solamente un bloque parcial).

Existen algunas técnicas que se pueden usar para que no se produzcan bloqueos:



Subsecciones
next up previous contents
Next: Detectar y actuar Up: Concurrencia y Distribución Previous: Monitores   Índice General
© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática