2. ¿Que es?
Es el bloqueo permanente de un conjunto de procesos o hilos de
ejecución en un sistema concurrente que compiten por recursos del
sistema o bien se comunican entre ellos. A diferencia de otros
problemas de concurrencia de procesos, no existe una solución
general para los interbloqueos.
Se dice que dos o más procesos están bloqueados, cuando están
suspendidos en espera de un evento que sólo puede ser activado
por uno de los procesos bloqueados, y por lo tanto dicho evento
nunca sucederá
3. Condiciones necesarias
Exclusión mutua
Si dos procesos solicitan un recurso exclusivo, uno de los dos quedará suspendido hasta que el
favorecido libere el recurso.
Contención o retención y espera
Si un proceso necesita más de un recurso para realizar su trabajo, conservará en su poder los
recursos exclusivos ya asignados, mientras espera por otro recurso adicional.
Inapropiatividad
Los recursos asignados a un proceso, sólo pueden ser liberados por el proceso mismo y no
pueden ser desasignados por el sistema, cuando otro proceso los necesite.
Espera circular
Dependencia: Si un proceso P1 está suspendido en espera de un recurso exclusivo que está
asignado a otro proceso P2, entonces decimos que P1 depende de P2 (P1 <= P2).
Espera circular: Existe una cadena circular de procesos en espera de un recurso, si existe una
cadena de dependencias entre procesos de la forma P1 <= P2 <= P3 <= ... <= Pn <= P1.
4.
5. Ejemplo Interbloqueo Trafico
Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro
caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los
que se demanda control; por tanto, si los coches desean atravesar el cruce, las
necesidades de recursos son las siguientes:
El coche que va hacia el norte necesita los cuadrantes 1 y 2.
El coche que va hacia el oeste necesita los cuadrantes 2 y 3.
El coche que va hacia el sur necesita los cuadrantes 3 y 4.
El coche que va hacia el este necesita los cuadrantes 4 y 1.
6. PREVENCIÓN DEL INTERBLOQUEO
La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en
diseñar su sistema de manera que esté excluida, a priori, la posibilidad de
interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres
condiciones necesarias para que se de el Interbloqeo.
- Los métodos directos que consisten en evitar la aparición del circulo vicioso de
espera.
7. Evitar interbloqueos
En vez de restringir la forma o el orden en que los procesos deben solicitar
recursos, antes se debe conocer si es seguro otorgar dichos recursos. Es decir, si
se presentan las condiciones suficientes para un interbloqueo, todavía es
posible evitarlos por medio de una restricción en la asignación de los procesos
para tratar de buscar estados seguros. Estas restricciones aseguran que al
menos una de las condiciones necesarias para el interbloqueo no pueda
presentarse y por lo tanto, tampoco el interbloqueo.
Otro método para evitar los interbloqueo consiste en requerir información
adicional sobre cómo se solicitará los recursos. Esta información puede ser:
La necesidad máxima de recursos de los procesos que se está ejecutando
La asignación actual de recursos a procesos
La cantidad actual de instancias libres de cada recurso