1. Bloqueos Mutuos
Modelo del Sistema
Caracterización de Bloqueos Mutuos
Métodos para Manejar Bloqueos Mutuos
Prevención de Bloqueos Mutuos
Como Evitar Bloqueos Mutuos
Detección de Bloqueos Mutuos
Recuperación de un Estado de Bloqueo Mutuo
Aproximación Combinada para el Manejo de Bloqueos
Mutuos
El Problema de Compartir Recursos
Cuando muchos procesos compiten por
relativamente pocos recursos y el sistema no es
capaz de dar servicio a todos los procesos en el
sistema.
Una carencia de sincronización de
procesos puede dar lugar a dos condiciones
extremas:
El bloqueo mutuo (abrazo mortal)
La inanición
1
2. El Problema del Bloqueo Mutuo
Un conjunto de procesos esta bloqueado cuando cada
uno posee un recurso y esta a la espera de obtener un
recurso poseído por otro proceso del conjunto.
Ejemplo:
El sistema tiene 2 drives de cinta.
P1 y P2 cada uno posee un drive de cinta y cada uno
necesita el otro.
Ejemplo:
Los semáforos A y B, inicializados a 1
P0 P1
wait (A); wait(B)
wait (B); wait(A)
Ejemplo del Cruce del Puente
o el de la escalera de incendios
Trafico solo en una dirección.
Cada sección del puente puede ser visto como un
recurso.
Si un bloqueo mutuo ocurre, este puede ser resuelto si
un carro retrocede (renuncie a recursos).
Varios carros pueden tener que retroceder si el bloqueo
mutuo ocurre.
La inanición es posible.
2
3. Bloqueo Mutuo
El bloqueo mutuo es mas serio que la inanición
(posposición indefinida) porque afecta mas de un
trabajo (la totalidad del sistema, eventualmente).
Los bloqueos mutuos eran poco frecuentes en los
primeros sistemas en batch porque los trabajos incluían
una lista completa de los recursos que necesitaban para
ejecutarse y el sistema operativo se aseguraba que estos
estuvieran libres y asignados antes de poner, al trabajo,
en la cola de LISTOS.
Los bloqueos mutuos se hicieron mas frecuentes con los
sistemas interactivos, porque estos son mas flexibles y
mejoran el uso de recursos al compartirlos en forma
dinámica.
Caracterización de Bloqueos Mutuos
Surge si se presentan simultaneamente las cuatro condiciones:
Exclusión mutua: solo un proceso por vez puede usar el
recurso (solo una persona tiene acceso a un escalón ).
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 otro proceso (la persona se empeña
en no retirarse).
No apropiación: un recurso solo puede ser liberado
voluntariamente por el proceso que lo está reteniendo, una
vez que dicho proceso a completado su tarea (cada
escalón esta asignado al que sube, o al que baja, tanto
tiempo como sea necesario).
Espera circular: (cada persona espera que la otra libere
el escalón) debe existir un conjunto {P0, P1, …, P0} de
procesos en espera, tal que P0 esté esperando un recurso
que está retenido por P1, P1 está esperando un recurso
que está retenido por P2, …, Pn–1 está esperando por un
recurso retenido por Pn, y Pn está esperando por un
recurso retenido por P0 .
3
4. Caracterización de Bloqueos Mutuos
Si se puede eliminar una cualesquiera de las
condiciones para bloqueo mutuo, este se
resolverá.
Es posible prevenir que la cuatro condiciones
se den al mismo tiempo, con lo cual se
evitarían los bloqueos mutuos.
Estas condiciones se pueden modelar utilizando
graficas dirigidas.
Modelado del Sistema
Tipos de recursos R1, R2, . . ., Rm
Ciclos de CPU, espacio de memoria, dispositivos de I/O
Cada tipo de recurso Ri tiene Wi instancias.
Cada proceso utiliza el recurso como sigue:
solicitud
uso
liberación
4
5. Gráfica de Asignación de Recursos
Un conjunto de vértices V y un conjuto de aristas dirigidas E.
V es particionado en dos tipos:
P = {P1, P2, …, Pn}, el conjunto consistente de todos los
procesos en el sistema.
R = {R1, R2, …, Rm}, el conjunto consistente de todos los
tipos de recursos en el sistema.
Arista de petición – arista dirigida P1 → Rj
Arista de asignación –arista dirigida Rj → Pi
Gráfica de Asignación de Recursos(Cont.)
Proceso
Tipo de recurso con 4 instancias
Pi solicita una instancia de Rj
Pi
Rj
Pi está reteniendo una instancia de Rj
Pi
Rj
5
6. Hechos Básicos
Si un gráfico no contiene ciclos ⇒ no existe bloqueo
mutuo.
Si un gráfico contiene un ciclo ⇒
Si solo hay una instancia por tipo de recurso, entonces
se da el bloqueo mutuo.
Si hay varias instancias por tipo de recurso, entonces se
da la posibilidad de bloqueo mutuo.
Ejemplo: Gráfica de Asignación de Recursos
6
7. Gráfica con un Bloqueo Mutuo
Gráfica con un Ciclo pero sin Bloqueo Mutuo
Nota: O bien los recursos se liberan antes que ocurra el bloqueo mutuo;
esto en sistemas donde solo hay una instancia de cada tipo de recurso.
7
8. Métodos para Manejar Bloqueos Mutuos
Podemos utilizar un protocolo para asegurar que el
sistema nunca entrará en un estado de bloqueo
mutuo.
Podemos permitir que el sistema entre en un estado de
bloqueo mutuo y luego hacer una recuperación.
Podemos ignorar el problema y pretender que los
bloqueos mutuos nunca ocurren en el sistema; usado por
la mayoría de los sistemas operativos, incluyendo a
UNIX.
Prevención de Bloqueos Mutuos
Restringir las formas en las que la petición puede ser hecha.
Exclusión Mutua – no requerido por recursos compartidos
(Spool por ejem.); debe de cumplirse en el caso de
recursos que no puedan compartirse (memoria, CPU, o
dispositivos dedicados).
Retener y Esperar – debemos garantizar que, siempre que
un proceso solicite un recurso no retenga algún otro.
Requiere que cada proceso solicite y se le asignen todos sus
recursos antes de iniciar su ejecución ( en el momento de la
creación ),
o permitir que un proceso solicite recursos sólo cuando
no tenga alguno.
Baja utilización de recursos; se da la posibilidad de inanición.
8
9. Prevención de Bloqueos Mutuos(Cont.)
Espera Circular – imponer un ordenamiento total de todos los tipos
de recursos (numerarlos: impresora = 1, disco = 2, etc), y
requerir que cada proceso solicite sus recursos en orden creciente
de enumeración ( ordenamiento jerarquico que obliga a
anticipar el orden en que utilizara los recursos).
No Apropiación –
Si un proceso que está reteniendo algunos recursos solicita otro
recurso que no le puede ser asignado inmediatamente, entonces
todos los recursos que actualmente son retenidos son apropiados
(se liberan implícitamente).
Los recursos apropiados se agregan a la lista de recursos que el
proceso está esperando.
– El proceso se reiniciará solamente cuando pueda volver a
obtener sus antiguos recursos, así como los nuevos que está
solicitando.
Como Evitar Bloqueos Mutuos
Incluso si un sistema operativo no puede eliminar una de las
condiciones de bloqueo mutuo, puede evitar uno.Se requiere que el
sistema tenga alguna información adicional a priori disponible.
El modelo más simple y útil requiere que cada proceso
declare el número máximo de recursos de cada tipo
que puede necesitar.
El algoritmo de evitación de bloqueos mutuos (algoritmo
del banquero) examina dinámicamente el estado de la
asignación de recursos para asegurar que nunca podrá
existir una condición de espera-circular.
El estado (Tabla) de asignación de recursos es
definido por el número de recursos disponibles y de
recursos asignados, y por la máxima demanda de los
procesos.
9
10. Algoritmo del Banquero
A ninguno de los clientes se le concederá un
préstamo que exceda el capital total del banco
A todos los clientes se les dará un limite de crédito
máximo al abrir una cuenta
A ningún cliente se le permitirá que pida prestado
mas allá de su limite
La suma de todos los prestamos no excederá el
capital total del banco
Estado seguro: la institución tiene todavía suficiente dinero
disponible para satisfacer las solicitudes máximas
Estado inseguro: el dinero disponible no puede satisfacer
la solicitud máxima de ningún cliente
En tanto el capital de la institución sea menor que la
cantidad máxima disponible para los prestamos
individuales, no puede garantizar que tendrá
capacidad de cubrir las solicitudes de crédito
Estado Seguro
Cuando un proceso solicita un recurso disponible, el sistema
deberá decidir si la asignación inmediata deja al sistema en
un estado seguro.
Un sistema esta en estado seguro si existe una secuencia
segura de todos los procesos.
La secuencia <P1, P2, …, Pn> es segura si para cada Pi, los
recursos que Pi puede aún solicitar pueden ser satisfechos por
los recursos disponibles actualmente + los recursos retenidos
por todos los otros Pj, con j<I.
Si Pi necesita recursos que no están inmediatamente disponibles,
entonces Pi debe de esperar hasta que todos los Pj hayan
terminado.
Cuando Pj esta terminando, Pi puede obtener recursos
necesarios, ejecutar, regresar recursos asignados, y terminar.
Cuando Pi termina, Pi+1 puede obtener sus recursos necesarios, y
así sucesivamente.
10
11. Hechos Básicos
Si un sistema esta en estado seguro ⇒ no se dan los
bloqueos mutuos.
Si un sistema esta en estado inseguro ⇒ existe la
posibilidad de bloqueos mutuos (candidato excelente).
Si existe evitación ⇒ aseguramos que el sistema nunca
caerá en estado inseguro.
Seguro, Inseguro , Estado de Bloqueo Mutuo
11
12. Detección de Bloqueos Mutuos
Aunque el algoritmo del banquero se ha utilizado en
sistemas de pocos recursos, no siempre resulta practico
para la mayor parte de los sistemas interactivos
El costo por carga general (overhead) incurrida al
ejecutar el algoritmo del banquero puede resultar muy
elevado, ya que debe correr con cada solicitud
Los recursos no se utilizan bien porque el algoritmo
supone el peor caso y, como resultado, conserva
recursos vitales no disponibles como protección contra
estados inseguros
Los bloqueos mutuos se pueden detectar,
elaborando graficas de recursos dirigidos y
buscando ciclos, este algoritmo se puede ejecutar
siempre que sea apropiado: cuando la producción se
ha deteriorado o cuando se queje un usuario o cada
hora, etc.
Gráfica de Asignación de Recursos (Algoritmo)
Arista de demanda Pi → Rj indica que el proceso Pj
puede solicitar el recurso Rj en algún momento en el
futuro; representada por una línea punteada.
Una arista de demanda se convierte en arista de
petición cuando un proceso solicita un recurso.
Cuando un recurso es liberado por un proceso, una
arista de asignación se convierte en arista de demanda.
Los recursos se deben demandar por adelantado en
el sistema.
12
13. Gráfica de Asignación de Recursos para Evitación de
Bloqueos Mutuos
Estado Inseguro en Gráfica de Asignación de Recursos
13
14. Algoritmo del Banquero
Condiciones:
Instancias múltiples.
Cada proceso deberá reclamar por adelantado su
máximo uso de recursos.
Cuando un proceso solicita un recurso puede tener que
esperar.
Cuando un proceso consigue todos sus recursos deberá
de regresarlos en una cantidad de tiempo finita.
Estructuras de Datos para el Algoritmo del
Banquero
n = número de procesos , y m = número de tipos de recursos.
Available: Vector de longitud m. Si available [j] = k,
existen k instancias disponibles del tipo de recurso
Rj .
Max: matriz n x m. Si Max [i,j] = k, entonces el proceso
Pi puede solicitar cuando mucho k instancias del tipo
de recurso Rj.
Allocation: matriz n x m. Si Allocation[i,j] = k entonces Pi
tiene actualmente asignadas k instancias de Rj.
Need: matriz n x m. Si Need[i,j] = k, entonces Pi puede
necesitar k instancias más de Rj para completar su
tarea.
Need [i,j] = Max[i,j] – Allocation [i,j].
14
15. Algoritmo de Seguridad
1. Work y Finish son vectores de longitud m y n,
respectivamente. Inicializamos:
Work = Available
Finish [i] = false for i - 1,3, …, n.
2. Encontrar una i que cumpla con ambas condiciones :
(a) Finish [i] = false
(b) Needi ≤ Work
If no existe tal i, go to 4.
3. Work = Work + Allocationi
Finish[i] = true
go to 2.
4. If Finish [i] == true para toda i, then el sistema se
encuentra en estado seguro.
Algoritmo de Solicitud-Recursos para el Proceso Pi
Request = vector de solicitud para el proceso Pi.
If Requesti [j] = k then el proceso Pi necesita k instancias
del tipo de recurso Rj.
1. If Requesti ≤ Needi go to 2.
Otherwise, inicie condición de error, ya que el proceso ha
exedido su demanda máxima.
2. If Requesti ≤ Available, go to 3.
Otherwise Pi deberá esperar, ya que no hay recursos
disponibles.
3. Simular la asignación de recursos solicitados para Pi por
medio de la modificación del estado como sigue :
Available = Available – Requesti;
Allocationi = Allocationi + Requesti;
Needi = Needi – Requesti;;
• If estado seguro ⇒ los recursos son asignados a Pi.
• If estado inseguro ⇒ Pi debera esperar, y el anterior
estado de solicitud-recursos es reestablecido
15
16. Ejemplo de Algoritmo del Banquero
5 procesos P0 hasta P4; 3 tipos de recursos
A (10 instancias), B (5 instancias), y C (7 instancias).
Instante de tiempo T0:
Allocation Max Available
ABC ABC ABC
P0 010 753 332
P1 200 322
P2 302 902
P3 211 222
P4 002 433
Ejemplo (Cont.)
El contenido de la matriz Need esta definido por:
Max – Allocation.
Need
ABC
P0 743
P1 122
P2 600
P3 011
P4 431
El sistema se encuentra en estado seguro ya que la
secuencia < P1, P3, P4, P2, P0> satisface el criterio de
seguridad.
16
17. Ejemplo: P1 Solicita (1,0,2) (Cont.)
Compruebe que Request ≤ Available; esto es,
(1,0,2) ≤ (3,3,2) ⇒ true.
Allocation Need Available
ABC ABC ABC
P0 0 1 0 743 230
P1 3 0 2 020
P2 3 0 1 600
P3 2 1 1 011
P4 0 0 2 431
El algoritmo de ejecución segura muestra que la secuencia
<P1, P3, P4, P0, P2> satisface el requerimiento de seguridad.
¿Puede la solicitud por (3,3,0) para P4 ser otorgada?
¿Puede la solicitud por (0,2,0) para P0 ser otorgada?
Detección de Bloqueos Mutuos
Permitir al sistema entrar en estado de bloqueo
mutuo
Algoritmo de Detección
Esquema de Recuperación
17
18. Una sola Instancia de cada Tipo de Recurso
Mantener gráfica de espera
Los nodos son procesos.
Pi → Pj I si Pi esta esperando por Pj.
Periódicamente invoca un algoritmo que busca por un
ciclo en la gráfica .
Un algoritmo para detectar un ciclo en una gráfica
requiere de n2 operaciones, donde n es el número de
vértices en la gráfica.
Gráficas de Localización de Recursos y de Espera
Gráfica de Localización de Recursos Gráfica de Espera correspondiente
18
19. Varias Instancias de un Tipo de Recursos
Available: Un vector de longitud m indica el número
de recursos disponibles de cada tipo.
Allocation: Una matriz n x m define el número de
recursos de cada tipo actualmente asignadas a cada
proceso.
Request: Una matriz n x m indica la solicitud actual de
cada proceso.
If Request [ij] = k, then el proceso Pi esta solicitando k
instancias más del tipo de recurso Rj.
Algoritmo de Detección
1. Work y Finish son vectores de longitud m y n,
respectivamente; Inicializamos:
(a) Work = Available
(b) For i = 1,2, …, n,
if Allocationi ≠ 0, then Finish[i] = false;
otherwise, Finish[i] = true.
2. Encuentre un índice i tal que cumpla ambas :
(a) Finish[i] == false
(b) Requesti ≤ Work
If no existe tal i , go to 4.
19
20. Algoritmo de Detección (Cont.)
3. Work = Work + Allocationi
Finish[i] = true
go to 2.
4. If Finish[i] == false, para alguna i, 1 ≤ i ≤ n, then el
sistema está en estado de bloqueo mutuo.
Además, if Finish[i] == false, then Pi está bloqueado .
El algoritmo requiere del orden de O(m x n2) operaciones para
detectar si el sistema se encuentra en estado de bloqueos
mutuos
Ejemplo del Algoritmo de Detección
5 procesos P0 hasta P4 ; 3 tipos de recursos
A (7 instancias), B (2 instancias), y C (6 instancias).
Instante de tiempo T0:
Allocation Request Available
ABC ABC ABC
P0 0 1 0 000 000
P1 2 0 0 202
P2 3 0 3 000
P3 2 1 1 100
P4 0 0 2 002
La secuencia <P0, P2, P3, P1, P4> resultara en Finish[i] = true para
toda i.
20
21. Ejemplo (Cont.)
P2 solicita una instancia adicional del tipo C.
Request
ABC
P0 0 0 0
P1 2 0 1
P2 0 0 1
P3 1 0 0
P4 0 0 2
¿Estado del sistema?
Puede reclamar recursos retenidos por el proceso P0, pero
son insuficientes para ejecutar las solicitudes de otros
procesos.
El bloqueo mutuo existe, consiste de los procesos P1, P2,
P3, y P4.
Uso del Algoritmo de Detección
Cuando , y con que frecuencia , invocarlo depende de:
¿Que tan frecuente es posible que ocurra un bloqueo
mutuo?
¿Cuantos procesos necesitan ser retrocedidos ?
Uno por cada ciclo disjunto
Si el algoritmo de detección es invocado arbitrariamente,
podrá haber muchos ciclos en la gráfica de recursos y así
no estaríamos en capacidad de decir cual de los muchos
procesos en bloqueo mutuo “causaron” el bloqueo.
21
22. Bloqueo Mutuo de Tráfico
Es obvio que se requiere la intervención exterior para eliminar
el bloqueo mutuo: eliminar algún vehículo de la intersección o
hacer que una línea retroceda
Recuperación de un Proceso de Bloqueo Mutuo:
Terminación de Procesos
Abortar todos los procesos bloqueados .
Abortar un proceso cada vez hasta que el ciclo de
bloqueo sea eliminado.
¿En que orden debe escogerse el aborto?
Prioridad del proceso.
Que tanto tiempo el proceso se ha computado, y cuanto le
falta para terminar.
Recursos que el proceso ha usado.
Recursos que el proceso necesita para completar.
Cuantos procesos necesitaran ser terminados.
Es el proceso interactivo o en batch
22
23. Recuperación de un Proceso de Bloqueo Mutuo:
Apropiación de Recursos
Seleccionar una victima – minimizar el costo .
Retroceso – regresar a algún estado seguro,
restablecer el proceso para ese estado.
Inanición – un mismo proceso puede ser escogido
siempre como victima, incluir el número de retrocesos en
el factor de costo.
Aproximación Combinada en el Manejo de Bloqueos
Combine las tres aproximaciones básicas
Prevención
Evitación
Detección
permitiendo el uso de la aproximación optima para cada
uno de los recursos en el sistema.
Partición de recursos en clases ordenadas
jerárquicamente.
Usar la técnica más apropiada para el manejo de bloqueos
mutuos dentro de cada clase.
23
24. Resumen
El sistema operativo debe de asignar de manera dinámica un numero
limitado de recursos y al mismo tiempo evitar los bloqueos mutuos y
la inanición
Métodos pata tratar los bloqueos mutuos.
Prevención: impidiendo las cuatro condiciones se presenten eliminando, al
menos, una de ellas
Exclusión mutua
Retención de recursos
No apropiatividad
Espera circular
Evitación: al identificar
Estados seguros e inseguros y mantener suficientes recursos en
reserva para garantizar la terminación de los trabajos activos
Detección y recuperación: se apoya en la selección de victimas (trabajos
que deben de terminar antes de completar su ejecución y reiniciar desde el
principio
Métodos pata tratar la inanición:
Envejecimiento
24