sistemas operativos unidad 6 interbloqueos (dead lock)

41
Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Upload: raquel-grimaldo

Post on 23-Jan-2015

27 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Sistemas Operativos

Unidad 6 Interbloqueos

(Dead Lock)

Page 2: 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.

Page 3: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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).

Page 4: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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?

Page 5: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 6: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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”) .

Page 7: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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:

Page 8: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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).

Page 9: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 10: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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?

Page 11: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 12: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 13: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Modelado del interbloqueo (3)

Ejemplo de representación con un grafo y múltiples unidades por recurso

Page 14: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Modelado del interbloqueo (4)

Ejemplo de representación con un grafo y una unidade por recurso

Page 15: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 16: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Modelado del interbloqueo (6)

Ejemplo de representación matricial y múltiples unidades por recurso.

Page 17: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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))

Page 18: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 19: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 20: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Definición y caracterización del interbloqueo (3) ¿Es posible reducir los siguientes casos?

Caso 1 Caso 2

Page 21: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 22: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 23: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 24: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 25: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Detección y recuperación del interbloqueo (4) Algoritmo de detección para una representación matricial.

Page 26: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Detección y recuperación del interbloqueo (5)

Ejemplo:

Page 27: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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 .

Page 28: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 29: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 30: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 31: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 32: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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”.

Page 33: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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:

Page 34: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 35: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Predicción del interbloqueo (4)

Algoritmo del banquero Determina si es un “estado seguro”

Page 36: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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):

Page 37: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Predicción del interbloqueo (6)

Continuación del ejemplo del algoritmo del banquero …

Page 38: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

Predicción del interbloqueo (7)

Continuación del ejemplo del algoritmo del banquero …

Page 39: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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

Page 40: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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.

Page 41: Sistemas Operativos Unidad 6 Interbloqueos (Dead Lock)

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