El deadlock es el problema mas serio que se puede presentar en un sistema operativo en el ambienete de concurrencia, por tanto menciona que es el deadlock, porque se presenta y cuales con las tecnicas para prevenirlo.
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.
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
Algoritmo del banquero, introducido por Dijkstra. Algoritmo de grafo de asignación de recursos. Algoritmo de Seguridad. Algoritmo de solicitud de recursos.
como dijo jose luis es un bloqueo de procesos y la forma que se presenta el problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo anularse entre si, lo cual es algo que depende del azar. Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
la forma de prevenirlo es asegurando que no suceda alguna de las condiciones necesarias vistas. • Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso. • 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. • 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.
Deadlock El sistema tiene recursos de varios tipos: memoria, archivos, grabadores, impresoras, etc. Podemos tener más de un ejemplar de un tipo de recurso.Cada uno de los ejemplares pueden satisfacer un solicitud de un proceso para el recurso. Condiciones necesarias de deadlock: *Exclusión mutua. Por lo menos un recurso debe retenerse no compartido. *Retención y espera. Debe haber un proceso que retenga por lo menos un recurso y espere adquirir más recursos retenidos por otros. *No apropiación. Los recursos no se pueden expropiar. Los procesos liberan recursos sólo voluntariamente. *Espera circular. Debe haber un conjunto {P0, P1, ..., Pn} de procesos en espera tales que P0 espere un recurso de P1, P1 un recurso de P2, ..., y Pn un recurso de P0. Podemos usar un grafo de asignación de recursos para describir deadlock. Tenemos procesos (círculos), recursos (rectángulos con un punto para cada ejemplar), aristas de solicitud y de asignación (cambio instantáneamente). Un grafo sin ciclos implica que no hay deadlock. Si hay un ciclo, es posible que exista deadlock. Un ciclo es una condición necesaria pero no suficiente para deadlock.
PREVENCION DEL DEADLOCK Deadlock no puede occurir a menos que tenemos todas las cuatro condiciones. Si aseguramos que no puede occurir por lo menos una de las condiciones, no podemos tener deadlock. • Exclusión mutua. En general, no podemos eliminar esta condición. Hay recursos como impresoras que no son compartibles. • Retención y espera. Para no occurir esta condición, cuando un proceso solicita recursos, no puede retener otros. Protocolos: o Un proceso puede solicitar recursos solamente si no tiene ningunos. o Un proceso tiene que solicitar todos los recursos antes de la ejecución. Problemas: o La utilización de recursos puede ser baja. o Starvation (bloqueo indefinido) si se necesitan algunos recursos populares.
bueno esto es lo que le entendi pero no se si este bien profesora judith si hay algun error acepto criticas costructivas gracias.
Deadlock (o abrazo mortal o interbloqueo): cuando una transacción T1 está bloqueada esperando a que otra T2 libere un lock, la cual también está bloqueada esperando a que T1 libere uno de sus lock. Se puede generalizar para N transacciones.
Prevención de deadlocks
Cada transacción obtiene todos los locks al principio y si no puede entonces no obtiene ninguno. Problema de livelock (inanición de algunas transacciones que pueden no obtener todos los que necesiten) Los elementos de la BD están ordenados de alguna manera y los lock hay que obtenerlos en dicho orden. Los programadores deben controlarlo
Detección y recuperación de deadlocks.
A medida que se piden y conceden los lock se construye un grafo de las transacciones que están esperando a otras. Si existe un ciclo en dicho grafo: deadlock. Hay que proceder a abortar a alguna de las transacciones. Problema de livelock si se aborta siempre a la misma!
Pueden ocurrir q procesos en espera cambien de estado, pues los recurson que han solicitado han sido tomados por otro proceso en espera. Por ejemplo si en un sistema con 4 unidades y dos procesos cada uno de los cuales an tomado 2 unidades pero necesita n 3, cada una de ellos espera q el otro libere las cintas. esta se conoce como un delock(abrazo mortal).
una solucion es que sedebe segir un protocolo.para prevenirpodemos usar estas condiciones 1.-exclucion mutua 2.-retencion y espera 3.-no existencia de 4.-desasignacion forzada 5.-espera circular
para mas imformacion consult: http://www.scribd.com/doc/2994670/deadlock-capitulo-8
El deadlock se da cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.
ESTO ES LO MAS IMPORTANTE PARA MI.. El deadlock es una condición que ningún sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias:
La condición de no apropiación La condición de espera circular La condición de exclusión mutua La condición de ocupar y esperar un recurso.
si el deadlock involucra a todos los procesos del sistema, el sistema ya no podrá hacer algo productivo.
Si el deadlock involucra algunos procesos, éstos quedarán congelados para siempre.
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ó.
El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un círculo y el recurso, por un cuadrado. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
Algoritmo del banquero, introducido por Dijkstra. Algoritmo de grafo de asignación de recursos. Algoritmo de Seguridad. Algoritmo de solicitud de recursos.
En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, deadlock)es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.
como tratar de evitarlo
Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso 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
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
UN DEADLOCK; Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Los deadlocks se producen cuando un hilo se bloquea esperando un recurso que tiene bloqueado otro hilo que est´a esperando un recurso. Si el recurso para el segundo thread no llega nunca, no se desbloquear´a nunca, con lo cual tampoco se desbloquear´a nunca el primer thread. Lo que trae como resultado es que nuestro programa se bloquee.
********COMO LO PREVENIMOS****************** Sem´aforos recursivos Estos sem´aforos solo aceptar´an una sola petici´on de bloqueo por el mismo thread. Con los sem´aforos normales, si el mismo thread hace 10 llamadas a pthread mutex lock sobre el mismo sem´aforo, luego tendr´a que hacer 10 llamadas a pthread mutex unlock, es decir, tantas como haya hecho a pthread mutex lock. En cambio, los del tipo recursivo solo aceptar´an una sola llamada a pthread mutex lock. Las siguientes llamadas ser´an ignoradas, con lo que ya eliminamos un tipo de deadlock. Para poder crear un sem´aforo recursivo, tendremos que dec´ırselo a pthread mutex init, indic´andole como atributo el resultado de una llamada a pthread mutexattr settype. El procedimiento es: 1. Definir una variable del tipo pthread mutexattr t: pthread mutexattr t mutex attr; 2. Inicializarla con la llamada a phtread mutexattr init: pthread mutexattr init(&mutex attr); 10 3. Indicarle el tipo expl´ıcitamente mediante pthread mutexattr settype: pthread mutexattr settype(&mutex attr, tipo); Donde tipo puede ser PTHREAD MUTEX NORMAL, PTHREAD MUTEX DEFAULT (el que se usa por defecto), PTHREAD MUTEX RECURSIVE ¶o PTHREAD MUTEX ERRORCHECK. 4. Probar antes de entrar: Si creemos que la siguiente llamada a pthread mutex lock va a ser bloqueante y que puede provocar un deadlock, la librer´ıa de Pthreads nos ofrece una funci´on m´as para comprobar si eso es cierto: pthread mutex trylock. Funci¶on de comprobaci¶on int pthread mutex trylock(pthread mutex t *mutex); mutex: Es el mutex sobre el cual queremos realizar la prueba de bloqueo. La funci´on devuelve EBUSY si el el thread llamante se bloquear´a o 0 en caso contrario. Si no se produce el bloqueo, la funci´on act´ua igual que phtread mutex lock, adquiriendo el bloqueo sobre el sem´aforo.
este problema surge cuando varios procesos comparten reursos, por ejemplo cuando un proceso espera un recurso pero este no esta disponible ya que esta asignado a un proceso que a su vez esta en estado de espera. Deben haber 4 condiciones para que se produzca el deadlock: 1) Mutua exclusión 2) Retención y espera 3) No remoción 4) Espera circular
y para prevenirlo: Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
-Algoritmo del banquero, introducido por Dijkstra. -Algoritmo de grafo de asignación de recursos. -Algoritmo de Seguridad. -Algoritmo de solicitud de recursos.
Esto es lo que yo encontré profe, de hecho es algo de lo que mencionan mis ,compañeros. Deadlock, traba mortal, 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. Prevención: Significa imponer reglas o restricciones que me aseguren que no se va a producir el DEADLOCK. Recuperación Las formas de recuperar pueden ser: 1) Cancelo la ejecución del sistema y recomienzo. 2) Individualizar los procesos que causan DEAD-LOCK y cancelarlos. 3) Individualizar los procesos que causan DEAD-LOCK, desasignar los recursos y posponer su ejecución. La solución más común es cancelar la ejecución de uno o más procesos, otra solución es la de remover algunos recursos de uno o más procesos en DEAD LOCK.
hola chamacos y chamacas.... hola profe... EL DEADLOCK (conocido comunmente como,muerte por bloqueo)...
El problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo anularse entre si, lo cual es algo que depende del azar. Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
sin embargo en un sistema de multiprogramación varios procesos, pueden competir por una cantidad de recursos. Un proceso requiere recursos y si los recursos no estan disponibles, el proceso entra en estado de espera. Puede suceder que el proceso que espera nunca cambie su estado debido a que los recursos que requiere, están asignados a otros procesos, que a su vez están en estado de espera. También surge el problema del aplazamiento indefinido en el que el proceso, aunque no este en deadlock puede esperar largo tiempo, por un evento debido a la predisposición de los controles de planificación de recursos del sistema. Hay 4 condiciones que tienen que estar presentes para que se produzca el deadlock:
1) Mutua exclusión 2) Retención y espera 3) No remoción 4) Espera circular
QUE ES DEADLOCK (muerte por bloqueo) El problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo anularse entre si, lo cual es algo que depende del azar. Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
Hay 4 condiciones que tienen que estar presentes para que se produzca el deadlock:
1) Mutua exclusión : Se refiere a procesos que reclaman control exclusivo de los recursos que solicitan. Al menos un recurso esta asignado, si otro proceso requiere este recurso deberá esperar hasta que sea liberado. 2) Retención y espera: Existe un proceso que tiene asignado recursos y que esta esperando por otros recursos adicionales que están siendo usados por otros procesos. 3) No remoción: Recursos que no pueden ser removidos de los procesos que los poseen hasta que sean usados completamente, es decir un recurso puede ser solamente liberado voluntariamente por el proceso que lo tiene asignado, y no existe opción de quitárselo al sistema mientras este siendo usado. 4) Espera circular: Se refiere a que existe un conjunto de procesos (PO, P1, P2, ... PN) tal que PO está esperando por un recurso asignado a P1, ..., PN-1 está esperando por un recurso asignado a PN y PN esta esperando por un recurso asignado a PO. Tiene asignado un recurso y esta esperando por un recurso.
AREAS PARA LA INVESTIGACION DEL DEADLOCK
1. Prevención: Significa imponer reglas o restricciones que me aseguren que no se va a producir el DEADLOCK. 2. Evasión: Es darse cuenta que una serie de requerimientos pueden provocar DEADLOCK y en consiguiente no permitir que esa serie de requerimientos se produzca; por ejemplo, no pasar a estados de espera con recursos asignados. Métodos para manejar el DEADLOCK: Podemos usar algún protocolo para asegurar que el sistema nunca entre en deadlock. Podemos dejar que el sistema entre en deadlock y luego tratar de recuperarlo. Estado seguro: Es aquel que satisface los requerimientos de recursos a cada proceso (hasta su máximo) impidiendo el deadlock, es decir es tal que a todos los procesos les será posible finalizar y por consiguiente no habrá deadlock. El estado inseguro es lo contrario. 4. Recuperación Las formas de recuperar pueden ser: 1) Cancelo la ejecución del sistema y recomienzo. 2) Individualizar los procesos que causan DEAD-LOCK y cancelarlos. 3) Individualizar los procesos que causan DEAD-LOCK, desasignar los recursos y posponer su ejecución. La solución más común es cancelar la ejecución de uno o más procesos, otra solución es la de remover algunos recursos de uno o más procesos en DEAD LOCK. Si se usa el criterio de remoción entonces hay que seleccionar la víctima, o sea a que proceso le saco y que recursos saco. Los elementos a tener en cuenta son: - Prioridad de procesos. - Tiempo que ha ejecutado cada proceso. - Cantidad de recursos asignados. - Cantidad de recursos adicionales que el proceso necesita para finalizar.
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.
ResponderEliminarLos bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
ResponderEliminarAlgoritmo del banquero, introducido por Dijkstra.
Algoritmo de grafo de asignación de recursos.
Algoritmo de Seguridad.
Algoritmo de solicitud de recursos.
como dijo jose luis es un bloqueo de procesos y la forma que se presenta el problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo
ResponderEliminaranularse entre si, lo cual es algo que depende del azar.
Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
la forma de prevenirlo es asegurando que no suceda alguna de las condiciones necesarias vistas.
ResponderEliminar• Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso.
• 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.
• 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.
Deadlock
ResponderEliminarEl sistema tiene recursos de varios tipos: memoria, archivos, grabadores, impresoras, etc. Podemos tener más de un ejemplar de un tipo de recurso.Cada uno de los ejemplares pueden satisfacer un solicitud de un proceso para el recurso.
Condiciones necesarias de deadlock:
*Exclusión mutua. Por lo menos un recurso debe retenerse no compartido.
*Retención y espera. Debe haber un proceso que retenga por lo menos un recurso y espere adquirir más recursos retenidos por otros.
*No apropiación. Los recursos no se pueden expropiar. Los procesos liberan recursos sólo voluntariamente.
*Espera circular. Debe haber un conjunto {P0, P1, ..., Pn} de procesos en espera tales que P0 espere un recurso de P1, P1 un recurso de P2, ..., y Pn un recurso de P0.
Podemos usar un grafo de asignación de recursos para describir deadlock. Tenemos procesos (círculos), recursos (rectángulos con un punto para cada ejemplar), aristas de solicitud y de asignación (cambio instantáneamente). Un grafo sin ciclos implica que no hay deadlock. Si hay un ciclo, es posible que exista deadlock. Un ciclo es una condición necesaria pero no suficiente para deadlock.
PREVENCION DEL DEADLOCK
Deadlock no puede occurir a menos que tenemos todas las cuatro condiciones. Si aseguramos que no puede occurir por lo menos una de las condiciones, no podemos tener deadlock.
• Exclusión mutua. En general, no podemos eliminar esta condición. Hay recursos como impresoras que no son compartibles.
• Retención y espera. Para no occurir esta condición, cuando un proceso solicita recursos, no puede retener otros. Protocolos:
o Un proceso puede solicitar recursos solamente si no tiene ningunos.
o Un proceso tiene que solicitar todos los recursos antes de la ejecución.
Problemas:
o La utilización de recursos puede ser baja.
o Starvation (bloqueo indefinido) si se necesitan algunos recursos populares.
bueno esto es lo que le entendi pero no se si este bien profesora judith si hay algun error acepto criticas costructivas gracias.
ResponderEliminarDeadlock (o abrazo mortal o interbloqueo): cuando una transacción T1 está bloqueada esperando a que otra T2 libere un lock, la cual también está bloqueada esperando a que T1 libere uno de sus lock. Se puede generalizar para N transacciones.
Prevención de deadlocks
Cada transacción obtiene todos los locks al principio y si no puede entonces no obtiene ninguno. Problema de livelock (inanición de algunas transacciones que pueden no obtener todos los que necesiten)
Los elementos de la BD están ordenados de alguna manera y los lock hay que obtenerlos en dicho orden. Los programadores deben controlarlo
Detección y recuperación de deadlocks.
A medida que se piden y conceden los lock se construye un grafo de las transacciones que están esperando a otras. Si existe un ciclo en dicho grafo: deadlock. Hay que proceder a abortar a alguna de las transacciones. Problema de livelock si se aborta siempre a la misma!
Pueden ocurrir q procesos en espera cambien de estado, pues los recurson que han solicitado han sido tomados por otro proceso en espera. Por ejemplo si en un sistema con 4 unidades y dos procesos cada uno de los cuales an tomado 2 unidades pero necesita n 3, cada una de ellos espera q el otro libere las cintas. esta se conoce como un delock(abrazo mortal).
ResponderEliminaruna solucion es que sedebe segir un protocolo.para prevenirpodemos usar estas condiciones
1.-exclucion mutua
2.-retencion y espera
3.-no existencia de 4.-desasignacion forzada
5.-espera circular
para mas imformacion consult:
http://www.scribd.com/doc/2994670/deadlock-capitulo-8
El deadlock se da cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
ResponderEliminarSe dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.
ESTO ES LO MAS IMPORTANTE PARA MI..
ResponderEliminarEl deadlock es una condición que ningún sistema o conjunto de procesos quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro condiciones necesarias:
La condición de no apropiación
La condición de espera circular
La condición de exclusión mutua
La condición de ocupar y esperar un recurso.
si el deadlock involucra a todos los procesos del sistema, el sistema ya no podrá hacer algo productivo.
Si el deadlock involucra algunos procesos, éstos quedarán congelados para siempre.
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.
ResponderEliminarTodos 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ó.
El Bloqueo mutuo también puede ser representado usando grafos dirigidos, donde el proceso es representado por un círculo y el recurso, por un cuadrado. Cuando un proceso solicita un recurso, una flecha es dirigida del círculo al cuadrado. Cuando un recurso es asignado a un proceso, una flecha es dirigida del cuadrado al círculo.
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
Algoritmo del banquero, introducido por Dijkstra.
Algoritmo de grafo de asignación de recursos.
Algoritmo de Seguridad.
Algoritmo de solicitud de recursos.
bueno para empezar defino que es un deadlock:
ResponderEliminarEn sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, deadlock)es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.
como tratar de evitarlo
Eliminando la exclusión mutua: ningún proceso puede tener acceso exclusivo a un recurso
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
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
UN DEADLOCK; Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
ResponderEliminarUn proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked).
En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Los deadlocks se producen cuando un hilo se bloquea esperando un recurso
que tiene bloqueado otro hilo que est´a esperando un recurso. Si el recurso
para el segundo thread no llega nunca, no se desbloquear´a nunca, con lo
cual tampoco se desbloquear´a nunca el primer thread. Lo que trae como
resultado es que nuestro programa se bloquee.
********COMO LO PREVENIMOS******************
Sem´aforos recursivos
Estos sem´aforos solo aceptar´an una sola petici´on de bloqueo por el mismo
thread. Con los sem´aforos normales, si el mismo thread hace 10 llamadas
a pthread mutex lock sobre el mismo sem´aforo, luego tendr´a que hacer
10 llamadas a pthread mutex unlock, es decir, tantas como haya hecho a
pthread mutex lock.
En cambio, los del tipo recursivo solo aceptar´an una sola llamada a
pthread mutex lock. Las siguientes llamadas ser´an ignoradas, con lo que
ya eliminamos un tipo de deadlock.
Para poder crear un sem´aforo recursivo, tendremos que dec´ırselo a
pthread mutex init, indic´andole como atributo el resultado de una llamada
a pthread mutexattr settype.
El procedimiento es:
1. Definir una variable del tipo pthread mutexattr t:
pthread mutexattr t mutex attr;
2. Inicializarla con la llamada a phtread mutexattr init:
pthread mutexattr init(&mutex attr);
10
3. Indicarle el tipo expl´ıcitamente mediante pthread mutexattr settype:
pthread mutexattr settype(&mutex attr, tipo);
Donde tipo puede ser PTHREAD MUTEX NORMAL, PTHREAD MUTEX DEFAULT
(el que se usa por defecto), PTHREAD MUTEX RECURSIVE
¶o PTHREAD MUTEX ERRORCHECK.
4. Probar antes de entrar:
Si creemos que la siguiente llamada a pthread mutex lock va a ser
bloqueante y que puede provocar un deadlock, la librer´ıa de Pthreads
nos ofrece una funci´on m´as para comprobar si eso es cierto:
pthread mutex trylock.
Funci¶on de comprobaci¶on
int pthread mutex trylock(pthread mutex t *mutex);
mutex: Es el mutex sobre el cual queremos realizar la prueba de
bloqueo.
La funci´on devuelve EBUSY si el el thread llamante se bloquear´a o 0
en caso contrario. Si no se produce el bloqueo, la funci´on act´ua igual
que phtread mutex lock, adquiriendo el bloqueo sobre el sem´aforo.
este problema surge cuando varios procesos comparten reursos, por ejemplo cuando un proceso espera un recurso pero este no esta disponible ya que esta asignado a un proceso que a su vez esta en estado de espera.
ResponderEliminarDeben haber 4 condiciones para que se
produzca el deadlock:
1) Mutua exclusión
2) Retención y espera
3) No remoción
4) Espera circular
y para prevenirlo:
Los bloqueos mutuos pueden ser evitados si se sabe cierta información sobre los procesos antes de la asignación de recursos. Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedará en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado será seguro o inseguro, debe saber por adelantado y en cualquier momento el número y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos:
-Algoritmo del banquero, introducido por Dijkstra.
-Algoritmo de grafo de asignación de recursos.
-Algoritmo de Seguridad.
-Algoritmo de solicitud de recursos.
Esto es lo que yo encontré profe, de hecho es algo de lo que mencionan mis ,compañeros.
ResponderEliminarDeadlock, traba mortal, 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.
Prevención:
Significa imponer reglas o restricciones que me aseguren que no se va a producir el DEADLOCK.
Recuperación
Las formas de recuperar pueden ser:
1) Cancelo la ejecución del sistema y recomienzo.
2) Individualizar los procesos que causan DEAD-LOCK y cancelarlos.
3) Individualizar los procesos que causan DEAD-LOCK, desasignar los recursos y posponer
su ejecución.
La solución más común es cancelar la ejecución de uno o más procesos, otra solución es la de
remover algunos recursos de uno o más procesos en DEAD LOCK.
hola chamacos y chamacas.... hola profe...
ResponderEliminarEL DEADLOCK (conocido comunmente como,muerte por bloqueo)...
El problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo anularse entre si, lo cual es algo que depende del azar. Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
sin embargo en un sistema de multiprogramación varios procesos, pueden competir por una cantidad de recursos. Un proceso requiere recursos y si los recursos no estan disponibles, el proceso entra en estado de espera. Puede suceder que el proceso que espera nunca cambie su estado debido a que los recursos que requiere, están asignados a otros procesos, que a su vez están en estado de espera. También surge el problema del aplazamiento indefinido en el que el proceso, aunque no este en deadlock puede esperar largo tiempo, por un evento debido a la predisposición de los controles de planificación de recursos del sistema. Hay 4 condiciones que tienen que estar presentes para que se produzca el deadlock:
1) Mutua exclusión
2) Retención y espera
3) No remoción
4) Espera circular
QUE ES DEADLOCK (muerte por bloqueo)
ResponderEliminarEl problema ocurre al alternar varias tareas compartiendo recursos en forma simultánea, pudiendo
anularse entre si, lo cual es algo que depende del azar.
Aplazamiento indefinido: Se espera en forma indefinida por la liberación de un recurso.
Hay 4 condiciones que tienen que estar presentes para que se
produzca el deadlock:
1) Mutua exclusión : Se refiere a procesos que reclaman control exclusivo de los recursos que
solicitan. Al menos un recurso esta asignado, si otro proceso requiere este recurso deberá esperar
hasta que sea liberado.
2) Retención y espera: Existe un proceso que tiene asignado recursos y que esta esperando por
otros recursos adicionales que están siendo usados por otros procesos.
3) No remoción: Recursos que no pueden ser removidos de los procesos que los poseen hasta que
sean usados completamente, es decir un recurso puede ser solamente liberado voluntariamente por
el proceso que lo tiene asignado, y no existe opción de quitárselo al sistema mientras este siendo
usado.
4) Espera circular: Se refiere a que existe un conjunto de procesos (PO, P1, P2, ... PN) tal que PO
está esperando por un recurso asignado a P1, ..., PN-1 está esperando por un recurso asignado a
PN y PN esta esperando por un recurso asignado a PO. Tiene asignado un recurso y esta esperando
por un recurso.
AREAS PARA LA INVESTIGACION DEL DEADLOCK
1. Prevención:
Significa imponer reglas o restricciones que me aseguren que no se va a producir el DEADLOCK.
2. Evasión:
Es darse cuenta que una serie de requerimientos pueden provocar DEADLOCK y en
consiguiente no permitir que esa serie de requerimientos se produzca; por ejemplo, no pasar a
estados de espera con recursos asignados.
Métodos para manejar el DEADLOCK: Podemos usar algún protocolo para asegurar que el
sistema nunca entre en deadlock. Podemos dejar que el sistema entre en deadlock y luego tratar
de recuperarlo.
Estado seguro: Es aquel que satisface los requerimientos de recursos a cada proceso (hasta su
máximo) impidiendo el deadlock, es decir es tal que a todos los procesos les será posible
finalizar y por consiguiente no habrá deadlock. El estado inseguro es lo contrario.
4. Recuperación
Las formas de recuperar pueden ser:
1) Cancelo la ejecución del sistema y recomienzo.
2) Individualizar los procesos que causan DEAD-LOCK y cancelarlos.
3) Individualizar los procesos que causan DEAD-LOCK, desasignar los recursos y posponer
su ejecución.
La solución más común es cancelar la ejecución de uno o más procesos, otra solución es la de
remover algunos recursos de uno o más procesos en DEAD LOCK. Si se usa el criterio de remoción
entonces hay que seleccionar la víctima, o sea a que proceso le saco y que recursos saco.
Los elementos a tener en cuenta son:
- Prioridad de procesos.
- Tiempo que ha ejecutado cada proceso.
- Cantidad de recursos asignados.
- Cantidad de recursos adicionales que el proceso necesita para finalizar.