1. DETECCIÓN Y RECUPERACIÓN DE UN INTERBLOQUEO
1.1. Detección de interbloqueos con un recurso de cada tipo
1.1.1. sólo existe un recurso de cada tipo. Dicho sistema podría tener un escáner, un grabador de CD, un trazador (plotter) y una unidad de cinta, pero no más que un recurso de cada clase. En otras palabras, estamos excluyendo los sistemas con dos impresoras por el momento
1.2. Detección del interbloqueo con varios recursos de cada tipo
1.2.1. Cuando existen varias copias de algunos de los recursos, se necesita un método distinto para detectar interbloqueos
1.3. Recuperación de un interbloqueo
1.3.1. Recuperación por medio de apropiación
1.3.1.1. En algunos casos puede ser posible quitar temporalmente un recurso a su propietario actual y otorgarlo a otro proceso.
1.3.2. Recuperación a través del retroceso
1.3.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
1.3.3. Recuperación a través de la eliminación de procesos
1.3.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.
2. CÓMO EVITAR INTERBLOQUEOS
2.1. Trayectorias de los recursos
2.1.1. Los principales algoritmos para evitar interbloqueos se basan en el concepto de los estados seguros.
2.2. Estados seguros e inseguros
2.2.1. En cualquier instante hay un estado actual que consiste en E, A, C y R. 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.
2.3. El algoritmo del banquero para un solo recurso
2.3.1. Dijkstra (1965) ideó un algoritmo de programación que puede evitar interbloqueos; este algoritmo se conoce como el algoritmo del banquero
2.4. El algoritmo del banquero para varios recursos
2.4.1. El algoritmo del banquero se puede generalizar para manejar varios recursos.
3. CÓMO PREVENIR INTERBLOQUEOS
3.1. Cómo atacar la condición no apropiativa
3.1.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.
3.2. .
3.2.1. Cómo atacar la condición de exclusión mutua
3.2.1.1. Primero vamos a atacar la condición de exclusión mutua. Si ningún recurso se asignara de manera exclusiva a un solo proceso, nunca tendríamos interbloqueos
3.3. Cómo atacar la condición de contención y espera
3.3.1. Si podemos evitar que los procesos que contienen recursos esperen por más recursos, podemos eliminar los interbloqueos
3.4. Cómo atacar la condición de espera circular
3.4.1. 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
4. OTRAS CUESTIONES
4.1. Bloqueo de dos fases
4.1.1. Aunque los métodos para evitar y prevenir los interbloqueos no son muy prometedores en el caso general, para aplicaciones específicas se conocen muchos algoritmos excelentes de propósito especial.
4.1.1.1. Interbloqueos de comunicaciones
4.1.1.1.1. Un proceso desea algo que otro proceso tiene, y debe esperar a que el primero lo libere. Algunas veces los recursos son objetos de hardware o de software, como las unidades de CD-ROM o los registros de bases de datos, pero algunas veces son más abstractos.
4.2. Bloqueo activo
4.2.1. En ciertas situaciones se utiliza el sondeo (ocupado en espera). Esta estrategia se utiliza a menudo cuando se va a usar la exclusión mutua por un tiempo muy corto,
4.3. Inanición
4.3.1. Un problema muy relacionado con el interbloqueo y el bloqueo activo es la inanición. En un sistema dinámico, las peticiones de recursos ocurren todo el tiempo. Se necesita cierta política para decidir acerca de quién obtiene qué recurso y cuándo.
5. RECURSOS
5.1. Recursos apropiativos
5.1.1. es uno que se puede quitar al proceso que lo posee sin efectos dañinos.
5.2. no apropiativos
5.2.1. es uno que no se puede quitar a su propietario actual sin hacer que el cómputo falle
6. INTRODUCCIÓN A LOS INTERBLOQUEOS
6.1. Definición.- Un conjunto de procesos se encuentra en un interbloqueo si cada proceso en el conjunto está esperando un evento que sólo puede ser ocasionado por otro proceso en el conjunto.
6.1.1. 1. Condición de exclusión mutua. Cada recurso se asigna en un momento dado a sólo un proceso, o está disponible.
6.1.2. 2. Condición de contención y espera. Los procesos que actualmente contienen recursos que se les otorgaron antes pueden solicitar nuevos recursos.
6.1.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.
6.1.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.
6.2. Modelado de interbloqueos
6.2.1. Holt (1972) mostró cómo 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.
6.2.1.1. lidiar con interbloqueos
6.2.1.1.1. 1. Sólo ignorar el problema. Tal vez si usted lo ignora, él lo ignorará a usted.
6.2.1.1.2. 2. Detección y recuperación. Dejar que ocurran los interbloqueos, detectarlos y tomar acción.
6.2.1.1.3. 3. Evitarlos en forma dinámica mediante la asignación cuidadosa de los recursos.
6.2.1.1.4. 4. Prevención, al evitar estructuralmente una de las cuatro condiciones requeridas.