You are on page 1of 30

Colegio Universitario de Limn

Diplomado en Computacin Empresarial Curso: Sistemas Operativos Profesor: James Temple Palmer

Telfono: 88195692
jameswaltert@gmail.com Magister en Informtica y Computacin (UCR) Septiembre 2011

interbloqueo
En sistemas operativos, el bloqueo mutuo (tambin conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecucin 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 solucin general para los interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o ms procesos. Dos procesos compiten por dos recursos que necesitan para funcionar, que slo pueden ser utilizados por un proceso a la vez.

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 gestin concurrente de procesos, no existe una solucin eficiente para el caso general. Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o ms 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 ms 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 va del ferrocarril, se ha construido un puente que solo deja pasar vehculos 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 nmero finito de recursos que se distribuyen entre varios tipos: Fsicos: Ciclo de CPU, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.) Lgicos: Ficheros, tablas del sistemas, semforos. Los recursos son de dos tipos: Apropiable: Un recurso apropiable es aquel que se puede tomar del proceso que lo posee sin efectos dainos. 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 clculo.

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 reasignacin 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 poltica del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo: Condicin de exclusin mutua: Cada recurso esta asignado a un nico proceso o est disponible. Condicin de posesin y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.

Condicin de no apropiacin: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explcita.

Condiciones para producir interbloqueo


Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condicin: Condicin de espera circular (o crculo vicioso de espera): Debe existir una cadena circular de dos o ms procesos, cada uno de los cuales espera un recurso posedo por el siguiente miembro de la cadena.

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

Prevencin del interbloqueo


La estrategia bsica de la prevencin del interbloqueo consiste, a grandes rasgos, en disear su sistema de manera que est excluida, a priori, la posibilidad de interbloqueo. Los mtodos para prevenir el interbloqueo son de dos tipos: Los mtodos indirectos que consisten en impedir la aparicin de alguna de las tres condiciones necesarias para que se d el interbloqueo. Los mtodos directos que consisten en evitar la aparicin del crculo vicioso de espera. Exclusin mutua: Si ningn recurso se puede asignar de forma exclusiva, no se producir interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condicin de exclusin mutua.

Prevencin del interbloqueo


No obstante, es posible eliminar esta condicin 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, adems, la implementacin de esta tcnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita). Retencin y espera La condicin de retencin 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 simultneamente. Esta solucin resulta ineficiente por dos factores:

Prevencin del interbloqueo


En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podra 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 apropiacin La condicin de no apropiacin 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.

Prevencin 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 slo si no hay dos procesos que posean la misma prioridad. Circulo vicioso de espera La condicin del crculo vicioso de espera puede prevenirse definiendo una ordenacin lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces slo podr realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenacin. Como en la retencin y espera, la prevencin del crculo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.

Prediccin del interbloqueo


Con prediccin del interbloqueo, se decide dinmicamente si la peticin actual de asignacin de un recurso podra, de concederse, llevar potencialmente a un interbloqueo. La prediccin del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la prediccin 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 asignacin puede llevar a interbloqueo.

deteccin del interbloqueo


Las estrategias de prevencin de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de deteccin de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la deteccin del interbloqueo, se concedern los recursos que los procesos necesiten siempre que sea posible. Peridicamente, el S. O. ejecuta un algoritmo que permite detectar la condicin de circulo vicioso de espera. La deteccin 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.

deteccin del interbloqueo


Este mtodo est basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarn en el momento que otro proceso lo requiera. Algoritmo de deteccin del interbloqueo Una comprobacin 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 deteccin temprana y el algoritmo es simple, de manera relativa porque se basa en cambios crecientes al estado del sistema. Adems, las comprobaciones frecuentes consumen un tiempo considerable de procesador.

recuperacin 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 automticamente del interbloqueo. Dentro de esta recuperacin automtica tenemos dos opciones para romper el interbloqueo: Una consiste en abortar uno o ms procesos hasta romper la espera circular, y la segunda es apropiar algunos recursos de uno o ms de los procesos bloqueados. La recuperacin despus de un interbloqueo se complica porque puede no estar claro que el sistema se haya bloqueado. Las mayoras de los Sistemas Operativos no tienen los medios suficientes para suspender un proceso, eliminarlo del sistema y reanudarlo ms tarde.

recuperacin del interbloqueo


Recuperacin Manual Est forma de recuperacin 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 ms conveniente. Abortar los Procesos Para eliminar interbloqueos abortando un proceso, tenemos dos mtodos. Abortar todos los procesos interbloqueados. Esta es una de las soluciones ms comunes, adoptada por Sistemas Operativos. Abortar un proceso en cada ocasin hasta eliminar el ciclo de interbloqueo. El orden en que se seleccionan los procesos para abortarlos debe basarse en algn criterio de costo mnimo.

recuperacin 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 ms fcil recuperarlo ms tarde. Tipos de recursos utilizados. Si los recursos son muy necesarios y escasos ser preferible liberarlos cuanto antes. Cuntos recursos ms necesita el proceso. Es conveniente eliminar a aquellos procesos que necesitan un gran nmero de recursos. Facilidad de suspensin / reanudacin. Se eliminarn aquellos procesos cuyo trabajo perdido sea ms fcil de recuperar.

recuperacin del interbloqueo


Apropiacin de Recursos Para eliminar interbloqueos utilizando la apropiacin de recursos, vamos quitando sucesivamente recursos de los procesos y los asignamos a otros hasta romper el ciclo de interbloqueo. Si se utiliza la apropiacin de recursos para tratar los interbloqueos, hay que considerar tres aspectos: Seleccin de la vctima Retroceso Bloqueo indefinido La deteccin y recuperacin es la estrategia que a menudo se utiliza en grandes computadoras, especialmente sistemas por lote en los que la eliminacin de un proceso y despus su reiniciacin suele aceptarse.

Estrategia integrada de interbloqueo


Puede ser ms eficiente usar diferente estrategias en diferentes situaciones, una de ellas sugiere lo siguiente: Agrupar los recursos en un nmero de clases diferentes. Usar la estrategia de ordenacin lineal definida anteriormente para la prevencin de crculo vicioso de espera e impedir el interbloqueo entre clases de recursos. Dentro de cada clase de recursos, emplear el algoritmo ms apropiado para dicha clase. Espacio intercambiable Recursos de procesos Memoria principal Recursos internos

Mecanismos de concurrencia en unix


Los distintos mecanismos ms importantes que ofrece UNIX para la comunicacin entre procesos y la sincronizacin son los siguientes: Tubos Mensajes Memoria Compartida Semforos Seales

Los tubos, los mensajes y la memoria compartida brindan un medio de comunicacin de datos entre procesos, mientras que los semforos y las seales se utilizan para provocar acciones en otros procesos.

Mecanismos de concurrencia en unix


Tubos Es un buffer circular que permite a dos procesos comunicarse segn 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 envo y el receptor puede usarlo como criterio de seleccin. 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 vaca. 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 ms rpida de comunicacin entre procesos que brinda UNIX, se trata de un bloque comn de memoria virtual compartido por varios procesos. Los procesos pueden leer y escribir en la memoria compartida usando las mismas instrucciones que la mquina que emplea para leer y escribir en otras partes de su espacio de direcciones virtual.

Semforos Las llamadas al sistema para semforos en el UNIX Versin V son una generalizacin 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


El ncleo ejecuta atmicamente todas las operaciones solicitadas; ningn otro proceso puede acceder al semforo hasta que todas las operaciones hayan culminado. Un semforo consta de los siguientes elementos: Valor actual del semforo. ID del ultimo proceso que opero con el semforo. Numero de procesos esperando a que el valor del semforo sea mayor que su valor actual. Nmero de procesos esperando a que el valor del semforo sea cero Asociadas con cada semforo existen colas de procesos suspendidos. Esta generalizacin de los semforos ofrece una considerable flexibilidad para realizar sincronizacin y coordinacin de procesos.

Mecanismos de concurrencia en unix


Seales Es un mecanismo de software que informa a un proceso que se ha producido un suceso asncrono. Una seal es similar a una interrupcin de hardware, pero no emplea prioridades. Los procesos pueden enviarse seales entre si y el ncleo puede enviar seales internas. Una seal se entrega actualizando un campo de la tabla de procesos del proceso al que se le enva. Dado que cada seal se mantiene como un nico bit, las seales de un tipo en particular no pueden colocarse en la cola. Una seal se procesa en el instante despus 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 seal ejecutando alguna accin por omisin, ejecutando una funcin de gestin de la seal o ignorando la seal.

Mecanismos de concurrencia en Windows Windows 2000 (W2K) ofrece sincronizacin entre los hilos como parte de la arquitectura de objetos. El mecanismo usado por el ejecutor de W2K para implementar los servicios de sincronizacin es la familia de objetos de sincronizacin: Proceso. Hilo. Archivo. Entrada de consola. Notificacin de cambio de archivo. Mutante. Semforo. Suceso. Temporizador.

Mecanismos de concurrencia en Windows Cada caso de objeto de sincronizacin puede estar en estado sealizado o no sealizado. Un hilo puede estar suspendido por un objeto en estado no sealizado. El mecanismo es sencillo: un hilo genera una solicitud de espera al ejecutor de W2K por medio del descriptor (handle) del objeto de sincronizacin. El objeto mutante se utiliza para hacer cumplir la exclusin mutua en el acceso a un recurso, permitiendo que slo un objeto hilo obtenga el acceso en cada instante. Por lo tanto, funciona como un semforo binario. Cuando el objeto mutante pasa a estado sealizado, slo se libera uno de los hilos que esperan.

Muchas gracias

You might also like