Abrazo mortal

4 views
Skip to first unread message

angel

unread,
Jan 22, 2010, 7:21:38 PM1/22/10
to ProgramacionAvanzadaURBE2010
¿Cómo se genera dicha condición?

jairo.maldonado

unread,
Jan 24, 2010, 3:53:22 PM1/24/10
to ProgramacionAvanzadaURBE2010
On 23 ene, 01:21, angel <agper...@gmail.com> wrote:
> ¿Cómo se genera dicha condición?

El abrazo mortal es un conjunto de procesos en un estado de espera tal
que ninguno de ellos tiene suficientes criterios para continuar su
ejecución.
Condiciones Necesarias para que Ocurra un Abrazo Mortal
Una situación de abrazo mortal puede surgir sí y solo sí las
siguientes cuatro condiciones ocurren simultáneamente en un sistema:
1. Exclusión Mutua. Los procesos reclaman control exclusivo
de los recursos que pide. Al menos un recurso es mantenido en un modo
no-compartible.
2. Retener y Esperar. Los procesos que regularmente
contienen recursos otorgados antes pueden solicitar nuevos recursos.
Debe existir un proceso que retenga al menos un recurso y esté
esperando para adquirir recursos adicionales que están siendo
retenidos por otros procesos.
3. No existe el derecho de desasignar. Los recursos no
pueden ser desasignados; esto es, un recurso sólo puede ser liberado
voluntariamente por el proceso que lo retiene, después de que el
proceso ha terminado su tarea.
4. Espera Circular. Debe haber una cadena de dos o más
procesos, cada uno de los cuales esté esperando un recurso contenido
en el siguiente miembro de la cadena.
Las cuatro condiciones deben de cumplirse para que pueda ocurrir
un abrazo mortal. La condición de espera circular implica la condición
de retener y esperar, de tal manera que las cuatro condiciones no son
totalmente independientes. Sin embargo, puede ser útil el considerar
cada condición por separado.

RICARDO ROMERO

unread,
Jan 24, 2010, 5:48:26 PM1/24/10
to ProgramacionAvanzadaURBE2010

On 22 ene, 20:21, angel <agper...@gmail.com> wrote:
> ¿Cómo se genera dicha condición?

Un conjunto de procesos está en un abrazo mortal cuando todos los
procesos en ese conjunto están esperando un evento que sólo puede ser
causado por otro proceso en el conjunto. Los eventos a los cuales nos
estamos refiriendo son concernientes con la asignación y liberación de
recursos principalmente. Sin embargo, otro tipo de eventos pueden
llevar a la existencia de abrazos mortales.
En la teoría de los sistemas operativos, se puede definir el problema
del Abrazo Mortal como la situación de un conjunto de procesos en un


estado de espera tal que ninguno de ellos tiene suficientes criterios
para continuar su ejecución.

Condiciones Necesarias para que Ocurra un Abrazo Mortal

Según Coffman (1971), existen cuatro condiciones que deben cumplirse
para que haya estancamiento. Una situación de abrazo mortal puede


surgir sí y solo sí las siguientes cuatro condiciones ocurren
simultáneamente en un sistema:
1. Exclusión Mutua. Los procesos reclaman control exclusivo de
los recursos que pide. Al menos un recurso es mantenido en un modo no-
compartible.
2. Retener y Esperar. Los procesos que regularmente contienen
recursos otorgados antes pueden solicitar nuevos recursos. Debe
existir un proceso que retenga al menos un recurso y esté esperando
para adquirir recursos adicionales que están siendo retenidos por
otros procesos.
3. No existe el derecho de desasignar. Los recursos no pueden ser
desasignados; esto es, un recurso sólo puede ser liberado
voluntariamente por el proceso que lo retiene, después de que el
proceso ha terminado su tarea.
4. Espera Circular. Debe haber una cadena de dos o más procesos,
cada uno de los cuales esté esperando un recurso contenido en el

siguiente miembro de la cadena. Debe existir un conjunto {p0,
p1, ...,pn} de procesos en espera tal que p0 esté esperando por un
recurso que está siendo retenido por p1, p1 está esperando por un
recurso que está siendo retenido por p2, ..., pn-1 está esperando por
un recurso que está siendo retenido por pn y pn está esperando por un
recurso que está siendo retenido por p0.


Las cuatro condiciones deben de cumplirse para que pueda ocurrir un
abrazo mortal. La condición de espera circular implica la condición de
retener y esperar, de tal manera que las cuatro condiciones no son
totalmente independientes. Sin embargo, puede ser útil el considerar
cada condición por separado.

Formas de Evitar un Abrazo Mortal
- Tener recursos compartidos
- Poder quitarle un recurso a un flujo
- Poder conseguir todos los recursos que necesita en forma
atómica.
- Ordenar las peticiones de recursos (tener que conseguirlos
en el mismo orden.

Exclusión mutua
Si nunca se asignara un recurso exclusivamente a un solo proceso,
nunca tendríamos estancamiento. No obstante, que al permitir que dos
procesos se ejecuten se llegaría al caos. Por lo tanto es una
condición que no queremos romper.
1.- Retener y esperar: La primera estrategia requiere que todos los
recursos que va a necesitar un proceso sean pedidos de una sola vez.
El sistema deberá asignarlos según el principio de "todo o nada". Con
ésto, se niega la condición de "espera por" y el bloqueo, no puede
producirse.

Esta estrategia puede llevar a un serio desperdicio de recursos, así
como a provocar postergación indefinida. ya que quizá no todos los
recursos requeridos estén disponibles al mismo tiempo.

Un enfoque de uso frecuente entre los implementadores de sistemas para
obtener una mejor utilización de recursos en estas circunstancias, es
dividir un programa en varios pasos que se ejecuten con una relativa
independencia uno del otro. Entonces, la asignación de recursos puede
ser controlada por pasos, en lugar de establecer un control del
proceso total. Esto puede reducir el desperdicio, pero implica gran
sobrecarga en el diseño de sistemas de aplicaciones, así como en su
ejecución.

Para ejemplificar la diferencia entre estos dos enfoques, considere un
proceso que copia un archivo de una unidad de cinta(1) a una unidad de
disco, ordena el archivo en disco, después imprime los resultados a
una impresora en línea y finalmente copia el archivo de disco a la
unidad de cinta(2). Si todos los recursos deben ser solicitados al
inicio del proceso, entonces el proceso debe iniciar solicitando la
unidad de cinta(1), la unidad de disco, la impresora en línea y la
unidad de cinta(2). Este proceso mantendrá las unidades de cinta (1) y
(2) durante la ejecución completa aunque solo las utilice al principio
y al final de su ejecución respectivamente.

El segundo método permite al proceso el solicitar inicialmente solo la
unidad de cinta(1) y la unidad de disco. Así puede copiar el archivo
de la unidad de cinta (1) a la unidad de disco y ordenarlo,
posteriormente debe liberar la unidad de cinta(1) y la unidad de
disco. El proceso debe de volver a solicitar la unidad de disco y la
impresora en línea para hacer la impresión. Después de imprimir debe
de liberar la unidad de disco y la impresora. Ahora debe de volver a
solicitar la unidad de disco y la unidad de cinta(2) para copiar el
archivo a cinta, debe liberar ambos recursos y terminar.

2.- No existe el derecho de desasignar: La tercera condición necesaria
es que no debe de existir el derecho de desasignar recursos que han
sido previamente asignados. Con el fin de asegurar que esta condición
no se cumpla, se puede usar la siguiente estrategia. Si un proceso que
está reteniendo algunos recursos solicita otro recurso que no puede
ser asignado inmediatamente (esto es, que el proceso
tenga que esperar), entonces todos los recursos que tiene este proceso
en espera son desasginados. Esto es, los recursos son liberados
implícitamente. Los recursos liberados son agregados a la lista de los
recursos por los cuales está esperando el proceso. El proceso solo
puede volver a ser reinicializado cuando haya obtenido otra vez todos
los recursos que tenía asignados así como el nuevo recurso que estaba
solicitando.

Alternativamente si un proceso solicita algunas recursos, primero
verificamos si estos están disponibles. Si es así, entonces se le
asignan. De otro modo, se verifica si están asignados a alguno de los
procesos que están en espera de recursos adicionales. Si es así, los
recursos deseados son desasginados del proceso en espera y asignados
al proceso solicitante. De otra manera (no están disponibles, ni
asignados a procesos en espera) el proceso que hace la solicitud debe
esperar. Pero, mientras está esperando, algunos de sus recursos pueden
ser desasignados solamente si estos son solicitados. Un proceso puede
ser reinicializado cuando se le asigna el recurso que había solicitado
y recupera cualquier recurso que haya sido desasignado mientras
esperaba.

Esta estrategia es utilizada usualmente sobre recursos cuyo estado
puede ser fácilmente salvado y restablecido posteriormente, ejemplo de
ellos son los registros del CPU y el espacio en la memoria. Este no
puede ser aplicado a recursos tales como impresoras.

3.- Espera circular: Con el fin de asegurarse de que la condición de
espera circular nunca se presente, se puede imponer un ordenamiento
total sobre todos los tipos de recursos. Esto es, asignamos a cada
tipo de recurso un número entero único, el cual permita comparar dos
recursos y determinar cuando uno precede al otro en el ordenamiento.

cristina diaz

unread,
Jan 24, 2010, 10:17:52 PM1/24/10
to programacionav...@googlegroups.com
Esta condición se genera cuando cada conjunto de procesos espera que ocurra algo que sólo puede ser producido por uno de  estos pertenecientes a un mismo conjunto sin tener que ser el mismo suceso. Como todos los procesos están en espera, ninguno de ellos será el primero en producir el suceso deseado y por tanto permanecerá esperando indefinidamente.

Una situación de abrazo mortal puede surgir sí y solo sí las siguientes cuatro condiciones ocurren simultáneamente en un sistema:

1.      Exclusión Mutua. Los procesos reclaman control exclusivo de los recursos que pide. Al menos un recurso es mantenido en un modo no-compartible.

2.      Retener y Esperar. Los procesos que regularmente contienen recursos otorgados antes pueden solicitar nuevos recursos. Debe existir un proceso que retenga al menos un recurso y esté esperando para adquirir recursos adicionales que están siendo retenidos por otros procesos.

3.      No existe el derecho de desasignar. Los recursos no pueden ser desasignados; esto es, un recurso sólo puede ser liberado voluntariamente por el proceso que lo retiene, después de que el proceso ha terminado su tarea.

4.      Espera Circular. Debe haber una cadena de dos o más procesos, cada uno de los cuales esté esperando un recurso contenido en el siguiente miembro de la cadena. Debe existir un conjunto {p0, p1, ...,pn} de procesos en espera tal que p0 esté esperando por un recurso que está siendo retenido por p1, p1 está esperando por un recurso que está siendo retenido por p2, ..., pn-1 está esperando por un recurso que está siendo retenido por pn y pn está esperando por un recurso que está siendo retenido por p0.

Las cuatro condiciones deben de cumplirse para que pueda ocurrir un abrazo mortal. La condición de espera circular implica la condición de retener y esperar, de tal manera que las cuatro condiciones no son totalmente independientes. Sin embargo, puede ser útil el considerar cada condición por separado.


2010/1/22 angel <agpe...@gmail.com>

Carlos Martinez

unread,
Jan 24, 2010, 10:53:50 PM1/24/10
to ProgramacionAvanzadaURBE2010
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 ser
satisfechas, por parte de dos o más procesos. En la vida real, un
ejemplo puede ser el de dos niños que intentan jugar al arco y flecha,
uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que
alguno libere lo que tomó.


Prevención

Los bloqueos mutuos pueden prevenirse asegurando que no suceda alguna
de las condiciones necesarias vistas anteriormente.

* Eliminando la exclusión mutua: ningún proceso puede tener acceso
exclusivo a un recurso. Esto es imposible para procesos que no pueden
ser encolados (puestos en un spool), e incluso con colas también
pueden ocurrir interbloqueos.

* La condición de retención y espera puede ser eliminada haciendo
que los procesos pidan todos los recursos que van a necesitar antes de
empezar. Este conocimiento por adelantado muchas veces es imposible
nuevamente. Otra forma es requerir a los procesos liberar todos sus
recursos antes de pedir todos los recursos que necesitan. Esto también
es poco práctico en general.

* La condición de no expropiación puede ser también imposible de
eliminar dado que un proceso debe poder tener un recurso por un cierto
tiempo o el procesamiento puede quedar inconsistente.

* La condición de espera circular es la más fácil de atacar. Se le
permite a un proceso poseer sólo un recurso en un determinado momento,
o una jerarquía puede ser impuesta de modo tal que los ciclos de
espera no sean posibles.


On 22 ene, 20:21, angel <agper...@gmail.com> wrote:

Ludovic Lugo

unread,
Jan 25, 2010, 3:19:02 PM1/25/10
to ProgramacionAvanzadaURBE2010
suele ocurrir cuando dos procesos requieren de varios recursos, y
aunque cada uno toma un recurso diferente, resulta que, para
continuar, requieren del recurso acaparado por el otro. Si ninguno de
ellos suelta el suyo y cede, los procesos nunca termiana

On 22 ene, 20:21, angel <agper...@gmail.com> wrote:

Orlando Castro

unread,
Jan 25, 2010, 3:57:56 PM1/25/10
to ProgramacionAvanzadaURBE2010
El abrazo mortal o tambien llamado InterBloqueo. Se genera cuando 1
proceso requiere recursos que esta utilizando otro proceso y
viceversa. Explicandolo con un ejemplo: puede ocurrir el proceso B
necesite un recurso que esté siendo usado por el proceso A. Por
ejemplo, imaginemos que A está usando el CDROM y que B lo necesita
imperativamente para continuar funcionando. Aqui se complica la cosa,
porque ahora el proceso B se detiene a la espera de obtener el CDROM,
que está en poder del proceso A, que a su vez está detenido a la
espera de que se libere la conexión de red, que está siendo usada por
B. En ese momento ocurre que ninguno de los 2 procesos podra continuar
hasta que el otro suelte el recurso (cosa que no pasara por si sola).

Ocurre en los Sistemas Operativos no es muy frecuente pero aun asi
sucede, como una anecdota ley que en los años 70 al apagar un
ordenador encontraron un proceso de baja prioridad "lanzado" diez años
antes; y que todavía estaba allí, esperando a que le asignaran un
recurso que necesitaba para continuar.

Orlando Castro
20690388
N813

rafael antonio ramirez

unread,
Feb 5, 2010, 6:30:09 PM2/5/10
to programacionav...@googlegroups.com
informe grupo 4

Informe Programacion Avanzada.doc
Reply all
Reply to author
Forward
0 new messages