Bloqueos mutuos

Anuncio
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: PR
Arista de asignación: RP
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
Arista de solicitud: P1R1
Arista de asignación: R1P2
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
Arista de solicitud: P2R4
Arista de asignación: R4P3
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, P3R4}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, P3R4}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
P2
R2
E={P3R3, R3P3}
R3
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
P2
R2
E={P3R3, R3P3}
R3
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
P2
R2
E={P3R3, R3P3}
R3
P3
R4
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
P2
R2
E={P3R3, R3P3}
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={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P2R1, P2R3, P3R3, R1P2, R3P3}
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, PiRj
- De asignación, va de un recurso a un proceso, RjPi
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={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3}
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={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
P3
R4
E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R3, R1P2, R2P2, R2P1, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
Indique si se presenta
bloqueo mutuo
P2
R2
E={P1R1, P1R2, P2R1, P2R2, R1P2, R2P1}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
Hay bloqueo
P1
P2
R2
E={P1R1, P1R2, P2R1, P2R2, R1P2, R2P1}
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={P1R1, P1R2, P1R4, P2R3, P2R4, P3R1, P3R2, P3R3,
P4R2, P4R4, R1P3, R2P1, R2P4, R3P3, R4P2}
Bloqueos mutuos
Si hay bloqueo mutuo
Gráfica de asignación de recursos
R1
P1
R2
P3
P4
P2
R3
R4
E={P1R1, P1R2, P1R4, P2R3, P2R4, P3R1, P3R2, P3R3,
P4R2, P4R4, R1P3, R2P1, R2P4, R3P3, R4P2}
Bloqueos mutuos
Indique si se presenta
bloqueo mutuo
Gráfica de asignación de recursos
R1
P1
R2
P2
P3
R3
E={P1R1, P1R2, P2R1, P2R2, P2R3, P3R2, P3R3, R1P2,
R2P1, R2P3, R3P3}
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={P1R1, P1R2, P2R1, P2R2, P2R3, P3R2, P3R3, R1P2,
R2P1, R2P3, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
R3
P2
R2
Indique si se presenta
bloqueo mutuo
P3
R4
E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R2, P3R3, R1P2, R2P2, R2P1, R3P3}
Bloqueos mutuos
Gráfica de asignación de recursos
R1
P1
P2
R2
Si hay bloqueo mutuo
R3
P3
R4
E={P1R1, P1R2, P2R3, P2R1, P2R2, P3R2, P3R3, R1P2, R2P2, R2P1, R3P3}
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={P1R1, P2R1, P2R2, R1P2, R2P2}
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={P1R1, P2R1, P2R2, R1P2, R2P2}
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={P1R1, P2R1, P2R2, R1P2, R2P2}
• D={P2R2, P1R3} (demanda)
Algoritmo
para evitar
bloqueos
Bloqueos mutuos
Evitar
• Una arista de demanda PiRj 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={P1R1,P2R1,R1P1}
• D={P1R2,P2R2}(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 PiRj
en una arista de asignación RjPi 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={P2R3, P1R3} (demanda)
• E={P1R1, P2R1, P2R2, R1P2, R2P2}
¿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={P2R3, P1R3} (demanda)
• E={P1R1, P2R1, P2R2, R1P2, R2P2}
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 PiPj existe en una gráfica de espera si y solo si la
gráfica correspondiente de asignación de recursos contiene dos
artistas PiRq y RqPj
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 PiPj existe en una gráfica de espera si y solo si la
gráfica correspondiente de asignación de recursos contiene dos
artistas PiRq y RqPj
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={P1R1, P1R2, P1R3, P2R2, P2R1, P3R3, R1P2, R3P1, R2P1}
• 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={P1R1, P1R2, P1R3, P2R3, P2R1, P2R2, P3R4, P3R3,
R1P2, R2P1, R3P3, R4P1}
• 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
Descargar