You are on page 1of 33

Sistemas Operativos

Deadlocks I (Interbloqueos)

Sistemas Operativos
Versin: Abril 2013 Palabras Claves: Deadlock, Bloqueo, Procesos, Recursos, Inanicin Algunas diapositivas han sido extradas de las ofrecidas para docentes desde el libro de Stallings (Sistemas Operativos) , el de Silberschatz (Operating Systems Concepts)

Definicin
Un conjunto de procesos estn en deadlock cuando cada uno de ellos esta esperando por un recurso que esta siendo usado por otro proceso del mismo conjunto Un estado de Deadlock puede involucrar recursos de diferentes tipos.

Ejemplos
Un proceso A pide un scanner. Un proceso B pide una grabadora de CD. El proceso A pide ahora la grabadora y el B quiere el scanner. En una BD: un proceso A bloquea el registro R1, y el B el registro R2. Luego cada proceso trata de bloquear el registro que est usando el otro.

Ejemplos

Ejemplos

Recursos
Recursos fsicos
CPU, memoria, dispositivos.

Recursos lgicos
archivos, registros, semforos, etc.

Recursos apropiativos: se le puede quitar al proceso sin efectos dainos (ej: memoria). Recurso no apropiativo: si se le saca al proceso, ste falla (interrumpir una escritura a CD). Cada recurso puede tener instancias idnticas (puede haber 2 impresoras del mismo tipo) Si son idnticas, se puede asignar cualquier instancia del recurso

Recursos (cont.)
Clase de Recursos:
es el conjunto de instancias de un recurso

Ciclo del recurso


1. solicitud, 2. uso y 3. liberacin.

Ciclo corto de solicitud (fallida), estado inactivo, nuevo intento.

Representacin de procesos y recursos


Se utiliza un grafo de asignacin de recursos.

Ejemplo

SO 2009 - Fac. de Informtica - U.N.L.P.

Ejemplo Varias Instancias

Condiciones para que se cumpla deadlock


Coffman, 1971 Condiciones:
1. 2. 3. 4. Exclusin mutua Retencin y espera No apropiacin Espera circular

Se deben cumplir todas!

Mtodos para el tratamiento del deadlock


Usar un protocolo que asegure que NUNCA se entrar en estado de deadlock
Prevenir Evitar

Permitir el estado de deadlock y luego recuperar Ignorar el problema y esperar que nunca ocurra un deadlock

prevention <> avoidance


Prevention (prevenir la formacin del interbloqueo): que por lo menos una de las condiciones no pueda mantenerse. Se imponen restricciones en la forma en que los procesos REQUIEREN los recursos. Avoidance (evitar la formacin del interbloqueo): asignar cuidadosamente los recursos, manteniendo informacin actualizada sobre requerimiento y uso de recursos.

Prevenir: Condicin de exclusin mutua


Si ningn recurso se asignara de manera exclusiva, no habra interbloqueo. Considerar que hay recursos compartibles y no compartibles. Ejemplo: impresora y proceso de impresin. Mantener la exclusin mutua para los compartibles

Prevenir: Condicin de retencin y espera


Se basa en que si un proceso requiere un recurso, debe liberar otros. Alternativas: Un proceso debe requerir y reservar todos los recursos a usar antes de comenzar la ejecucin (precedencia de los system calls que hacen el requerimiento antes de cualquier otra system call) El proceso puede requerir recursos slo cuando no tiene ninguno. Desventajas Baja utilizacin de recursos Posibilidad de inanicin de alguno de los procesos (starvation, o espera infinita)

Prevenir: Condicin de no apropiacin


No siempre se puede atacar esta condicin. Posible solucin:
Si un recurso no puede asignarse a un proceso y queda en wait, se liberan el resto de los recursos. El proceso esperar ahora por todos sus recursos.

Prevenir: Condicin de no apropiacin


Alternativas para recursos apropiativos:
Si un proceso requiere un recurso que no est disponible, todos los recursos que tiene asignado ese proceso son apropiados y se bloquea el proceso. Se desbloquea cuando el recurso pedido y los que tena estn nuevamente disponibles. Si un proceso requiere un recurso que no est disponible, el sistema chequea si ese recurso lo tiene asignado un proceso que est bloqueado a la espera de otro recurso. Si es as, el recurso es apropiado del proceso bloqueado y asignado al solicitante. Si no es as, el proceso solicitante es bloqueado hasta que el recurso est disponible.

Prevenir: Condicin de Espera circular


Se define un ordenamiento de los recursos. Luego, un proceso puede requerir recursos en un orden numrico ascendente. Sea F:RN, N conjunto de los naturales. F asigna un numero nico a cada recurso (los nmeros pequeos para recursos muy usados). Un proceso, que ya tiene Ri puede requerir Rj si y solo si F(Rj) > F(Ri)

Ejemplo: Prevencin en Espera circular


Supongamos que se han definido los siguientes valores: F(CD)=1; F(disco duro)=4, F(impresora)=7 Un proceso que ya tiene asignado el disco, puede pedir la impresora (pues F(impresora)> F(disco duro). Si ya tiene la impresora, no puede solicitar el CD.

Evitar Deadlocks
El SO cuenta con informacin sobre el uso de los recursos
cmo se requieren en qu momento del sistema son requeridos la demanda mxima, etc.

Desventajas en implementacin: puede producir una baja utilizacin de los recursos y de la performance del sistema

Sobre informacin de los recursos


Conocer la secuencia de solicitud, uso y liberacin de cada recurso requerido por el proceso. Ante cada requerimiento se evala la incidencia de la asignacin (posibles consecuencias) El proceso que declara la cantidad mxima de recursos de cada tipo que necesitar.

Estado sano o seguro


Un sistema est en un estado seguro (con respecto a la ausencia de deadlock) si se pueden asignar recursos a cada proceso de un conjunto de alguna manera, evitando el deadlock. Debe haber una secuencia de procesos <P0, P1 , , Pn >, que puedan ejecutarse con los recursos disponibles sin que haya deadlock. <P0, P1 , , Pn > se le llama cadena segura Si no se puede construir esta secuencia, el estado del sistema es inseguro

Importante!
Un estado seguro garantiza que no hay deadlock. Un estado de deadlock, es un estado inseguro. Pero... no todos los estados inseguros son deadlock.

Ejemplo
Procesos

En un sistema, 3 procesos P0, P1 y P2 comparten 12 unidades de cinta. Segn la tabla, hay 3 cintas libres. Qu pasa si le doy 2 a P1?

Mximo a usar 10 4 9

en uso 5 2 2

P0 P1 P2

Algoritmos para evitar el deadlock


Algoritmo que determina el estado seguro de un sistema. Algoritmo del Banquero (para mas de una instancia por recurso)

Algoritmo del banquero


Se aplica para sistemas con mltiples instancias de cada recurso. Los procesos declaran el nmero mximo de instancias de cada recurso que necesitara Ese nmero no puede exceder total de instancias de recursos de ese tipo en el sistema. El SO decidir en qu momento asignarlos, garantizando un estado seguro.

Estructuras asociadas
n: cantidad de procesos m: cantidad de tipos de recursos disponible: vector de m componentes, con la cantidad de recursos disponibles para cada tipo, tal que si disponible(j)=k, indica que hay k instancias del recurso Rj . asignacin: matriz de n x m. Asignacion(i,j)=k, indica que hay k instancias del recurso Rj asignadas a Pi . max: matriz de n x m. Max(i,j)=k, indica que Pi necesitar en total k instancias del recurso Rj . need: matriz de n x m. Need(i,j)=k, indica que Pi necesitar k instancias mas de las que ya tiene, del recurso Rj .

Tener en cuenta:
Si X e Y son vectores de n componentes, decimos que X Y si y solo si X (i) Y(i), para todo i=1,..,n. Para este algoritmo, tomaremos filas de las matrices como si fueran vectores. Recursos asignados a Pi representados por el vector Asigi que es la fila i de la matriz Asig.

Algoritmo del estado seguro (Safety Algorithm)


Se inicializa vector de m componentes, work, tal que work=disponible Se inicializa en false un vector de n componentes, Final Pasos: Encontrar un i, tal que se cumpla que: 1) final(i)= falso 2) needi work Si no existe tal i, va al paso 5. Realizar las siguientes operaciones 3) work=work + asignacioni 4)final(i)= verdadero. 5) Si final(i)=verdadero para todo i, el sistema est en estado seguro.
Cabe aclarar que no se estn ejecutando los procesos: se est analizando si existe una secuencia segura de ejecucin.

Algoritmo de requerimiento de recursos


solicitudi es un vector de m componentes. Representa los recursos que solicita Pi . solicitudi [j]=k, indica que Pi necesita k instancias del recurso Rj . Cuando el proceso requiere recursos se realizan los siguientes pasos: 1) Si solicitudi needi va la paso 2. Si no es as, se reporta un error pues no puede pedir ms de lo que necesita. 2) Si solicitudi work va al paso 3. Si no es as Pi deber dormir hasta que el recurso este disponible. Cuando el sistema va a asignar el recurso se hacen los siguientes clculos 3) work = work solicitudi 4) asignacioni = asignacioni + solicitudi 5) needi = needi - solicitudi Luego aplicamos el algoritmo de estado seguro para ver si asignarle la solicitud deja el sistema en estado seguro o no.

Ejemplo
work=(3,3,2)
Procesos P0 P1 P2 P3 P4 Asig 0 2 3 2 0 1 0 0 1 0 0 0 2 1 2 Max 7 3 9 2 4 5 2 0 2 3 3 2 2 2 3 Need 7 4 1 2 6 0 0 1 4 3 3 2 0 1 1

You might also like