sistemas operativos unidad 6 interbloqueos (dead lock)
Post on 23-Jan-2015
30 Views
Preview:
TRANSCRIPT
Sistemas Operativos
Unidad 6 Interbloqueos
(Dead Lock)
Interbloqueos (Dead Lock)
Interbloqueos en sistemas informáticos Modelado del interbloqueo Definición y caracterización del interbloqueo Tratamiento del interbloqueo Detección y recuperación del interbloqueo Prevención del interbloqueo Predicción del interbloqueo Tratamiento de los intebloqueos en SO.
Interbloqueos en sistemas informáticos En la vida cotidiana un escenario donde
pueden aparecer interbloqueos se caracteriza por un conjunto de entidades activas que utilizan un conjunto de recursos para llevar a cabo su labor.
En un sistema informático existirán: Las entidades activas (procesos existentes en el
sistema). Los recursos del sistema que utilizan los
procesos para llevar a cabo su labor (Físicos: procesador, memoria, etc. Lógicos: archivos, semáforos, mutex, etc).
Interbloqueos en sistemas informáticos (2) Tipos de recursos
Reutilizables o consumibles ¿El recurso sigue existiendo después de usarse?
Uso dedicado o compartido ¿Puede ser usado por varios procesos
simultáneamente? Con uno o múltiples ejemplares
¿Existen múltiples ejemplares del mismo recurso? Expropiables o no expropiables
¿Es posible expropiar el recurso cuando se está usando?
Interbloqueos en sistemas informáticos (3) Recursos reutilizables
Su “vida” no depende de su utilización. Lo son todos los recursos físicos y algunos lógicos como:
archivos o mutex.
Interbloqueos en sistemas informáticos (4) Recursos consumibles
Dejan de existir una vez que un proceso los usa. Un proceso genera un recurso y otro lo consume Son los asociados a la comunicación y sincronización:
Mensajes, señales, semáforos, etc. Ejemplo de interbloqueo inevitable (“estructural”) .
Interbloqueos en sistemas informáticos (5) Recursos reutilizables y consumibles
En general, los procesos usan ambos tipos de recursos No existe una solución general eficiente.
En esta unidad solo se tratarán los reutilizables. Ejemplo de interbloqueo utilizando ambos tipos de
recursos:
Interbloqueos en sistemas informáticos (6) Recursos compartidos o exclusivos
Los recursos compartidos los pueden usar varios procesos simultáneamente, por tanto no afectan a los interbloqueos.
Pueden existir recursos con ambos tipos de uso En la solicitud del recurso debe indicarse el modo de uso
deseado Si compartido: concedido si no se esta usando en modo
exclusivo. Si exclusivo: concedido si no se esa usando.
Por ejemplo: cerrojos en archivos. En esta unidad solo se tratarán los recursos exclusivos y
reutilizables, es decir, aquellos recursos reutilizables y de uso exclusivo (también llamados reutilizables en serie).
Interbloqueos en sistemas informáticos (7) Recursos con uno o múltiples ejemplares
Modelo general: N unidades de cada recurso Solicitud de varias unidades de un recurso Ejemplos: sistemas con varias impresoras, la memoria,
etc. Ejemplo: Memoria con 450KB disponibles.
Interbloqueos en sistemas informáticos (8) Recursos expropiables o noexpropiables
Algunas soluciones basadas en expropiación Salvar el estado del recurso y asignarlo a otro proceso. No siempre es posible eficientemente: p. ej. un plotter.
Ejemplos de recursos expropiables Procesador
Cambio de proceso = Expropiación Estado del procesador copiado a BCP.
Memoria virtual Reemplazo = Expropiación Contenido de la página copiado a swap
Ejemplo de interbloqueo P1 espera por el procesador y tiene asignado el floppy. P2 tiene asignado el procesador y solicita el floppy. ¿Cómo lo resuelve el SO?
Modelado del interbloqueo Desde el punto de vista del interbloqueo se distinguen:
Un conjunto de procesos o threads. Conjunto de recursos reutilizables y exclusivos (N unidades por
recurso) Relaciones entre procesos y recursos
Asignación: Número de unidades asignadas a cada proceso Pendientes: Número de unidades pedidas pero no asignadas por
proceso. Primitivas genéricas:
Solicitud (R1[U1], …, Rn[Un]) U1 unidades del recurso 1, U2 unidades del recurso 2, etc. Si todos disponibles se concederá Sin no, se bloquea pero sin reservar ningún recurso.
Liberación (R1[U1], …, Rn[Un]) Puede causar desbloqueo de otros procesos
Carácter dinámico del sistema Procesos y recursos aparecen y desaparecen
Modelado del interbloqueo (2)
Representación mediante un grafo de asignación: Nodos {N}: Procesos {P} + Recursos {R}
Asociado a cada Ri un valor que indica el número de unidades existentes.
Aristas {A}: Asignación (Ri→Pj): Pj tiene asignada 1 unidad de Ri
Unidades asignadas de Rj ≤ unidades existentes Solicitud (Pi→Rj): Pj tiene pedida y no concedida 1 unidad de Ri
Solicitud de recursos de Pi: ¿Todos disponibles? Sí: Por cada Rj tantas aristas Ri→Pj como unidades solicitadas No: Por cada Rj tantas Pi→Rj como unidades solicitadas
Cuando disponibles se cambia a Ri→Pj
Liberación de recursos de Pi: Eliminar aristas Ri→Pj correspondientes
Modelado del interbloqueo (3)
Ejemplo de representación con un grafo y múltiples unidades por recurso
Modelado del interbloqueo (4)
Ejemplo de representación con un grafo y una unidade por recurso
Modelado del interbloqueo (5) Representación matricial
Se utiliza una matriz de solicitud S, una matriz de asignación A y un vector E de recursos existentes en el sistema.
Siendo p el número de procesos y r el de recursos se tiene que: A es de tamaño p x r, donde A[i,j] especifica cuántas unidades del
recurso j están asignadas al proceso i. S es de tamaño p x r, donde S[i,j] especifica cuántas unidades del
recurso j está esperando el proceso i. E es de tamaño r, donde E[i] especifica cuántas unidades del recurso
i existen. Solicitud de recursos de Pi. ¿Todos disponibles?
Sí: Por cada Rj, A[i,j] = A[i,j] + Uj (Unidades solicitadas de Rj) No: Por cada Rj, S[i,j] = S[i,j] + Uj
Cuando disponibles se resta Uj de S[i,j] y se suma a A[i,j]
Liberación de recursos de Pi
Por cada Rj, A[i,j] = A[i,j] - Uj
Modelado del interbloqueo (6)
Ejemplo de representación matricial y múltiples unidades por recurso.
Modelado del interbloqueo (7)
Ejemplo de representación matricial y una unidad por recurso. Cuatro procesos (P1, P2, P3 y P4) y tres recursos (R1(1), R2(1) y R3(1))
Definición y caracterización del interbloqueo Conjunto de procesos tal que cada uno está
esperando un recurso que sólo puede liberar (generar, si consumibles) otro proceso del conjunto.
Condiciones para el interbloqueo (Coffman) Exclusión mutua. Recursos de uso exclusivo. Retención y espera. Mientras el proceso espera por
recursos pedidos mantiene los ya asignados. Sin expropiación. No se expropian recursos asignados. Espera circular. Existe lista circular de procesos tal que
cada proceso espera por recurso que tiene siguiente proceso.
Las condiciones anteriores son necesarias pero no suficientes, sin embargo, para que interbloqueo existe tienen que cumplirse.
Definición y caracterización del interbloqueo (2) Condición necesaria y suficiente para el interbloqueo.
Idea base: Visión “optimista” del estado actual. Proceso no bloqueado debería devolver recursos en el futuro. Recursos liberados desbloquearían otros procesos. Esos procesos desbloqueados liberarían recursos desbloqueando a
otros procesos, y así sucesivamente. Reducción del sistema por proceso P
Si se pueden satisfacer necesidades de P con recursos disponibles se obtiene un nuevo estado hipotético donde P ha liberado todos sus recursos.
Condición necesaria y suficiente Sí no existe una secuencia de reducciones desde el estado actual
que incluya a todos los procesos entonces existe un interbloqueo. Los procesos involucrados en el interbloqueo serán aquellos que no
estén involucrados en una secuencia de reducción.
Definición y caracterización del interbloqueo (3) ¿Es posible reducir los siguientes casos?
Caso 1 Caso 2
Tratamiento del interbloqueo Las técnicas para tratar el interbloqueo se pueden clasificar en tres:
Detección y recuperación. Dejar que se produzca, detectarlo y recuperarse del mismo. El coste del algoritmo + perdida del trabajo realizado afecta el
rendimiento del sistema. Prevención. Asegura que no ocurra fijando reglas para pedir
recursos. La aplicación de las reglas conlleva a una infrautilización de los recursos
ya que se deben pedir antes de utilizarlos. Predicción. Asegura que no ocurre basándose en necesidades
futuras de los procesos. No es fácil deducir el futuro. La aplicación de algoritmos de predicción implica coste de rendimiento y
también infrautilización de los recursos. Ignorar el problema. Utilizada por la mayoría de los SO
Dada la baja probabilidad de que ocurra y el coste que conlleva evitarlo.
Detección y recuperación del interbloqueo Como su nombre lo indica, consta de dos
fases: Fase de detección
Se debe ejecutar un algoritmo que determine si el estado actual del sistema está libre de interbloqueos y que, en caso de que no lo esté, identifique que procesos están involucrados.
Fase de recuperación Una vez detectado el interbloqueo, se debe aplicar una
acción que lo elimine. Este algoritmo decide que procesos elimina.
Detección y recuperación del interbloqueo (2) Algoritmo de detección para una representación mediante un grafo.
S = Ø; /*Secuencia de reducción. Inicialmente vacía*/
D = {Conjunto de procesos desbloqueados y no incluidos en S};
Mientras (D != Ø){/*Se puede reducir por cualquier proceso de D*/Pi = primer elemento de D;Reducir grafo por Pi;añadir Pi a S y eliminarlo de D;Determinar qué procesos se desbloqueanpor la reducción y añadir a D;
}
Si (S == P) /*La secuencia contiene todos los procesos del sistema*/No hay interbloqueo
Si noLos procesos en el conjunto P-S están en un interbloqueo
Detección y recuperación del interbloqueo (3) Ejemplo:
N = {P1, P2, P3, P4, R1(1), R2(1), R3(1)} A = {R1→P1, R2→P2, P2→R1, P3→R2, R3→P4, P1→R2}
Estado inicial S = Ø y D = {P4} Reducción del grafo por P4. El grafo reducido resultante es: A
= {R1→P1, R2→P2, P2→R1, P3→R2,P1→R2} Se añade el proceso a la secuencia de reducción S = {P4} Como no se desbloquea ningún proceso, D está vacío por lo
que termina el ciclo. Como S no incluye a todos los procesos, en el sistema hay un
interbloqueo que afecta a los procesos del sistema que no están en S: P1, P2, P3.
Detección y recuperación del interbloqueo (4) Algoritmo de detección para una representación matricial.
Detección y recuperación del interbloqueo (5)
Ejemplo:
Detección y recuperación del interbloqueo (6) Activación del algoritmo de detección
Frecuencia con que se ejecuta El algoritmo tiene un costo, sin embargo cuanto antes
se detecte mejor. Supervisión continua
Por cada petición que no puede satisfacerse Puede tener coste demasiado alto
Supervisión periódica Guiada por tiempo y/o detección de síntomas
Ej. Alto grado de multiprogramación .
Detección y recuperación del interbloqueo (7) Recuperación del interbloqueo
Una vez detectado hay que eliminarlo Seleccionar sucesivamente procesos involucrados
quitándoles sus recursos hasta eliminar el interbloqueo. Alternativas
“Retroceder en el tiempo”. Requiere SO con puntos de recuperación.
Abortar el proceso perdiendo todo su trabajo realizado Criterio de selección de procesos basado en:
Prioridad, Número de recursos asignados, Tiempo de ejecución, etc.
Prevención del interbloqueo
Se trata de asegurar que nunca se pueden producir interbloqueos.
Con evitar una de las cuatro condiciones que provocan los interbloqueos basta para asegurar que no ocurrirá. La “exclusión mutua” y “sin expropiación” son
condiciones rígidas y dependen del carácter intrínseco de los recursos.
La “retención y espera” así como la “espera circular” son más apropiadas para plantear algoritmos de prevención.
Prevención del interbloqueo (2) Retención y espera
Una primera estrategia consistiría en hacer que cada programa solicite al principio de su ejecución y de forma simultánea todos los recursos que va a necesitar.
Una segunda estrategia sería que un proceso solo puede solicitar recursos si no tiene ninguno asignado. Y deberá pedir simultáneamente solo aquellos cuyo uso se traslape en el tiempo.
Ambas estrategias provocan infrautilización de los recursos.
Prevención del interbloqueo (3) Espera circular
Establece un orden total de los recursos del sistema según el uso más frecuente.
Restricción: Proceso solo puede pedir recursos en orden.
Conlleva infrautilización Para el ejemplo anterior:
Si A < B < C < D → El proceso pide justo cuando lo necesita.
Si A > B > C > D → El proceso pide todo en t1
Predicción del interbloqueo
Existe un “punto de no retorno” a partir del cual el interbloqueo es inevitable.
Ejemplo: Si P1 y P2 obtienen su primer recurso
habrá interbloqueo. Se evita conociendo a priori el plan de
peticiones de cada proceso. No se concede una de esas peticiones
aunque existan recursos disponibles. El sistema siempre debe estar en un
“estado seguro”.
Predicción del interbloqueo (2)
Concepto de “estado seguro” Aunque todos los procesos solicitasen en este momento
sus necesidades máximas, existe un orden secuencial de ejecución tal que cada proceso pueda obtenerlas.
Estrategia similar a la reducción del sistema, solo que se utilizan necesidades máximas en lugar de peticiones actuales.
Como no se conoce la información sobre la utilización real de los recursos pueden considerarse inseguros estados que nunca provocarían interbloqueo. Ejemplo:
Predicción del interbloqueo (3)
El algoritmo del banquero de Dijkstra es el algoritmo de predicción más conocido y utiliza la representación matricial. Requiere una matriz más, llamada de necesidad, N de p x r:
N[i,j] almacena cuantas unidades adicionales de Rj puede necesitar Pi.
Es la diferencia entre necesidades máximas y unidades asignadas. Refleja tanto solicitudes no concedidas como futuras
La matriz S queda inmersa en N y no la utiliza el algoritmo Inicialmente tiene las necesidades máximas de cada proceso.
Solicitud de recursos de Pi: ¿Todos disponibles? Sí: Por cada Rj, A[i,j] = A[i,j] + Uj y N[i,j] = N[i,j] – Uj
No: Sólo se actualiza S (Que no se usa en el algoritmo) Cuando disponibles A[i,j] = A[i,j] + Uj y N[i,j] = N[i,j] – Uj
Liberación de recursos de Pi Por cada Rj, A[i,j] = A[i,j] - Uj y N[i,j] = N[i,j] + Uj
Predicción del interbloqueo (4)
Algoritmo del banquero Determina si es un “estado seguro”
Predicción del interbloqueo (5)
Estrategia de predicción Se calcula un nuevo estado provisional transformando A y N Se aplica el algoritmo del banquero sobre el nuevo estado Si es seguro, se asignan recursos y el nuevo estado se hace
permanente Si no, se bloquea el proceso sin asignarle los recursos y se
restaura el estado previo. Ejemplo del algoritmo del banquero:
Estado actual del sistema (es seguro):
Predicción del interbloqueo (6)
Continuación del ejemplo del algoritmo del banquero …
Predicción del interbloqueo (7)
Continuación del ejemplo del algoritmo del banquero …
Predicción del interbloqueo (8)
Limitaciones de estrategias de predicción Conocimiento a priori de las necesidades
máximas Difícil de obtener Basado en el peor caso posible
Necesidades máximas no expresan uso real de los recursos
Infrautilización de los recursos Se niega el uso de recursos aunque esté libre
Tratamiento del interbloqueo en los SO La mayoría ignora el problema o no da una solución
general Se hace distinción entre dos tipos de recursos
Recursos internos (propios del SO) Usados por un proceso en modo sistema Uso restringido a ejecución de una llamada Ej. Semáforo interno para acceder a tiempo de proceso Un interbloqueo puede causar el colapso total del sistema
Recursos de usuario Usados por un proceso en modo usuario Uso durante tiempo impredecible Ej. Semáforo de aplicación El interbloqueo afecta únicamente a los procesos y recursos
involucrados.
Tratamiento del interbloqueo en los SO (2) Tratamiento de los recursos internos
El código del SO es algo que apenas se modifica Se puede estudiar a priori el uso de los recursos
Si se da un Interbloqueo existe un error de programación del SO El Uso de estrategias de prevención es adecuado
Tratamiento de los recursos de usuario Código de procesos que usan recursos es impredecible No hay tratamiento general para todos los recursos La prevención conlleva infrautilización La predicción tiene la dificultad de conocer a priori La detección y recuperación provoca demasiada sobre carga
top related