2.6.1 Principios de interbloqueo
Una situación de interbloqueo tiene lugar cuando ninguno de los procesos que compiten por los recursos del sistema o interactúan entre sí puede avanzar por carecer de algún recurso o esperar a que se produzca algún tipo de evento.
2.6.1.1 Recursos reutilizables
Un recurso reutilizable es aquel que puede ser utilizado por un proceso y no se agota por hacer uso del mismo, los procesos obtienen unidades de estos recursos y tras utilizarlas las liberan para que puedan ser reutilizadas por otros procesos. Como ejemplos de recursos reutilizables tenemos el procesador, la memoria principal y los dipositivos E/S.
2.6.1.2 Recursos consumibles
Un recurso consumible es aquel que puede ser producido y consumido. Normalmente no hay límite en el número de recursos consumibles de un tipo particular. Así, un proceso productor podrá liberar cualquier número de recursos consumibles. Las únicas restricciones en este sentido vendrán impuestas por la capacidad de almacenamiento temporal del sistema. Cuando un proceso consume un recurso de este tipo, la parte consumida queda excluida del sistema. Ejemplos típicos son: interrupciones, señales y mensajes.
A continuación veremos una secuencia que muestra la posibilidad de interbloqueo entre procesos que utilizan recursos consumibles.
A continuación veremos otra secuencia que produce interbloqueo entre procesos que utilizan recursos reutilizables.
2.6.1.3 Condiciones de interbloqueo
Deben darse tres condiciones para que se produzca interbloqueo:
Estas tres condiciones de interbloqueo son condiciones necesarias, pero no suficientes, es decir, pueden producirse tales situaciones y que el sistema no evolucione a un interbloqueo.
Para que se produzca interbloqueo, debe darse una cuarta condición que consiste en la existencia de una cadena cerrada de procesos donde cada uno de los cuales retiene al menos un recurso de los que necesita el siguiente proceso de la cadena para continuar su ejecución. A esta condición se le denomina espera circular.
Fig. 2.6.4 Espera circular.