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