Unidad IV
Unidad IV
Unidad IV
I.S.C.
Sistemas operativos
Interbloqueo
ndice
Introduccin ............................................................................................................................ 2 Interbloqueo ............................................................................................................................ 3 Prevencin de interbloqueos ................................................................................................... 4 Deteccin y recuperacin ....................................................................................................... 7 Mecanismos para evitarlo ..................................................................................................... 10 Conclusin ............................................................................................................................ 11 Bibliografas ......................................................................................................................... 12
Introduccin
La utilizacin excesiva de un sistema y una elevada utilizacin general de recursos y la posibilidad de la operacin paralela de muchos dispositivos de entrada y salida gobernados por procesos continuos, contribuyen significativamente a aumentar el potencial de rendimiento de los sistemas multitarea y multiprogramacin pero al mismo tiempo, la concurrencia y la elevada utilizacin de esos recursos tambin proporcionan las condiciones necesarias y la base para que se produzcan interbloqueos que puedan ir limitando el rendimiento del sistema. Un interbloqueo o deadlock es una situacin en donde un grupo de procesos estn permanentemente bloqueados como consecuencia de que cada proceso ha adquirido un subconjunto de los recursos necesarios para su operacin y estn esperando la liberacin de los restantes recursos mantenidos por otros procesos del mismo grupo, haciendo as imposible que ninguno de los procesos pueda continuar hasta que los recursos se liberen y permitan la continuacin de los procesos de tenidos. Circunstancias parecidas suceden a menudo en la vida real, por ejemplo, en una carretera de dos direcciones, en donde se ha construido un puente que por problemas urbansticos o de presupuesto solo deja pasar vehculos en un sentido. Dado este punto crtico en la mencionada carretera, se puede dar el caso en que dos vehculos se encuentran de frente intentando cruzar el puente pero no lo logran ya que ambos desean pasarlo al mismo tiempo, en tal caso es necesario que uno pase primero y el otro permita el paso de lo contrario ambos autos seguirn bloquendose el camino.
Interbloqueo
El interbloqueo es un problema que afecta a procesos concurrentes que utilizan recursos en un sistema. Los procesos solicitan recursos al sistema y los liberan cuando ya no los necesitan. Un recurso puede estar disponible o bien asignado a algn proceso. Un conjunto de procesos est en estado de "deadlock" es cuando cada proceso del conjunto est esperando por un evento que solo puede ser causado por otro proceso que est dentro de ese conjunto. Podemos asegurar que un conjunto de procesos ha llegado al interbloqueo si se cumplen las siguientes condiciones: Exclusin mutua: Los recursos compartidos son adquiridos y utilizados de modo mutuamente exclusivo, es decir, por un proceso como mximo en cada momento. Retener y esperar: Cada proceso retiene los recursos que ya le han sido asignados mientras espera a adquirir el resto de recursos. No expropiacin: Los recursos concedidos a un proceso slo pueden ser liberados y devueltos al sistema como resultado de la accin voluntaria de ese proceso: el sistema no puede obligarle a entregarlos. Espera circular: Los procesos interbloqueados forman una cadena circular de modo que cada proceso retiene uno o ms de los recursos que son solicitados por el siguiente proceso de la cadena. La existencia simultnea de estas condiciones define el estado de interbloqueo. En otras palabras, las cuatro condiciones deben estar presentes para que se produzca un interbloqueo. Por tanto, un modo de manejar los interbloqueos es asegurarse que en cada momento al menos una de las cuatro condiciones necesarias para que se produzca el interbloqueo sea evitada por diseo. Otra posibilidad es hacer que el asignador de recursos examine las posibles consecuencias de asignar un recurso solicitado particular v evite las situaciones inseguras que puedan conducir a interbloqueos. Otra opcin ms es conceder los recursos a los solicitantes con total libertad, pero examinar ocasionalmente el estado del
3
sistema buscando la existencia de interbloqueos y tomar acciones que lo remedien cuando sea necesario. La mayora de las tcnicas de manejo de interbloqueos caen en una de esas tres categoras, que normalmente se denominan prevencin de interbloqueos, evitacin de interbloqueos y deteccin y recuperacin de interbloqueos, respectivamente. Antes de describir cada una de estas estrategias en detalle, comentaremos brevemente algunas caractersticas de los diferentes tipos de recursos de sistema.
Prevencin de interbloqueos
La filosofa bsica de la prevencin de interbloqueos es negar al menos una de las cuatro condiciones necesarias para que se produzcan los interbloqueos. La exclusin mutua es generalmente difcil de evitar, por lo que es costumbre prevenir una o ms de las tres condiciones restantes. La condicin retener-y-esperar puede ser eliminada exigiendo o forzando a un proceso a liberar todos los recursos retenidos por l cada vez que solicite un recurso que no est disponible. En otras palabras, los interbloqueos se previenen debido a que los procesos en espera no retienen recursos. Hay bsicamente dos implementaciones posibles de esta estrategia: El proceso solicita todos los recursos necesarios antes de comenzar a ejecutarse El proceso solicita los recursos de forma incremental en el curso de la ejecucin pero libera todos los recursos retenidos si se encuentra con una negativa. Para solicitar los recursos al comienzo, un trabajo o un proceso debe pre-reclamar todas sus necesidades de recursos. Aunque a veces requiere un esfuerzo adicional, es posible estimar las necesidades de recursos de los procesos. Esta tarea resulta algo ms fcil para trabajos de lotes, cuyas necesidades de recursos suelen ser deducibles de las instrucciones de control del trabajo. En cualquier caso, el problema habitual con la pre-reclamacin de necesidades de recursos es que tales estimaciones tienden a ser conservadoras, pecando por sobrestimacin.
4
En general, la pre-reclamacin necesita incluir todos los recursos que puedan ser necesitados potencialmente por un proceso en tiempo de ejecucin, en contraposicin con los realmente utilizados. ste es un problema particular para los programas denominados guiados por datos cuyas necesidades efectivas de recursos se determinan dinmicamente en tiempo de ejecucin. Un ejemplo tpico es el que proporcionan las consultas ad hoc en bases de datos tales como actualizar los salarios de todos los programadores, que pueden requerir la exploracin de la base de datos entera para identificar y adquirir el uso exclusivo de un subconjunto de entidades cualificadas (los programadores en este caso). Cuando a tales transacciones se les exige que reclamen sus recursos de antemano, pueden exagerar enormemente especificando quizs la base de datos entera, ya que directores o cualquier otra categora de empleados pueden ser especificados por un usuario interactivamente en otra pasada. El problema de sobrestimacin estar presente siempre que las necesidades de recursos deban ser especificadas con anterioridad a la ejecucin.
Cuando todos los recursos necesitados por un proceso son adquiridos al comienzo, quedan asignados e inalcanzables a otros procesos durante todo el tiempo de vida del proceso propietario. El problema es que algunos de esos recursos puede que slo sean realmente utilizados durante una parte de la ejecucin del proceso en cuestin, por ejemplo, al comienzo (lector de tarjetas) o al final (impresora). Por tanto, algunos recursos pueden permanecer inactivos durante perodos relativamente largos de tiempo pero, por garantizar la prevencin de interbloqueos, no pueden ser asignados a otros procesos que lo solicitan. Ya que la pre-reclamacin de necesidades de recursos tiene adems tendencia a sobrestimar esas necesidades, la prevencin de interbloqueo por medio de la adquisicin adelantada de todos los recursos estimados puede dar lugar a un bajo grado de utilizacin de recursos y a la correspondiente reduccin del nivel de concurrencia posible en el sistema. Una alternativa es adquirir los recursos incrementalmente, segn se vayan necesitando, y evitar los interbloqueos mediante la liberacin de todos los recursos retenidos por un proceso si solicita un recurso temporalmente inalcanzable. Esta estrategia evita las desventajas de pre-reclamar y retener todos los recursos desde la iniciacin de un proceso.
5
Sin embargo, la desventaja es que algunos recursos no pueden ser liberados y readquiridos en tiempo posterior fcilmente. Por ejemplo, algunos cambios irreversibles efectuados sobre la memoria o sobre archivos pueden corromper el sistema si no se llevan hasta el final. En efecto, la reanudacin de un recurso slo tiene sentido si la integridad del sistema no se ve afectada, y cuando el gasto debido a las operaciones de guardar y restaurar estados implicadas por la reanudacin sea aceptablemente pequeo. La condicin de no expropiacin puede ser negada obviamente permitiendo expropiacin, es decir, autorizando al sistema a revocar la propiedad de ciertos recursos a los procesos bloqueados. Puesto que la expropiacin es involuntaria desde el punto de vista del proceso afectado, el sistema operativo debe encargarse de salvar el estado y restaurarlo cuando el proceso sea posteriormente reanudado. Esto hace que la expropiacin de recursos sea an ms difcil que la liberacin voluntaria y reanudacin de recursos, discutida en el prrafo anterior. La expropiacin es posible para ciertos tipos de recursos, tales como la UCP y la memoria principal, ya que la parte UCP del estado del proceso se guarda rutinariamente durante la operacin de conmutacin de proceso, y el contenido de las pginas de memoria expropiadas puede ser retirado y guardado en almacenamiento secundario. Sin embargo, algunos tipos de recursos, tales como archivos parcialmente actualizados, no pueden ser expropiados sin corromper el sistema. Por tanto, la expropiacin slo es posible para ciertos tipos de recursos, y puede aplicarse cuando los beneficios de prevencin de interbloqueo pesan ms que el coste de las operaciones de salvar-restaurar estados. Sin embargo, como algunos recursos no pueden ser expropiados con garantas, este mtodo slo por s mismo no puede proporcionar prevencin completa de interbloqueos.
Un modo de evitar la condicin de espera circular es mediante la ordenacin lineal de los diferentes tipos de recursos del sistema. Con este mtodo, los recursos del sistema se dividen en clases Cj diferentes, donde j = 1... n. Los interbloqueos se previenen exigiendo que todos los procesos soliciten y adquieran sus recursos en orden estrictamente creciente de las clases de recursos de sistema especificadas. Adems. La adquisicin de todos los recursos pertenecientes a una clase debe efectuarse con una sola peticin, y no incrementalmente. En otras palabras, una vez que un proceso adquiere un recurso
6
perteneciente a la clase Cj, solamente puede solicitar recursos de la clase j + 1 o superior. La ordenacin lineal de las clases de recursos elimina la posibilidad de espera circular, ya que un proceso Pi que retiene un recurso de la clase Ci no podr esperar a ningn proceso que est esperando a un recurso de la clase Ci o inferior. Una desventaja de este mtodo es que los recursos deben ser adquiridos en el orden prescrito, en vez de ser solicitados cuando realmente se necesitan. Esto puede hacer que algunos recursos sean adquiridos con bastante antelacin a su uso efectivo, rebajando as el grado de concurrencia al hacer que recursos no utilizados no estn disponibles para su asignacin a otros procesos.
Deteccin y recuperacin
En vez de sacrificar el rendimiento previniendo o evitando interbloqueos, algunos sistemas conceden libremente los recursos disponibles a los procesos solicitantes, y comprueban ocasionalmente el sistema para determinar si existen interbloqueos con el fin de reclamar los recursos retenidos por los procesos interbloqueados, si es que los hay. Se ha demostrado que la existencia de un ciclo (o un circuito) en un grafo general de recursos es una condicin necesaria para la existencia de interbloqueo. La existencia de un nudo, es decir, un ciclo en el cual de ninguno de los nodos que lo forman sale un camino que no sea ciclo, es condicin suficiente para la existencia de interbloqueos en un grafo general de recursos. En sistemas con una sola instancia de cada tipo de recursos, la existencia de un ciclo es condicin necesaria y suficiente para la existencia de interbloqueo. Por tanto, la existencia de interbloqueos puede determinarse utilizando conocidos algoritmos para determinacin de ciclos o nudos en grafos. Un mtodo prctico es intentar reducir el grafo general de recursos suprimiendo todas las retenciones y peticiones de cada proceso cuyas solicitudes puedan ser concedidas, hasta que se efecten todas las reducciones posibles, Si el grafo queda completamente reducido (no quedan arcos) despus de esta operacin, el estado del sistema no est interbloqueado. En caso contrario, el sistema est interbloqueado, y los procesos que quedan, irreducibles, son los afectados. La
capacidad del algoritmo para identificar los procesos interbloqueados es importante, ya que facilita considerablemente la recuperacin de interbloqueos despus de la deteccin. En los mtodos de deteccin de interbloqueos, el asignador de recursos simplemente concede toda peticin de recursos disponibles. Cuando es invocado para determinar Si un estado determinado del sistema es un interbloqueo, el algoritmo funciona as: Construir las estructuras asignadas, solicitadas y disponibles de acuerdo con el estado del sistema. Desmarcar todos los procesos activos. Encontrar un proceso i no marcado tal que SOLICITADOS i DISPONIBLES Si se encuentra, marcar el proceso i, actualizar DISPONIBLES, DISPONIBLES:= DISPONIBLES + ASIGNADOS y repetir este paso. Cuando no pueda hallarse ningn proceso cualificado, proseguir con el paso siguiente. Si todos los procesos estn marcados, el sistema no est interbloqueado. En caso contrario, el sistema est interbloqueado, y el conjunto de procesos no marcados es el afectado. El algoritmo presentado tiene la misma complejidad temporal que el algoritmo de evitacin de interbloqueos de la seccin anterior, r p2. Existen algoritmos ms eficientes para casos especializados, tales como sistemas con una sola instancia de cada tipo de recurso o con un solo tipo de recurso con mltiples instancias. Para el caso general en que las peticiones de recursos estn ordenadas por tamao y hay una cuenta del nmero de recursos solicitados asociados con cada proceso se ha ideado un algoritmo cuya complejidad es linealmente proporcional al nmero de procesos activos. Este recargo de mantenimiento adicional est parcialmente compensado por el hallazgo facilitado de un proceso bloqueado que debe ser activado cuando otros procesos liberen recursos. La deteccin de interbloqueos es slo una parte de la tarea de gestin de los interbloqueos. La deteccin de un interbloqueo slo revela la existencia del problema, el sistema debe entonces romper el interbloqueo para reclamar los recursos retenidos por los procesos
8
bloqueados y asegurar que los procesos afectados puedan eventualmente completarse. El primer paso en la recuperacin de interbloqueos es identificar los procesos interbloqueados. De aqu la conveniencia de que los algoritmos de deteccin proporcionen una indicacin de los procesos interbloqueados, como hace el algoritmo descrito en esta seccin. El siguiente paso es romper el interbloqueo volviendo atrs o reiniciando desde el principio uno o ms de los procesos interbloqueados. Reiniciar un proceso implica la prdida del trabajo completado por el proceso antes de quedar bloqueado. Puesto que presumiblemente no todos los procesos han llegado igualmente lejos, es deseable elegir las vctimas entre los procesos cuya reiniciacin sea menos gravosa. La vuelta atrs de un proceso requiere una utilidad que registre los estados en tiempo de ejecucin de los procesos, de modo que un proceso pueda regresar a un instante suficientemente anterior en el pasado para que el interbloqueo se rompa. Tal utilidad la proporcionan algunos sistemas en donde se desea un alto grado de fiabilidad y/o disponibilidad. Ejemplos habituales incluyen la utilizacin de puntos de comprobacin en sistemas de tiempo real y el mecanismo de anotaciones en sistemas de procesamiento de transacciones. Cuando estn presentes, tales mecanismos pueden ser tambin empleados para recuperacin de interbloqueos. En general, tanto la vuelta atrs como la reiniciacin pueden ser difciles, si no imposibles, para procesos que han efectuado cambios irreversibles sobre los recursos de que disponan antes de que se produjera el interbloqueo. En resumen, la deteccin y recuperacin de interbloqueos proporciona un mayor grado potencial de concurrencia que la prevencin o la evitacin de interbloqueos Adems, el recargo en tiempo de ejecucin de la deteccin de interbloqueos puede ser un parmetro ajustable en el sistema. El precio a pagar es el recargo de recuperacin una vez que se detectan los interbloqueos, y el desaprovechamiento del uso de los recursos del sistema por los procesos que son reiniciados o vueltos atrs. La recuperacin de interbloqueos puede ser atractiva en sistemas con baja probabilidad de interbloqueos. En sistemas con elevada carga, se sabe que la concesin sin restricciones de peticiones de recurso conduce a un compromiso excesivo de los recursos, lo que puede dar lugar a frecuentes interbloqueos. Los efectos negativos de permitir interbloqueos tienden a incrementarse con la carga del sistema y con la frecuencia de interbloqueos, aumentando as el desaprovechamiento de los recursos del sistema justo cuando son ms necesarios.
9
10
Se trata de conceder los recursos slo cuando no representen un riesgo futuro de interbloqueo. Lo procesos han de declarar por anticipado la cantidad mxima de recursos que van a utilizar a lo largo de su vida. Estado seguro: un estado en el cual no hay riesgo inminente de interbloqueo. Un estado es seguro si en l podemos encontrar una secuencia segura con todos los procesos del sistema.
Conclusin
El interbloqueo es cuando una serie de procesos en ejecucin se suspenden temporalmente esperando recursos que estn siendo utilizados por otros procesos, y desafortunadamente todos y cada uno de los procesos estn en el mismo estatus, es decir ninguno puede proceder debido a que espera recursos que estn siendo usados por otro. La deteccin del interbloqueo se lleva a cabo mediante algoritmos de anlisis en los que el sistema operativo busca procesos que puedan continuar con los recursos que hay disponibles y si despus de revisar todos los procesos. Para que un sistema operativo pueda recuperarse del interbloqueo es importante hacer una deteccin peridica del mismo, y al haberlo encontrado, tiene dos alternativas, la terminacin de procesos en donde la opcin ms drstica es cerrar todos los procesos pero esta opcin podra causar una gran prdida de informacin, adems de esta opcin puede seleccionar algn proceso para terminarlo y liberar sus recursos.
11
Bibliografas
http://sopa.dis.ulpg.es/so/teoria/pdf/so-11-Interbloqueo.pdf http://www.slideshare.net/basince/deteccion-y-recuperacion-de-un-interbloqueo http://es.wikipedia.org/wiki/Bloqueo_mutuo
12