Presentación Interbloqueo

30
Diplomado en Computación Empresarial Curso: Sistemas Operativos Profesor: James Temple Palmer Teléfono: 88195692 [email protected] Magister en Informática y Computación (UCR) Septiembre 2011 Colegio Universitario de Limón

Transcript of Presentación Interbloqueo

Page 1: Presentación Interbloqueo

Diplomado en Computación Empresarial

Curso: Sistemas Operativos

Profesor: James Temple Palmer

Teléfono: 88195692

[email protected]

Magister en Informática y Computación (UCR)

Septiembre 2011

Colegio Universitario de Limón

Page 2: Presentación Interbloqueo

• En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos.

• A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.

• Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos.

• Dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser utilizados por un proceso a la vez.

interbloqueo

Page 3: Presentación Interbloqueo

• El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros.

• A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.

• Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos.

Principios del interbloqueo

Page 4: Presentación Interbloqueo

• Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos.

El coche que va hacia el norte necesita los cuadrantes 1 y 2. El coche que va hacia el oeste necesita los cuadrantes 2 y 3. El coche que va hacia el sur necesita los cuadrantes 3 y 4. El coche que va hacia el este necesita los cuadrantes 4 y 1.

ejemplo de interbloqueo

Page 5: Presentación Interbloqueo

• La norma más habitual en la carretera es que un coche en un cruce de cuatro caminos debe ceder el paso al coche que está a su derecha.

• En una carretera de dos direcciones, donde en un determinado cruce con la vía del ferrocarril, se ha construido un puente que solo deja pasar vehículos en un solo sentido. El bloqueo ocurre cuando dos carros intentan pasar por el puente al mismo tiempo.

ejemplo de interbloqueo

Page 6: Presentación Interbloqueo

• Dos procesos desean imprimir cada uno un enorme archivo en cinta. El proceso A solicita el permiso para utilizar la impresora, el cual se le concede. Es entonces cuando el proceso B solicita permiso para utilizar la unidad de cinta y se le otorga. El proceso A solicita entonces la unidad de cinta, pero la solicitud es denegada hasta que B la libere. Por desgracia, en este momento, en vez de liberar unidad de cinta, B solicita la impresora. Los procesos se bloquean en ese momento y permanecen así por siempre.

ejemplo de interbloqueo

Page 7: Presentación Interbloqueo

• Un sistema se compone de un número finito de recursos que se distribuyen entre varios tipos:

Físicos: Ciclo de CPU, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.)

 Lógicos: Ficheros, tablas del sistemas, semáforos.• Los recursos son de dos tipos:  Apropiable: Un recurso apropiable es aquel que se puede tomar

del proceso que lo posee sin efectos dañinos. La memoria es un ejemplo de recurso apropiable.

 No apropiables: Un recurso no apropiable, es aquel que no se puede tomar de su poseedor activo sin provocar un fallo de cálculo.

recursos

Page 8: Presentación Interbloqueo

• Los interbloqueos se relacionan con los recursos no apropiables. Lo usual es que los bloqueos asociados a recursos apropiables se pueden resolver, mediante la reasignación de recursos de un proceso a otro.

• La secuencia de eventos necesaria para utilizar un recurso es: Solicitar el recurso Utilizar el recurso  Liberar el recurso

• El interbloque se puede definir entonces de la siguiente forma:• Un conjunto de procesos se encuentra en estado de interbloqueo

cuando cada uno de ellos espera un suceso que solo puede originar otro proceso del mismo conjunto.

recursos

Page 9: Presentación Interbloqueo

• En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:

 Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o está disponible.

Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.

Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explícita.

Condiciones para producir interbloqueo

Page 10: Presentación Interbloqueo

• Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:

 Condición de espera circular (o círculo vicioso de espera): Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.

• Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condición es, en realidad, una consecuencia potencial de las tres primeras.

Condiciones para producir interbloqueo

Page 11: Presentación Interbloqueo

• La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo.

• Los métodos para prevenir el interbloqueo son de dos tipos: Los métodos indirectos que consisten en impedir la aparición de

alguna de las tres condiciones necesarias para que se dé el interbloqueo.

Los métodos directos que consisten en evitar la aparición del círculo vicioso de espera.

• Exclusión mutua: Si ningún recurso se puede asignar de forma exclusiva, no se producirá interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condición de exclusión mutua.

Prevención del interbloqueo

Page 12: Presentación Interbloqueo

• No obstante, es posible eliminar esta condición en algunos procesos. • Pero con el spooling de salida varios procesos pueden generar salida

al mismo tiempo. • El inconveniente es que no todos los recursos pueden usarse de esta

forma (por ejemplo, la tabla de procesos no se presenta al spooling y, además, la implementación de esta técnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita).

• Retención y espera•  La condición de retención y espera puede prevenirse exigiendo que

todos los procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse simultáneamente. Esta solución resulta ineficiente por dos factores:

Prevención del interbloqueo

Page 13: Presentación Interbloqueo

En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podría haber avanzado con solo algunos de los recursos.

Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos.

• No apropiación La condición de no apropiación puede prevenirse de varias

formas. Primero, si a un proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso deberá liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional.

Prevención del interbloqueo

Page 14: Presentación Interbloqueo

Por otra parte, si un proceso solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo debe expulsar al segundo proceso y exigirle que libere sus recursos.

Este último esquema evitará el interbloqueo sólo si no hay dos procesos que posean la misma prioridad.

• Circulo vicioso de espera La condición del círculo vicioso de espera puede prevenirse

definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación.

Como en la retención y espera, la prevención del círculo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.

Prevención del interbloqueo

Page 15: Presentación Interbloqueo

• Con predicción del interbloqueo, se decide dinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo.

• La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos.

• Enfoques para la predicción del interbloqueo: No iniciar un proceso si sus demandas pueden llevar a

interbloqueo.

No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.

Predicción del interbloqueo

Page 16: Presentación Interbloqueo

• Las estrategias de prevención de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos.

• En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso.

• Con la detección del interbloqueo, se concederán los recursos que los procesos necesiten siempre que sea posible.

• Periódicamente, el S. O. ejecuta un algoritmo que permite detectar la condición de circulo vicioso de espera.

• La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos.

detección del interbloqueo

Page 17: Presentación Interbloqueo

• Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.

Algoritmo de detección del interbloqueo • Una comprobación para interbloqueo puede hacerse con igual o

menor frecuencia que cada solicitud de recursos, dependiendo de que tan probable es que ocurra un interbloqueo.

• Comprobar cada solicitud de recursos tiene dos ventajas: Conduce a la detección temprana y el algoritmo es simple, de manera relativa porque se basa en cambios crecientes al estado del sistema.

• Además, las comprobaciones frecuentes consumen un tiempo considerable de procesador.

detección del interbloqueo

Page 18: Presentación Interbloqueo

• Cuando se ha detectado que existe un interbloqueo, podemos actuar de varias formas. Una posibilidad es informar al operador que ha ocurrido un interbloqueo y dejar que el operador se ocupe de él manualmente. La otra posibilidad es dejar que el sistema se recupere automáticamente del interbloqueo. Dentro de esta recuperación automática tenemos dos opciones para romper el interbloqueo:

• Una consiste en abortar uno o más procesos hasta romper la espera circular, y la segunda es apropiar algunos recursos de uno o más de los procesos bloqueados.

• La recuperación después de un interbloqueo se complica porque puede no estar claro que el sistema se haya bloqueado. Las mayorías de los Sistemas Operativos no tienen los medios suficientes para suspender un proceso, eliminarlo del sistema y reanudarlo más tarde.

recuperación del interbloqueo

Page 19: Presentación Interbloqueo

Recuperación Manual •  Está forma de recuperación consiste en avisarle al administrador o

al operador del sistema que se ha presentado un interbloqueo, y será el administrador el que solucione dicho problema de la manera más conveniente.

Abortar los Procesos • Para eliminar interbloqueos abortando un proceso, tenemos dos

métodos. Abortar todos los procesos interbloqueados. Esta es una de las

soluciones más comunes, adoptada por Sistemas Operativos. Abortar un proceso en cada ocasión hasta eliminar el ciclo de

interbloqueo. El orden en que se seleccionan los procesos para abortarlos debe basarse en algún criterio de costo mínimo.

recuperación del interbloqueo

Page 20: Presentación Interbloqueo

• Existen muchos factores que determinan el proceso que se seleccionará, siendo los principales los siguientes:

La prioridad del proceso. Se elimina el proceso de menor prioridad. Tiempo de procesador usado. Se abortará aquel proceso que haya

utilizado menos tiempo el procesador, ya que se pierde menos trabajo y será más fácil recuperarlo más tarde.

Tipos de recursos utilizados. Si los recursos son muy necesarios y escasos será preferible liberarlos cuanto antes.

Cuántos recursos más necesita el proceso. Es conveniente eliminar a aquellos procesos que necesitan un gran número de recursos.

Facilidad de suspensión / reanudación. Se eliminarán aquellos procesos cuyo trabajo perdido sea más fácil de recuperar.

recuperación del interbloqueo

Page 21: Presentación Interbloqueo

Apropiación de Recursos • Para eliminar interbloqueos utilizando la apropiación de recursos,

vamos quitando sucesivamente recursos de los procesos y los asignamos a otros hasta romper el ciclo de interbloqueo.

• Si se utiliza la apropiación de recursos para tratar los interbloqueos, hay que considerar tres aspectos:

Selección de la víctima Retroceso Bloqueo indefinido• La detección y recuperación es la estrategia que a menudo se utiliza

en grandes computadoras, especialmente sistemas por lote en los que la eliminación de un proceso y después su reiniciación suele aceptarse.

recuperación del interbloqueo

Page 22: Presentación Interbloqueo

• Puede ser más eficiente usar diferente estrategias en diferentes situaciones, una de ellas sugiere lo siguiente:

Agrupar los recursos en un número de clases diferentes. Usar la estrategia de ordenación lineal definida anteriormente para

la prevención de círculo vicioso de espera e impedir el interbloqueo entre clases de recursos.

• Dentro de cada clase de recursos, emplear el algoritmo más apropiado para dicha clase.

Espacio intercambiable Recursos de procesos Memoria principal Recursos internos

Estrategia integrada de interbloqueo

Page 23: Presentación Interbloqueo

• Los distintos mecanismos más importantes que ofrece UNIX para la comunicación entre procesos y la sincronización son los siguientes:

Tubos Mensajes Memoria Compartida Semáforos Señales

• Los tubos, los mensajes y la memoria compartida brindan un medio de comunicación de datos entre procesos, mientras que los semáforos y las señales se utilizan para provocar acciones en otros procesos.

Mecanismos de concurrencia en unix

Page 24: Presentación Interbloqueo

Tubos• Es un buffer circular que permite a dos procesos comunicarse según

el modelo productor/consumidor.• Hay dos tipos de tubos: con nombre y sin nombre. Los tubos sin

nombre pueden ser compartidos por procesos afines y los tubos con nombre pueden ser compartidos por procesos no afines.

Mensajes• Es un bloque de texto con un tipo asociado. El emisor del mensaje

especifica el tipo de mensaje en cada envío y el receptor puede usarlo como criterio de selección. El receptor puede recuperar los mensajes tanto en orden FIFO como por el tipo asociado. Un proceso se suspenderá cuando intente leer de una cola vacía. Si un proceso intenta leer un mensaje de cierto tipo y falla, el proceso no se suspenderá.

Mecanismos de concurrencia en unix

Page 25: Presentación Interbloqueo

Memoria Compartida• Es la forma más rápida de comunicación entre procesos que brinda

UNIX, se trata de un bloque común de memoria virtual compartido por varios procesos. Los procesos pueden leer y escribir en la memoria compartida usando las mismas instrucciones que la máquina que emplea para leer y escribir en otras partes de su espacio de direcciones virtual.

Semáforos• Las llamadas al sistema para semáforos en el UNIX Versión V son

una generalización de las primitivas "wait y signal", en estas se pueden realizar conjuntamente varias operaciones y los incrementos y disminuciones pueden ser valores mayores que 1.

Mecanismos de concurrencia en unix

Page 26: Presentación Interbloqueo

• El núcleo ejecuta atómicamente todas las operaciones solicitadas; ningún otro proceso puede acceder al semáforo hasta que todas las operaciones hayan culminado.

• Un semáforo consta de los siguientes elementos: Valor actual del semáforo. ID del ultimo proceso que opero con el semáforo. Numero de procesos esperando a que el valor del semáforo sea

mayor que su valor actual. Número de procesos esperando a que el valor del semáforo sea cero• Asociadas con cada semáforo existen colas de procesos

suspendidos.• Esta generalización de los semáforos ofrece una considerable

flexibilidad para realizar sincronización y coordinación de procesos.

Mecanismos de concurrencia en unix

Page 27: Presentación Interbloqueo

Señales• Es un mecanismo de software que informa a un proceso que se ha

producido un suceso asíncrono. Una señal es similar a una interrupción de hardware, pero no emplea prioridades.

• Los procesos pueden enviarse señales entre si y el núcleo puede enviar señales internas. Una señal se entrega actualizando un campo de la tabla de procesos del proceso al que se le envía. Dado que cada señal se mantiene como un único bit, las señales de un tipo en particular no pueden colocarse en la cola.

• Una señal se procesa en el instante después de que el proceso despierte para ejecutarse o cuando el proceso este dispuesto a volver de una llamada al sistema.

• Un proceso puede responder a una señal ejecutando alguna acción por omisión, ejecutando una función de gestión de la señal o ignorando la señal.

Mecanismos de concurrencia en unix

Page 28: Presentación Interbloqueo

• Windows 2000 (W2K) ofrece sincronización entre los hilos como parte de la arquitectura de objetos. El mecanismo usado por el ejecutor de W2K para implementar los servicios de sincronización es la familia de objetos de sincronización:

Proceso. Hilo. Archivo. Entrada de consola. Notificación de cambio de archivo. Mutante. Semáforo. Suceso. Temporizador.

Mecanismos de concurrencia en Windows

Page 29: Presentación Interbloqueo

• Cada caso de objeto de sincronización puede estar en estado señalizado o no señalizado.

• Un hilo puede estar suspendido por un objeto en estado no señalizado.

• El mecanismo es sencillo: un hilo genera una solicitud de espera al ejecutor de W2K por medio del descriptor (handle) del objeto de sincronización.

• El objeto mutante se utiliza para hacer cumplir la exclusión mutua en el acceso a un recurso, permitiendo que sólo un objeto hilo obtenga el acceso en cada instante.

• Por lo tanto, funciona como un semáforo binario. Cuando el objeto mutante pasa a estado señalizado, sólo se libera uno de los hilos que esperan.

Mecanismos de concurrencia en Windows

Page 30: Presentación Interbloqueo

Muchas gracias