Concurrencia: Interbloqueo e Inanición Interbloqueo

Anuncio
Interbloqueo
Concurrencia:
Interbloqueo e Inanición
Capítulo 6
• Bloqueo permanente de un conjunto de
procesos que compiten por recursos del
sistema o por comunicación con los otros
• No existe una solución eficiente
• Implican a varios procesos cuyas necesidades
por recursos entran en conflicto
Recursos Reutilizables
• Usado por un procesa cada vez y que no se
agotan por el uso
• Los procesos obtienen los recursos que más
tarde liberarán para que otros lo reusen
• Los procesadores, canales de E/S, memoria
principal y secundaria, ficheros, bases de
datos y semáforos
• Un interbloqueo ocurre si cada proceso
mantiene un recurso y pide otro
Ejemplo de Interbloqueo
Otro Ejemplo de Interbloqueo
• Hay espacio disponible para almacenar 200K
bytes, y ocurre la siguiente secuencia de eventos
P1
P2
...
...
Request 80K bytes;
Request 70K bytes;
Request 60K bytes;
Request 80K bytes;
...
...
• El interbloqueo ocurre si ambos procesos llegan
a su segunda petición
Recursos Consumibles
Ejemplo de Interbloqueo
• Creados (produced) y destruidos
(consumed) por un proceso
• Interrupciones, señales, mensajes e
información en buffers de E/S
• El interbloqueo puede ocurrir si un
Receptor de un mensaje está bloqueado
• Una extraña combinación de eventos
puede dar lugar a interbloqueo
• El interbloqueo ocurre si la recepción es
bloqueante
Condiciones para el Interbloqueo
Condiciones para el Interbloqueo
• Exclusión mutua
– sólo un proceso puede usar un recurso cada vez
• Mantener-y-esperar
– Un proceso pide todos los recurso que necesita
en un momento
P1
P2
...
...
Receive(P2);
Receive(P1);
Send(P2, M1);
Send(P1, M2);
...
...
• Sin expropiación (No preemption)
– Si a un proceso que mantiene ciertos
recursos se le deniega una petición, dicho
proceso debe liberar sus recursos originales
– Si un proceso pide un recurso que
actualmente mantiene otro proceso, el
sistema operativo puede expropiar el
segundo proceso y pedirle que libere sus
recursos
Condiciones para el Interbloqueo
• Espera circular
– Se previene definiendo un orden lineal de
los tipos de recurso
Dos Enfoques para la
Evitación de Interbloqueo
• No comenzar un proceso si sus demandas
pueden dar lugar a un interbloqueo
• No conceder una petición de recurso
incremental a un proceso si esta asignación
puede dar lugar a interbloqueo
Evitación de Interbloqueo
• Se toma una decisión dinámicamente
cuando la actual petición de asignación de
recurso, si se concede, potencialmente dará
lugar a un interbloqueo
• Requiere el conocimiento de las peticiones
futuras del proceso
Denegación de Asignación de Recurso
• Se le conoce como algoritmo de banquero
• El estado del sistema es la asignación actual de
recursos a procesos
• Un estado seguro es donde hay al menos una
secuencia que no da lugar a interbloqueo
• Un estado de riesgo es un estado que no es seguro
Determinación de un Estado Seguro
Estado Inicial
Determinación de un Estado Seguro
P2 se ejecuta hasta la finalización
Determinación de un Estado Seguro
P1 se ejecuta hasta la finalización
Determinación de un Estado Seguro
P3 se ejecuta hasta la finalización
Determinación de un
Estado de Riesgo
Evitación de Interbloqueo
• La máxima necesidad de recurso debe ser
indicada de antemano
• Los procesos bajo consideración deben ser
independientes; sin necesidad de sincronización
• Habrá un número fijo de recursos que asignar
• Ningún proceso puede salir manteniendo recursos
Determinación de un
Estado de Riesgo
Detección de Interbloqueo
Estrategias una vez Detectado
un Interbloqueo
• Abortar todos los procesos en interbloqueo
• Recuperar cada proceso bloqueado a algún
checkpoint previamente definido y reiniciar
todos los procesos
– puede volver a ocurrir el mismo interbloqueo
• Abortar sucesivamente los procesos
bloqueados hasta que desaparece el
interbloqueo
• Expropiar sucesivamente los recursos hasta
que desaparece el interbloqueo
El Problema de la Cena de los Filósofos
Criterios de Selección de
Procesos en Interbloqueo
• Menor cantidad de tiempo del
procesador consumida hasta el momento
• Menor número de líneas de salida
producidas hasta el momento
• Mayor tiempo restante estimado
• Menor número de recursos asignados
hasta el momento
• Menor prioridad
Mecanismos de Concurrencia en UNIX
•
•
•
•
•
Pipes (encaminadores)
Mensajes
Memoria compartida
Semáforos
Señales (signals)
Primitivas de Sincronización
de los Threads de Solaris
• Locks de Exclusión mutua (mutex)
• Semáforos
• Locks de múltiples lectores, único
escritor (readers/writer)
• Variables de condición
Mecanismos de Concurrencia
de Windows 2000
•
•
•
•
•
•
•
•
•
Proceso
Thread
Fichero
Entrada de consola
Notificación de cambio en fichero
Mutex
Semáforo
Evento
Temporizador de espera
Descargar