Colegio Universitario de Limón 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
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 p ueden ser satisfechas, por parte de dos o más procesos.
•
Dos procesos compiten por dos recursos que necesitan para
Principios del 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.
ejemplo de 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 •
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 •
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.
recursos •
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 •
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.
Condiciones para producir 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 •
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,
Prevención del 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 •
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
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
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.
Predicción del 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.
detección del 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 •
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.
recuperación del 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 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 •
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 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.
Estrategia integrada de 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
Mecanismos de concurrencia en unix •
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 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 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
Mecanismos de concurrencia en unix •
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 suspendidos.
•
Esta generalización de los semáforos ofrece una considerable flexibilidad para realizar sincronización y coordinación de procesos.
cada
semáforo
existen
colas
de
procesos
Mecanismos de concurrencia en unix 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
Mecanismos de concurrencia en Windows •
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 •
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.