Sistemas Operativos Oscar Bedoya [email protected] http://eisc.univalle.edu.co/~oscarbed/SO/ * Bloqueos mutuos - Prevenir - Evitar - Detectar y recuperar - Algoritmo del avestruz Parcial1: Martes 9 de Octubre Bloqueos mutuos • Windows y Unix se basan en semáforos para hacer sincronización de recursos del sistema • Linux utiliza spinlocks Bloqueos mutuos Semáforos • Suponga que tiene tres impresoras y dos lectores de CD para sincronizar, cuántos semáforos necesita? Bloqueos mutuos Semaforo impresoras=new Semaforo(3); Semaforo lectores=new Semaforo(2); Proceso2: Proceso1: public void run(){ public void run(){ } ... ... impresoras.P(); lectores.P(); lectores.P(); impresoras.P(); leerDatosCD(); leerDatosCD(); imprime(“a”); imprime(“I”) lectores.V(); impresoras.V(); impresoras.V(); lectores.V(); } Semaforo impresoras=new Semaforo(1); Semaforo lectores=new Semaforo(1); Bloqueos mutuos Proceso1 Proceso2 impresoras.P() lectores.P() lectores.P() impresoras.P() Bloqueos mutuos Proceso1 impresoras.P() lectores.P() Proceso2 lectores.P() impresoras.P() Bloqueos mutuos Proceso1 impresoras.P() lectores.P() Proceso2 lectores.P() impresoras.P() Bloqueos mutuos Proceso1 impresoras.P() lectores.P() Proceso2 lectores.P() impresoras.P() Bloqueos mutuos Proceso1 Proceso2 Bloqueo mutuo: un conjunto de procesos se encuentra en un estado de bloqueo mutuo cuando cada proceso del conjunto está esperando un evento que sólo puede ser provocado por otro proceso en el mismo conjunto Bloqueos mutuos Proceso1 Proceso2 Bloqueos mutuos Proceso1 Proceso2 Los bloqueos no se solucionan con el paso del tiempo Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo • Exclusión mutua • Retención y espera • No apropiación • Espera circular Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo Exclusión mutua: debe haber por lo menos un recurso al que intentan acceder varios procesos. Solo un proceso puede usarlo en un momento dado Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo Retención y espera: debe existir un proceso que esté reteniendo por lo menos un recurso y esté esperando adquirir recursos adicionales que en ese momento estén siendo retenidos por otros procesos Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo No apropiación: un recurso sólo se libera voluntariamente por el proceso que lo está reteniendo Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo Espera circular: existe un conjunto de n procesos en espera {P0, P1, …, Pn-1} tal que P0 esté esperando un recurso que está retenido por P1, P1 espera por un recurso retenido por P2,…, y Pn-1 espera por un recurso que tiene P0 Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo Acá no hay espera circular Bloqueos mutuos Condiciones necesarias para un bloqueo mutuo • Exclusión mutua • Retención y espera • No apropiación • Espera circular Bloqueos mutuos Gráfica de asignación de recursos Proceso1 Proceso2 La gráfica de asignación de recursos permite analizar* si en la configuración actual del sistema existen bloqueos mutuos Bloqueos mutuos Gráfica de asignación de recursos Procesos: P1 P2 Recursos: R1 R2 Una sola instancia de R1 Tres instancias de R2 Bloqueos mutuos Gráfica de asignación de recursos Procesos: P1 P2 R1 Recursos: R1 R2 Una sola instancia de R1 Tres instancias de R2 R2 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 Arista de solicitud: PR Arista de asignación: RP P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 Arista de solicitud: P1R1 Arista de asignación: R1P2 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 Arista de solicitud: P2R4 Arista de asignación: R4P3 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, P3R4} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, P3R4} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 E={P3R3, R3P3} R3 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 E={P3R3, R3P3} R3 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 E={P3R3, R3P3} R3 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 E={P3R3, R3P3} R3 P3 R4 Cuando se concede el recurso, se deja únicamente la arista de asignación Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3} Bloqueos mutuos Gráfica de asignación de recursos • Es un grafo dirigido donde los nodos pueden ser de dos tipos: - {P1, P2,…, Pn} que denotan procesos y se representan mediante círculos - {R1, R2, …, Rm} que denotan recursos y se representan mediante cuadrados • Las aristas también pueden ser de dos tipos: - De solicitud, va de un proceso a un recurso, PiRj - De asignación, va de un recurso a un proceso, RjPi Bloqueos mutuos Gráfica de asignación de recursos Considere la siguiente distribución de procesos y recursos: • P={P1, P2, P3} • R={R1, R2, R3, R4} • E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3} y se cuenta con las siguientes cantidades de instancias de cada recurso: R1:1 R2:2 R3:1 R4:3 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 Indique si se presenta bloqueo mutuo P2 R2 E={P1R1, P1R2, P2R1, P2R2, R1P2, R2P1} Bloqueos mutuos Gráfica de asignación de recursos R1 Hay bloqueo P1 P2 R2 E={P1R1, P1R2, P2R1, P2R2, R1P2, R2P1} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 Indique si se presenta bloqueo mutuo P2 R2 Bloqueos mutuos Gráfica de asignación de recursos R1 No hay bloqueo P1 P2 R2 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 Bloqueos mutuos Gráfica de asignación de recursos R1 R3 Hay bloqueo P1 P2 R2 P3 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 R3 Hay bloqueo P1 P2 R2 P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 P3 R4 Si hay una sola instancia por recurso, un ciclo indica que hay bloqueo Bloqueos mutuos Gráfica de asignación de recursos R1 P1 Indique si se presenta bloqueo mutuo P2 R2 P3 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 Esta distribución no implica un bloqueo mutuo, eventualmente se puede conceder el recurso R2 a P2 Un bloqueo mutuo no se soluciona con el paso del tiempo R2 P3 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 P3 Si hay una varias instancias, se verifica si algún proceso tiene asignados todos sus recursos, si ninguno los tiene, entonces hay bloqueo Bloqueos mutuos Gráfica de asignación de recursos R1 P1 Indique si se presenta bloqueo mutuo P2 R2 P3 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 Indique si se presenta bloqueo mutuo P2 R2 Bloqueos mutuos Bloqueos mutuos • Si la gráfica no contiene ciclos, entonces no hay bloqueo mutuo • Si la gráfica contiene ciclos, puede existir bloqueo mutuo - Si hay una sola instancia por recurso, entonces si hay bloqueo - Si hay varias instancias por recurso, se debe verificar si algún proceso tiene asignados todos sus recursos Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 Indique si se presenta bloqueo mutuo P3 R4 Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 No hay bloqueo porque P3 tiene todos sus recursos asignados P3 R4 Bloqueos mutuos Indique si se presenta bloqueo mutuo Gráfica de asignación de recursos R1 P1 R2 P3 P4 P2 R3 R4 E={P1R1, P1R2, P1R4, P2R3, P2R4, P3R1, P3R2, P3R3, P4R2, P4R4, R1P3, R2P1, R2P4, R3P3, R4P2} Bloqueos mutuos Si hay bloqueo mutuo Gráfica de asignación de recursos R1 P1 R2 P3 P4 P2 R3 R4 E={P1R1, P1R2, P1R4, P2R3, P2R4, P3R1, P3R2, P3R3, P4R2, P4R4, R1P3, R2P1, R2P4, R3P3, R4P2} Bloqueos mutuos Indique si se presenta bloqueo mutuo Gráfica de asignación de recursos R1 P1 R2 P2 P3 R3 E={P1R1, P1R2, P2R1, P2R2, P2R3, P3R2, P3R3, R1P2, R2P1, R2P3, R3P3} Bloqueos mutuos Gráfica de asignación de recursos No hay bloqueo porque P3 tiene todos sus recursos asignados R1 P1 R2 P2 P3 R3 E={P1R1, P1R2, P2R1, P2R2, P2R3, P3R2, P3R3, R1P2, R2P1, R2P3, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 R3 P2 R2 Indique si se presenta bloqueo mutuo P3 R4 E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R2, P3R3, R1P2, R2P2, R2P1, R3P3} Bloqueos mutuos Gráfica de asignación de recursos R1 P1 P2 R2 Si hay bloqueo mutuo R3 P3 R4 E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R2, P3R3, R1P2, R2P2, R2P1, R3P3} Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada* Bloqueos mutuos No hacer nada (Algoritmo del avestruz) • Un bloqueo puede ocurrir con muy poca frecuencia, en promedio uno cada año • Hacer caso omiso del problema bajo el supuesto de que la mayoría de los usuarios preferirán un bloqueo mutuo ocasional en lugar de una regla que restrinja a todos los usuarios el acceso a recursos que un momento dado están libres Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Bloqueos mutuos Prevenir Intenta prevenir alguna de las cuatro condiciones necesarias Intenta prevenir: • Exclusión mutua • Retener y esperar • No apropiación • Espera circular public class Mesa{ int cantidad; Semaforo cajasDisponibles=new Semaforo(0); Semaforo mutex=new Semaforo(1); public Mesa(){ cantidad=0; } public void colocarCaja(){ mutex.P(); cantidad = cantidad+1; mutex.V(); cajasDisponibles.V(); } public void tomarCajas(){ cajasDisponibles.P(); cajasDisponibles.P(); mutex.P(); cantidad = cantidad-2; mutex.V(); } } ¿Cómo se garantiza la exclusión mutua en este programa? Bloqueos mutuos Prevenir Exclusión mutua • Intentaría eliminar los mutex • Puede llevar a datos inconsistentes Bloqueos mutuos Prevenir Retener y esperar • Obligar a que cada proceso solicite los recursos que va a necesitar y se intentarán asignar todos antes de iniciar su ejecución Bloqueos mutuos Prevenir Retener y esperar Suponga que un proceso necesita: - Copiar datos de la USB a disco - Ordenar el archivo en el disco - Imprimir los resultados • Problemas de inanición Bloqueos mutuos Prevenir No apropiación Si un proceso que está reteniendo algunos recursos solicita otro que no le puede ser asignado inmediatamente, se le retiran los recursos que actualmente está reteniendo Bloqueos mutuos Prevenir Espera circular • Para evitar la espera circular se hace un ordenamiento de todos los tipos de recursos de tal forma que cada proceso solicite recursos en un orden creciente de numeración Recurso Valor Lector USB 1 Lector CD/DVD 2 Disco 3 Impresora 4 Bloqueos mutuos Proceso1: cargar de CD un archivo a disco y luego imprimir Proceso2: cargar de USB a disco y luego imprimir Recurso Valor Lector USB 1 Lector CD/DVD 2 Disco 3 Impresora 4 Bloqueos mutuos Proceso1: {lectorCD, disco, impresora} Proceso2: {lectorUSB, disco, impresora} Recurso Valor Lector USB 1 Lector CD/DVD 2 Disco 3 Impresora 4 Bloqueos mutuos Proceso1: {disco, impresora, lectorCD} Proceso2: {impresora, disco, lectorUSB} Recurso Valor Lector USB 1 Lector CD/DVD 2 Disco 3 Impresora 4 Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir Intenta prevenir: • Exclusión mutua • Evitar • Retener y esperar • Detectar y recuperar • No apropiación • No hacer nada • Espera circular Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Bloqueos mutuos Evitar • Requiere tener la información completa del sistema en términos de procesos, recursos y asignaciones Bloqueos mutuos Evitar • Requiere tener la información completa del sistema en términos de procesos, recursos y asignaciones • R={R1,R2,R3} • P={P1,P2} • E={P1R1, P2R1, P2R2, R1P2, R2P2} Bloqueos mutuos Evitar • Requiere tener la información completa del sistema en términos de procesos, recursos y asignaciones • R={R1,R2,R3} • P={P1,P2} • E={P1R1, P2R1, P2R2, R1P2, R2P2} Algoritmo para evitar bloqueos * Solamente funciona para análisis donde se tiene una sola instancia por recurso Bloqueos mutuos Evitar • Requiere tener la información completa del sistema en términos de procesos, recursos y asignaciones • R={R1,R2,R3} • P={P1,P2} • E={P1R1, P2R1, P2R2, R1P2, R2P2} • D={P2R2, P1R3} (demanda) Algoritmo para evitar bloqueos Bloqueos mutuos Evitar • Una arista de demanda PiRj indica que el proceso Pi puede solicitar el recurso Rj en algún momento en el futuro R1 El proceso P2 puede solicitar el recurso R2 en el futuro P1 P2 R2 • R={R1,R2} • P={P1,P2} • E={P1R1,P2R1,R1P1} • D={P1R2,P2R2}(demanda) Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 P1 P2 R2 Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 P1 El algoritmo para evitar bloqueos se aplica cuando una arista de demanda se convierte en solicitud P2 R2 Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 P1 P2 R2 En caso de que P2 solicite R2, se puede atender la solicitud? Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 R1 P1 P2 R2 P1 P2 R2 Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 R1 P1 P2 P1 R1 P2 P1 P2 ? R2 R2 R2 Bloqueos mutuos • Suponga que P2 solicita a R2, aunque R2 esté libre no se puede asignar a P2 ya que crearía un ciclo en la gráfica lo cual indica un estado inseguro R1 R1 P1 P2 P1 R1 P2 P1 P2 ? R2 R2 R2 Si se asignara R2 a P2 se crearía un ciclo, esto es un estado inseguro para el sistema, por lo tanto no se puede atender la solicitud Bloqueos mutuos • Suponga que el proceso Pi solicita el recurso Rj,. La solicitud se puede atender solo si la conversión de la arista de solicitud PiRj en una arista de asignación RjPi no resulta en la formación de un ciclo en la gráfica de asignación de recursos Bloqueos mutuos R1 P1 R3 P2 P3 R2 • ¿En caso de que P2 solicite R2, se puede atender la solicitud? • ¿En caso de que P3 solicite R2, se puede atender la solicitud? Bloqueos mutuos R1 P1 R3 P2 P3 R2 • ¿En caso de que P2 solicite R2, se puede atender la solicitud? Bloqueos mutuos R1 P1 R3 P2 P3 R2 • ¿En caso de que P2 solicite R2, se puede atender la solicitud? Bloqueos mutuos R1 R3 P1 P2 P3 ? R2 • No se puede atender la solicitud porque genera un estado inseguro (crea un ciclo) Bloqueos mutuos R1 P1 R3 P2 P3 R2 • ¿En caso de que P3 solicite R2, se puede atender la solicitud? Bloqueos mutuos R1 P1 R3 P2 P3 R2 • ¿En caso de que P3 solicite R2, se puede atender la solicitud? Bloqueos mutuos R1 P1 R3 P2 P3 ? R2 • ¿En caso de que P3 solicite R2, se puede atender la solicitud? Si se puede atender la solicitud, no genera un estado inseguro Bloqueos mutuos R1 P1 R3 P2 P3 R2 ¿En caso de que P1 solicite R2, se puede atender la solicitud? ¿En caso de que P2 solicite R3, se puede atender la solicitud? Bloqueos mutuos R1 P1 R3 P2 P3 ? R2 ¿En caso de que P1 solicite R2, se puede atender la solicitud? No se puede atender, quedaría en un estado inseguro (se crea un ciclo) Bloqueos mutuos R1 P1 R3 P2 P3 R2 ¿En caso de que P2 solicite R3, se puede atender la solicitud? Bloqueos mutuos R1 R3 ? P1 P2 P3 R2 ¿En caso de que P2 solicite R3, se puede atender la solicitud? No se puede atender, quedaría en un estado inseguro (se crea un ciclo) Bloqueos mutuos Considere los siguientes recursos, procesos, asignaciones y demanda: • R={R1,R2,R3} • P={P1,P2} • D={P2R3, P1R3} (demanda) • E={P1R1, P2R1, P2R2, R1P2, R2P2} ¿En caso de que P1 solicite R3, se puede atender la solicitud? ¿En caso de que P2 solicite R3, se puede atender la solicitud? Bloqueos mutuos R1 R2 P1 P2 R3 Considere los siguientes recursos, procesos, asignaciones y demanda: • R={R1,R2,R3} • P={P1,P2} • D={P2R3, P1R3} (demanda) • E={P1R1, P2R1, P2R2, R1P2, R2P2} Bloqueos mutuos R1 R2 P1 P2 R3 ¿En caso de que P1 solicite R3, se puede atender la solicitud? Bloqueos mutuos R1 R2 P1 P2 ? R3 ¿En caso de que P1 solicite R3, se puede atender la solicitud? No se puede atender porque genera un estado inseguro Bloqueos mutuos R1 R2 P1 P2 R3 ¿En caso de que P2 solicite R3, se puede atender la solicitud? Bloqueos mutuos R1 R2 P1 P2 R3 ? ¿En caso de que P2 solicite R3, se puede atender la solicitud? Si se puede atender porque no genera un estado inseguro Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Arista de demanda Algoritmo para evitar bloqueos mutuos Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Bloqueos mutuos • Algoritmo para detectar bloqueos mutuos • Estrategias para la recuperación de bloqueos Bloqueos mutuos Detección • Se utiliza una variante de la gráfica de asignación de recursos denominada gráfica de espera Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera R1 P1 P1 P2 P2 Una arista PiPj existe en una gráfica de espera si y solo si la gráfica correspondiente de asignación de recursos contiene dos artistas PiRq y RqPj Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera R1 P1 P1 P2 P2 P1 espera por algo que tiene P2 Una arista PiPj existe en una gráfica de espera si y solo si la gráfica correspondiente de asignación de recursos contiene dos artistas PiRq y RqPj Bloqueos mutuos Gráfica de asignación de recursos P3 R1 R2 P1 P2 Gráfica de espera Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 ¿Existe bloqueo mutuo? Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P3 P3 R1 R2 P1 P1 P2 P2 Existe un bloqueo mutuo en el sistema si y solo si la gráfica de espera contiene un ciclo Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P5 R1 R3 P1 P5 R4 P2 P1 P3 P4 R2 R5 P2 P4 P3 Bloqueos mutuos Gráfica de asignación de recursos Gráfica de espera P5 R1 R3 P1 P5 R4 P2 P1 P3 P3 P4 Existe un bloqueo mutuo en el sistema si y solo si la gráfica de espera contiene un ciclo P4 R2 P2 R5 Bloqueos mutuos Considere los siguientes recursos, procesos y asignaciones: • R={R1, R2, R3} • P={P1, P2, P3} • E={P1R1, P1R2, P1R3, P2R2, P2R1, P3R3, R1P2, R3P1, R2P1} • Muestre la gráfica de asignación de recursos • Muestre la gráfica de espera e indique si existe bloqueo Bloqueos mutuos Gráfica de espera Gráfica de asignación de recursos P2 R1 P3 R2 P1 P2 R3 P1 Complete la gráfica de espera e indique si existe bloqueo P3 Bloqueos mutuos Gráfica de espera Gráfica de asignación de recursos P2 R1 P3 R2 P1 P1 R3 P2 P3 Bloqueos mutuos Considere los siguientes recursos, procesos y asignaciones: • R={R1, R2, R3, R4} • P={P1, P2, P3} • E={P1R1, P1R2, P1R3, P2R3, P2R1, P2R2, P3R4, P3R3, R1P2, R2P1, R3P3, R4P1} • Muestre la gráfica de asignación de recursos • Muestre la gráfica de espera e indique si existe bloqueo Bloqueos mutuos Gráfica de asignación de recursos R1 Gráfica de espera R3 P1 P1 P2 R2 P3 R4 P2 P3 Bloqueos mutuos Detección • Para detectar bloqueos mutuos el sistema necesita dar mantenimiento a la gráfica de espera y periódicamente invocar un algoritmo de búsqueda ciclos Bloqueos mutuos Recuperación Una vez detectado un bloqueo mutuo se tienen dos opciones para la recuperación: • Terminación de procesos • Apropiación de recursos Bloqueos mutuos Recuperación Terminación de procesos Se puede realizar de dos formas: • Abortar todos los procesos a la vez • Abortar un proceso a la vez hasta que se elimine el bloqueo Bloqueos mutuos Recuperación Terminación de procesos Se puede realizar de dos formas: • Abortar todos los procesos a la vez • Abortar un proceso a la vez hasta que se elimine el bloqueo Para seleccionar un proceso a abortar se pueden tener en cuenta los siguiente criterios: - Prioridad - Tiempo de ráfaga restante - Cantidad y tipo de recursos utilizados - Cantidad de recursos que le faltan Bloqueos mutuos Recuperación Apropiación de recursos Sucesivamente se apropian algunos recursos de los procesos y se dan tales recursos a otros procesos hasta que el bloqueo se termine. Se tienen en cuenta los siguientes criterios: • Selección de una víctima. ¿Qué recursos y qué procesos se van a apropiar? Inanición. Puede surgir inanición al siempre apropiar recursos del mismo proceso. Se establece que un proceso puede ser elegido victima sólo un número finito de veces Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar Detectar. Gráfica de espera • No hacer nada Recuperar. Terminación de procesos Apropiación de recursos Bloqueos mutuos Métodos para manejar bloqueos mutuos Existen cuatro métodos para manejar el problema de bloqueos mutuos: • Prevenir • Evitar • Detectar y recuperar • No hacer nada Algoritmo del avestruz Bloqueos mutuos Algoritmo del avestruz • Un bloqueo puede ocurrir con muy poca frecuencia, en promedio uno cada año • Hacer caso omiso del problema bajo el supuesto de que la mayoría de los usuarios preferirán un bloqueo mutuo ocasional en lugar de una regla que restrinja a todos los usuarios el acceso a recursos que un momento dado están libres Bloqueos mutuos • Windows y Unix se basan en semáforos para hacer sincronización de recursos del sistema • Linux utiliza spinlocks - En todos los casos se utiliza el algoritmo del avestruz