Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tema IV
Bloqueos Irreversibles
(Bloqueos mutuos, deadlocks, Interbloqueos o Abrazo mortal)
La administracin de los recursos es una de las principales tareas del sistema operativo, ya que
tienen que ofrecer mecanismos que permitan a los procesos acceder de forma exclusiva a los
recursos. Cuando un proceso solicita ciertos recursos y stos no estn disponibles en ese
momento, entra en un estado de espera. Si se tienen muchos procesos que compiten por
recursos finitos, puede darse una situacin en la que un proceso est bloqueado esperando por
un recurso que nunca se liberar, porque lo posee otro proceso tambin bloqueado. Una ley de
principios de siglo, en Kansas, grafica esta situacion con el siguiente enunciado "cuando dos
trenes se aproximan a un cruce, ambos deben detenerse completamente, y ninguno podr
continuar hasta que el otro se haya ido."
Un sistema se compone de un nmero finito de recursos que son distribuidos entre un nmero
de procesos que compiten por ellos. Los recursos pueden ser:
Los recursos son clasificados en diferentes tipos, cada uno de los cuales se compone de algn
nmero de instancias iguales. Si un sistema tiene dos CPUs, entonces el tipo CPU tiene dos
instancias. Similarmente, el tipo IMPRESORAS puede tener cinco instancias. Si un proceso pide
una instancia de un tipo de recurso, la asignacin de cualquier instancia de ese tipo atender la
peticin. Si este no es el caso, entonces las instancias no son idnticas y las clases de tipos de
recursos no estn bien definidas. Un proceso debe solicitar un recurso antes de usarlo y liberarlo
despus de usarlo. Un proceso puede solicitar tantos recursos como sean necesarios para llevar
a cabo la tarea para la cual ha sido diseado. Obviamente el nmero de recursos solicitados no
debe exceder el nmero de recursos disponibles en el sistema. En otras palabras, un proceso no
debe pedir tres impresoras si en el sistema solo existen dos.
Una computadora normalmente tendr varios recursos que pueden ser otorgados. Algunos
podrn tener varias referencias idnticas, como en el caso de las unidades de cinta. Si se tienen
varias copias disponibles de un recurso, cualquiera de ellas se puede utilizar para satisfacer
cualquier solicitud de recurso. Los recursos son de dos tipos:
Apropiativos
No apropiativos
Recursos apropiativos. Los recursos apropiativos son aquellos que se pueden tomar del
proceso que le posee sin efectos dainos. La memoria es un ejemplo de recursos apropiativos.
Por ejemplo considerar un sistema con 512 Kb de memoria de usuario, una impresora, y dos
procesos de 512 Kb que se desean imprimir cada uno.
El proceso A solicita y obtiene la impresora, para entonces comienza a calcular los valores
que va a imprimir. Antes de terminar el clculo excede su quantum de tiempo y se
intercambia.
El proceso B se empieza a ejecutar e intenta sin xito adquirir la impresora.
Potencialmente se tendra una situacin de bloqueo, puesto que A tiene la impresora y B la
memoria y ninguno puede continuar sin el recurso que posee el otro.
Por fortuna es posible apropiarse de la memoria de B y sacarlo de ella e intercambiarlo con
A.
A puede ejecutarse entonces, imprimir y liberar despus la impresora. No ocurre un bloqueo.
40
Recursos no apropiativos . Los recursos no apropiativos son aquellos que no se pueden tomar
de su poseedor activo sin provocar un fallo de clculo. Por ejemplo, si un proceso comienza a
imprimir una salida, se toma la impresora y se le da otro proceso, el resultado ser una salida
incomprensible. Las impresoras no son apropiables. En general los bloqueos se relacionan con
los recursos no apropiables.
La secuencia de eventos necesarios para utilizar un recurso es la siguiente:
1. Solicitar el recurso.
2. Utilizar el recurso.
3. Liberar el recurso.
Peticin. Si la peticin no puede ser satisfecha inmediatamente (por ejemplo, el recurso esta
siendo utilizado por otro proceso), entonces el proceso solicitante debe esperar hasta que
pueda adquirir el recurso.
Uso. El proceso puede utilizar un recurso (por ejemplo, si el recurso es una impresora en
lnea, el proceso puede imprimir en la impresora).
Liberacin. El proceso libera el recurso. Si el recurso no esta disponible cuando es
requerido, el proceso solicitante se ve forzado a esperar. En algunos sistemas operativos, el
proceso se bloquea automticamente cuando falla la solicitud el recurso y se desbloquea
cuando esta disponible. En otros sistemas, la requisicin falla en un cdigo de error y
corresponde al recurso solicitante esperar un poco y volverlo a intentar.
La peticin y liberacin del recurso son peticiones al sistema. Ejemplos de llamadas al sistema
son: Peticin/Liberacin de dispositivos, Abrir/Cerrar archivos y Asignar/Desasignar memoria. El
uso de recursos puede tambin hacerse slo a travs de llamadas al sistema. Por lo tanto, para
cada uso, el sistema operativo chequea para asegurarse de que el proceso usuario ha pedido y
se le han asignado los recursos. Una tabla del sistema registra cuando un recurso est libre o
asignado, y si est asignado, a qu proceso. Si un proceso pide un recurso que est asignado en
ese momento a otro proceso, ste puede ser agregado a una cola de procesos en espera de ese
recurso.
4.1. Bloqueos
Un conjunto de procesos se encuentra en estado de interbloqueo cuando cada uno de ellos
espera un suceso que slo puede originar otro proceso del mismo conjunto. Por ejemplo, si dos
procesos desean imprimir cada uno un enorme archivo en cinta.
El proceso A solicita permiso para utilizar la impresora (recurso 1), el cual se le concede.
El proceso B solicita permiso para utilizar la unidad de cinta (recurso 2) y se le otorga.
El proceso A solicita entonces la unidad de cinta (recurso 2), pero la solicitud es denegada
hasta que B la libere. En este momento, en vez de liberar la unidad de cinta, el proceso B
solicita la impresora (recurso 1).
Los procesos se bloquean en ese momento y permanecen as por siempre. A esta situacin se le
llama BLOQUEO.
41
42
43
generar salida al mismo tiempo. Puesto que el spooler nunca solicita otros recursos, se elimina el
bloqueo originado por la impresora.
El inconveniente es que no todos los recursos pueden usarse de esta forma (por ejemplo, la
tabla de procesos no se presenta al spooling y, adems, la implementacin de esta tcnica
puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco
finita).
Retener y esperar. Con el fin de asegurar que la condicin de retener y esperar nunca ocurra en
el sistema, se debe garantizar que siempre que un proceso solicite un recurso, ste no pueda
retener otros recursos.
Un protocolo que puede ser usado requiere que cada proceso solicite y le sean asignados todos
los recursos antes de que empiece su ejecucin. Esto puede ser implantado haciendo que las
llamadas al sistema solicitando recursos se hagan antes que todas las otras llamadas al sistema.
Un protocolo alternativo permite que un proceso solicite recursos cuando no tiene ningn recurso
asignado. Un proceso puede solicitar algunos recursos y utilizarlos, pero, antes de que pueda
volver a pedir recursos adicionales, debe liberar todos los recursos que tiene previamente
asignados.
Para ejemplificar la diferencia entre estos dos protocolos, consideremos un proceso que copia un
archivo de una unidad de cinta(1) a una unidad de disco, ordena el archivo en disco, despus
imprime los resultados a una impresora en lnea y finalmente copia el archivo de disco a la
unidad de cinta(2).
Si todos los recursos deben ser solicitados al inicio del proceso, entonces el proceso debe iniciar
solicitando la unidad de cinta(1), la unidad de disco, la impresora en lnea y la unidad de cinta(2).
Este proceso mantendr las unidades de cinta (1) y (2) durante la ejecucin completa aunque
slo las utilice al principio y al final de su ejecucin respectivamente.
El segundo mtodo permite al proceso el solicitar inicialmente solo la unidad de cinta(1) y la
unidad de disco. Ahora puede copiar el archivo de la unidad de cinta (1) a la unidad de disco y
ordenarlo, posteriormente debe liberar la unidad de cinta(1) y la unidad de disco. El proceso
debe volver a solicitar la unidad de disco y la impresora en lnea para hacer la impresin.
Despus de imprimir debe liberar la unidad de disco y la impresora. Ahora debe de volver a
solicitar la unidad de disco y la unidad de cinta(2) para copiar el archivo a cinta, debe liberar
ambos recursos y terminar.
Existen dos desventajas principales en estos protocolos:
La primera, la utilizacin de los recursos puede ser muy baja, debido a que varios de los
recursos pueden estar asignados pero no son utilizados la mayor parte del tiempo.
Segundo, puede ocurrir Inanicin (Starvation). Un proceso que necesite varios recursos que
sean muy solicitados puede tener que esperar indefinidamente mientras al menos uno de los
recursos que necesita est asignado siempre a algn otro proceso. En esta segunda
condicin, retener y esperar, si se puede impedir que los procesos que tienen los recursos
esperen la llegada de ms recursos podemos erradicar los estancamientos. La solucin que
exige que todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y
bloqueando el proceso hasta que todos los recursos puedan concederse simultneamente
resulta ineficiente por dos factores:
o En primer lugar, un proceso puede estar suspendido durante mucho tiempo,
esperando que concedan todas sus solicitudes de recursos, cuando de hecho podra
haber avanzado con slo algunos de los recursos.
o Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin
usarse durante periodos considerables, tiempo durante el cual se priva del acceso a
otros procesos.
No expropiacin. La tercera condicin necesaria es que no debe de existir el derecho de
desasignar recursos que han sido previamente asignados. Con el fin de asegurar que esta
condicin no se cumpla, el siguiente protocolo puede ser usado: Si un proceso que est
reteniendo algunos recursos solicita otro recurso que no puede ser asignado inmediatamente (es
decir, el proceso tiene que esperar), entonces todos los recursos que tiene este proceso en
espera son desasignados. Entonces, los recursos son liberados implcitamente. Los recursos
Ing. Jorge Orellana A.
44
liberados son agregados a la lista de los recursos por los cuales est esperando el proceso. El
proceso slo puede volver a ser reinicializado cuando haya obtenido otra vez todos los recursos
que tena asignados, as como el nuevo recurso que estaba solicitando. Alternativamente si un
proceso solicita algunos recursos, primero verificamos si estos estn disponibles. Si es as,
entonces se le asignan. De otro modo, se verifica si estn asignados a alguno de los procesos
que estn en espera de recursos adicionales. Si es as, los recursos deseados son desasginados
del proceso en espera y asignados al proceso solicitante. De otra manera (no estn disponibles,
ni asignados a procesos en espera) el proceso que hace la solicitud debe esperar. Pero,
mientras esta esperando, algunos de sus recursos pueden ser desasignados solamente si estos
son solicitados. Un proceso puede ser reinicializado cuando se le asigna el recurso que haba
solicitado y recupera cualquier recurso que haya sido desasignado mientras esperaba. Este
protocolo es utilizado usualmente sobre recursos cuyo estado puede ser fcilmente salvado y
restablecido posteriormente, ejemplo de ellos son los registros del CPU y el espacio en la
memoria. Este no puede ser aplicado a recursos tales como impresoras. Esta tercera condicin
(llamada tambin sin prioridad) es an menos premisoria que la segunda. Si a un proceso se le
ha asignado la impresora y se encuentra a la mitad de la impresin, y tomamos a la fuerza la
impresora porque no se dispone de una graficadora, se engendrara una confusin.
Espera circular. Con el fin de asegurarse de que la condicin de espera circular nunca se
presente, se puede imponer un ordenamiento total sobre todos los tipos de recursos. Esto es,
asignamos a cada tipo de recurso un nmero entero nico, el cual permita comparar dos
recursos y determinar cundo uno precede al otro en el ordenamiento.
Ms formalmente, sea R = {r1, r2,..., rn} el conjunto de tipos de recursos. Puede definirse una
funcin uno a uno F:R->N, donde N es el conjunto de nmeros naturales. Por ejemplo, si el
conjunto R de tipos de recursos incluye unidades de disco (UDD), unidades de cinta (UDC),
lectoras pticos (LO) e impresoras (I), entonces la funcin F puede ser definida como sigue:
F(LO) =1 F(UDD) = 5 F(UDC) = 7 F(I) = 12
Se puede considerar el siguiente protocolo para prevenir interbloqueo:
Cada proceso puede solicitar recursos solamente en un orden creciente de numeracin. Esto es
un proceso puede solicitar inicialmente cualquier nmero de instancias de un tipo de recurso,
digamos ri. Despus de esto, el proceso puede solicitar instancias de recursos del tipo rj si y solo
si F(rj) > F(ri). Si varias instancias del mismo tipo de recurso son necesitadas, debe hacerse una
sola peticin para todas las instancias. Por ejemplo, usando la funcin definida anteriormente, un
proceso que quiere usar el lector ptico (LO) y la impresora (I) debe solicitar primero el (LO) y
despus la (I).
Alternativamente, se puede requerir simplemente que siempre que un proceso solicite una
instancia del recurso tipo rj, ste tenga que liberar cualquier recurso del tipo ri tal que F(ri) >=
F(rj). Debe notarse que la funcin F debe definirse de acuerdo al ordenamiento de uso normal de
los recursos en el sistema. Por ejemplo, usualmente se utiliza primero una (UDD) antes que la
(I), por lo cual es razonable definir F(UDD) < F(i).
Esta ltima condicin (espera circular) se puede eliminar en varias formas. Una manera consiste
en simplemente tener una regla que afirme que un proceso slo tiene derechos a un recurso
nico en cualquier momento. Si necesita un segundo recurso debe devolver el primero.
Otra manera de evitar la espera circular es la de ofrecer una numeracin global de todos los
recursos. Ahora la regla es que los procesos pueden solicitar recursos siempre y cuando
devuelva el recurso que tenga y el que solicite sea mayor que el que est utilizando.
4.4.2. Evasin de Bloqueos
En vez de restringir la forma o el orden en que los procesos deben solicitar recursos, antes se
chequea que sea seguro otorgar dichos recursos. Es decir, si se presentan las condiciones
suficientes para un interbloqueo, todava es posible evitarlos por medio de una restriccin en la
asignacin 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 mtodo para evitar interbloqueo consiste en requerir informacin adicional sobre cmo se
solicitarn los recursos. Esta informacin puede ser:
Ing. Jorge Orellana A.
45
Este estado es seguro, puesto que con dos unidades restantes, el banquero puede retrasar
todas las solicitudes excepto la de C lo cual permite que C termine y libere sus cuatro recursos.
Con cuatro unidades disponibles, el banquero puede permitir que B D tengan las unidades
necesarias. Considerar lo que ocurrira si se otorgara una solicitud de B de una unidad adicional,
analizando esto en el esquema anterior se tendra este nuevo esquema:
Se tendra un estado inseguro, ya que si todos los clientes solicitaran de pronto su mximo
prstamo, el banquero no podra satisfacerlas y se tendra un bloqueo.
Un estado inseguro no tiene que llevar a un bloqueo, puesto que un cliente podra no necesitar
toda su lnea de crdito, pero el banquero no puede contar con ese comportamiento.
El algoritmo del banquero consiste entonces en estudiar cada solicitud al ocurrir sta y ver si su
otorgamiento conduce a un estado seguro. En caso afirmativo, se otorga la solicitud; en caso
contrario, se le pospone. Para ver si un estado es seguro, el banquero verifica si tiene los
recursos suficientes para satisfacer a otro cliente. En caso afirmativo, se supone que estos
prstamos se le volvern a pagar; entonces verifica al siguiente cliente cercano al lmite y as
sucesivamente. Si en cierto momento se vuelve a pagar todos los prstamos, el estado es
seguro y la solicitud original debe ser aprobada.
46
Algoritmo del banquero para varios recursos. El algoritmo del banquero de puede generalizar
para el control de varios recursos. Por ejemplo, dado un sistema con cinco procesos, P1 a P5, y
tres tipos de recursos, A, B y C, de los que existen 10, 5 y 7 ejemplares, respectivamente.
Supongamos que en el instante actual tenemos la siguiente situacin del sistema:
Se puede atender a P3
Se puede atender a P1
(3 3 2)
-
(1 2 2)
(2 1 0)
(3 2 2)
(5 3 2)
(0 1 1)
(5 2 1)
(2 2 2)
(7 4 3)
(4 3 1)
(3 1 2)
(4 3 3)
(7 4 5)
(6 0 0)
(1 4 5)
(9 0 2)
(10 4 7)
(7 4 3)
(3 0 4)
(7 5 3)
(10 5 7)
El orden de atencion de los procesos es P2, P4, P5, P3 y P1; secuencia que permite un estado
seguro de asignacion de recursos.
47
48
49
50
Adems, los programas que trabajan con bases de datos tambin merecen un trato especial. Los
trabajos que estn modificando datos no se deben elegir para su terminacin, ya que la
consistencia y validez de la base de datos se pondra en peligro. Afortunadamente, los
diseadores de muchos sistemas de bases de datos han incluido mecanismos complejos de
recuperacin, por lo que se minimiza el dao a la base de datos si se interrumpe una transaccin
o se termina antes de completarse.
51