El interbloqueo es un problema que afecta a procesos
concurrentes que utilizan recursos en un sistema. Los procesos solicitan
recursos al sistema y los liberan cuando ya no los necesitan. Un recurso puede
estar disponible o bien asignado a algún proceso.
Si en un sistema se produce una situación de interbloqueo,
entonces se cumplen simultáneamente estas cuatro condiciones:
- Exclusión mutua. Los recursos no se pueden compartir.
- Retención y espera. Un proceso que retiene uno o varios recursos se encuentra esperando por recursos asignados a otros procesos.
- No expropiación. Un recurso sólo puede ser liberado por el proceso que lo retiene, voluntariamente.
- Espera circular. Existe una serie de procesos en espera {Po,P1,...Pn} en la que todo Pi espera por un recurso retenido por Pi+1; y Pn espera por un recurso retenido por Po.
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.
Un sistema se compone de un numero finito de recursos que se
distribuyen entre varios tipos:
- Físicos: Ciclo de cpu, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.)
- Lógicos: Ficheros, tablas del sistemas, semáforos.
Por lo general, una computadora tiene distintos recursos que
pueden ser otorgados. Algunos recursos podrán tener varias instancias
idénticas, como es el caso de tres unidades de cinta. Si se tienen disponibles
varias copias de un recurso, cualquiera de ellas se pude utilizar para
satisfacer cualquier solicitud del recurso. Un recurso es cualquier cosa que
solo puede ser utilizada por un único proceso en un instante dado.
Los recursos son de dos tipos:
- Apropiable
- No apropiables
Un recurso apropiable es aquel que se puede tomar del
proceso que lo posee sin efectos dañinos. La memoria es un ejemplo de recurso
apropiable.
Por el contrario, un recurso no apropiable, es aquel que no
se puede tomar de su poseedor activo sin provocar un fallo de calculo. Si un
proceso comienza a imprimir una salida, se toma la impresora y se le da a otro
proceso, el resultado será una salida incomprensible. Las impresoras no son
apropiables.
Los interbloqueos se relacionan con los recursos no
apropiables. Lo usual es que los bloqueos asociados a recursos apropiables se
pueden resolver, mediante la reasignación de recursos de un proceso a otro.
La secuencia de eventos necesaria para utilizar un recurso
es:
- Solicitar el recurso
- Utilizar el recurso
- Liberar el recurso
Si el recurso no está disponible cuando se le solicita, el
proceso solicitante debe esperar. En algunos sistemas operativos, el proceso se
bloquea de manera automática al fallar una solicitud de un recurso y se
despierta cuando dicho recurso está disponible. En otros sistemas la solicitud
falla con un código de error y el proceso solicitante debe esperar un poco e
intentar de nuevo.
Un proceso cuya solicitud de un recurso ha sido denegada
entra por lo general en un ciclo, en el cual solicita el recurso, duerme e
intenta de nuevo.
Aunque este proceso no está bloqueado, para todos los
efectos esta como bloqueado, puesto que no puede hacer ninguna labor útil.
En la mayoría de los casos, el evento que espera cada
proceso es la liberación de cierto recurso que posee por el momento otro
miembro del conjunto. En otras palabras, cada miembro del conjunto de procesos
bloqueados espera un recurso poseído por un proceso bloqueado. Ninguno de los procesos
puede continuar su ejecución, ni liberar recursos, y puede ser despertado.

No hay comentarios:
Publicar un comentario