INTERBLOQUEOS

Track and organize your meetings within your company

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Rocket clouds
INTERBLOQUEOS por Mind Map: INTERBLOQUEOS

1. ¿Qué es un interbloqueo? 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.

1.1. RECURSOS

1.1.1. Una clase principal de interbloqueos involucra a los recursos, Los interbloqueos pueden ocurrir cuando a los procesos se les otorga acceso exclusivo a los dispositivos, registros de datos, archivos, etcétera.

1.2. Recursos apropiativos y no apropiativos

1.2.1. Un recurso no apropiativo es uno que no se puede quitar a su propietario actual sin hacer que el cómputo falle.

1.2.2. Un recurso apropiativo es uno que se puede quitar al proceso que lo posee sin efectos dañinos.

1.3. Adquisición de recursos

1.3.1. Para ciertos tipos de recursos, como los registros de una base de datos, es responsabilidad de los procesos de usuario administrar su uso. Una manera de permitir que los usuarios administren los recursos es asociar un semáforo con cada recurso

2. Condiciones para los interbloqueos de recursos

2.1. 1. Condición de exclusión mutua. Cada recurso se asigna en un momento dado a sólo un proceso, o está disponible.

2.2. 2. Condición de contención y espera. Los procesos que actualmente contienen recursos que se les otorgaron antes pueden solicitar nuevos recursos.

2.3. 3. Condición no apropiativa. Los recursos otorgados previamente no se pueden quitar a un proceso por la fuerza. Deben ser liberados de manera explícita por el proceso que los contiene.

2.4. 4. Condición de espera circular. Debe haber una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso contenido por el siguiente miembro de la cadena.

3. Modelado de interbloqueos

3.1. Se pueden modelar estas cuatro condiciones mediante el uso de gráficos dirigidos. Los gráficos tienen dos tipos de nodos: procesos, que se muestran como círculos, y recursos, que se muestran como cuadros. Un arco dirigido de un nodo de recurso (cuadro) a un nodo de proceso (círculo) significa que el recurso fue solicitado previamente por, y asignado a, y actualmente es contenido por ese proceso.

3.1.1. Se utilizan cuatro estrategias para lidiar con los interbloqueos.

3.1.1.1. 1. Sólo ignorar el problema. Tal vez si usted lo ignora, él lo ignorará a usted.

3.1.1.2. 2. Detección y recuperación. Dejar que ocurran los interbloqueos, detectarlos y tomar acción.

3.1.1.3. 3. Evitarlos en forma dinámica mediante la asignación cuidadosa de los recursos.

3.1.1.4. 4. Prevención, al evitar estructuralmente una de las cuatro condiciones requeridas.

4. Detección y recuperación de un interbloqueo

4.1. Cuando se utiliza esta técnica, el sistema no trata de evitar los interbloqueos. En vez de ello, intenta detectarlos cuando ocurran y luego realiza cierta acción para recuperarse después del hecho.

4.1.1. 1.-Detección de interbloqueos con un recurso de cada tipo 2.-Detección del interbloqueo con varios recursos de cada tipo

5. Recuperación de un interbloqueo

5.1. Suponga que nuestro algoritmo de detección de interbloqueos ha tenido éxito y detectó un interbloqueo. ¿Qué debemos hacer ahora? Se necesita alguna forma de recuperarse y hacer funcionar el sistema otra vez.

5.1.1. Recuperación por medio de apropiación

5.1.1.1. En algunos casos puede ser posible quitar temporalmente un recurso a su propietario actual y otorgarlo a otro proceso. La habilidad de quitar un recurso a un proceso, hacer que otro proceso lo utilice y después regresarlo sin que el proceso lo note, depende en gran parte de la naturaleza del recurso.

5.1.2. Recuperación a través del retroceso

5.1.2.1. Si los diseñadores de sistemas y operadores de máquinas saben que es probable que haya interbloqueos, pueden hacer que los procesos realicen puntos de comprobación en forma periódica. Realizar puntos de comprobación en un proceso significa que su estado se escribe en un archivo para poder reiniciarlo más tarde.

5.1.2.1.1. El punto de comprobación no sólo contiene la imagen de la memoria, sino también el estado del recurso; en otras palabras, qué recursos están asignados al proceso en un momento dado. Para que sean más efectivos, los nuevos puntos de comprobación no deben sobrescribir a los anteriores, sino que deben escribirse en nuevos archivos, para que se acumule una secuencia completa a medida que el proceso se ejecute.

5.1.3. Recuperación a través de la eliminación de procesos

5.1.3.1. La forma más cruda y simple de romper un interbloqueo es eliminar uno o más procesos. Una posibilidad es eliminar a uno de los procesos en el ciclo. Con un poco de suerte, los demás procesos podrán continuar. Si esto no ayuda, se puede repetir hasta que se rompa el ciclo.

6. Cómo evitar interbloqueos

6.1. ¿Hay algún algoritmo que siempre pueda evitar un interbloqueo al realizar la elección correcta todo el tiempo? La respuesta es un sí calificado: podemos evitar los interbloqueos, pero sólo si hay cierta información disponible de antemano.

6.1.1. Trayectorias de los recursos

6.1.1.1. Los principales algoritmos para evitar interbloqueos se basan en el concepto de los estados seguros. Lo importante a considerar aquí es que en el punto que está solicitando un recurso. El sistema debe decidir si lo otorga o no. Si se otorga el recurso, el sistema entrará en una región insegura y en el interbloqueo, en un momento dado. Para evitar el interbloqueo, B se debe suspender hasta que A haya solicitado y liberado el trazador.

6.1.2. Estados seguros e inseguros

6.1.2.1. Se dice que un estado es seguro si hay cierto orden de programación en el que se puede ejecutar cada proceso hasta completarse, incluso aunque todos ellos solicitaran de manera repentina su número máximo de recursos de inmediato. La diferencia entre un estado seguro y uno inseguro es que, desde un estado seguro, el sistema puede garantizar que todos los procesos terminarán; desde un estado inseguro, no se puede dar esa garantía

6.1.3. El algoritmo del banquero para varios recursos

6.1.3.1. el número de procesos no está fijo, sino que varía en forma dinámica a medida que los nuevos usuarios inician y cierran sesión. Por otro lado, los recursos que se consideraban disponibles pueden de pronto desvanecerse (las unidades de cinta se pueden descomponer). Por ende, en la práctica pocos (si acaso) sistemas existentes utilizan el algoritmo del banquero para evitar interbloqueos.

6.1.4. El algoritmo del banquero para un solo recurso

6.1.4.1. Dijkstra ideó un algoritmo de programación que puede evitar interbloqueos. Se modela de la forma en que un banquero de una pequeña ciudad podría tratar con un grupo de clientes a los que ha otorgado líneas de crédito. Lo que hace el algoritmo es comprobar si al otorgar la petición se produce un estado inseguro. Si es así, la petición se rechaza. Si al otorgar la petición se produce un estado seguro, se lleva a cabo.

7. CÓMO PREVENIR INTERBLOQUEOS

7.1. Cómo atacar la condición de exclusión mutua

7.1.1. Si ningún recurso se asignara de manera exclusiva a un solo proceso, nunca tendríamos interbloqueos. No obstante, es igual de claro que al permitir que dos procesos escriban en la impresora al mismo tiempo se producirá un caos. Al colocar la salida de la impresora en una cola de impresión, varios procesos pueden generar salida al mismo tiempo.

7.2. Cómo atacar la condición de contención y espera

7.2.1. Establecida por Coffman y colaboradores se ve un poco más prometedora. Si podemos evitar que los procesos que contienen recursos esperen por más recursos, podemos eliminar los interbloqueos. Una forma de lograr esta meta es requerir que todos los procesos soliciten todos sus recursos antes de empezar su ejecución. Si todo está disponible, al proceso se le asignará lo que necesite y podrá ejecutarse hasta completarse.

7.3. Cómo atacar la condición no apropiativa

7.3.1. Si a un proceso se le ha asignado la impresora y está a la mitad de imprimir su salida, quitarle la impresora a la fuerza debido a que el trazador que necesita no está disponible es algo engañoso como máximo, e imposible en el peor caso. Sin embargo, ciertos recursos se pueden virtualizar para evitar esta situación.

7.4. Cómo atacar la condición de espera circular

7.4.1. Sólo queda una condición. La espera circular se puede eliminar de varias formas. Una de ellas es simplemente tener una regla que diga que un proceso tiene derecho sólo a un recurso en cualquier momento. Si necesita un segundo recurso, debe liberar el primero. Para un proceso que necesita copiar un enorme archivo de una cinta a una impresora, esta restricción es inaceptable.