Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Bloqueo mutuo - Wikipedia, la enciclopedia libre

Bloqueo mutuo

De Wikipedia, la enciclopedia libre

Icono de copyedit

Este artículo necesita una revisión de gramática, ortografía y estilo.

Cuando el artículo esté corregido, borra esta plantilla, por favor.


En sistemas operativos, el bloqueo mutuo (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 cuatro autos que se encuentran en una intersección en el mismo momento. Cada uno necesita que otro se mueva para poder continuar su camino, y ninguno puede continuar. Los recursos compartidos en este caso son los cuatro cuadrantes. El auto que se dirije de oeste a este, por ejemplo, necesita de los cuadrantes suroeste y sureste.

    |         |
----|         |----
      _  ----
     | | ----
     |_| | |
     ----|_|
     ----
----|         |----
    |         |
    |         |

En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.

Tabla de contenidos

[editar] Condiciones necesarias

También conocidas como condiciones de Coffman por su primera descripción en 1971 en un artículo de E.G.Coffman.

Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes una de otra.

Sean los procesos Po, P1,.. Pn y los recursos Ro, R1,..., Rm:

  • Condición de exclusión mutua: Como mínimo un recurso Ri asignado a un proceso Pi no puede compartirse. Su uso es exclusivo del proceso que lo adquiere.
  • Condición de retención y espera: Al menos un proceso Pi ha adquirido un recurso Ri, y lo mantiene mientras espera al menos un recurso Rj que ya ha sido asignado a otro proceso.
  • Condición de no expropiación: Los recursos Rj ya asignados a otros procesos no pueden expropiarse. es decir, solo los procesos que tienen un recurso asignado pueden liberalo, ningún otro puede quitárselo.
  • Condición de espera circular: Dado el conjunto de procesos P0...Pn, P0 está esperando un recurso adquirido por P1, que está esperando un recurso adquirido por P2, que...,que está esperando un recurso adquirido por Pn, que está esperando un recurso adquirido por P0. Esta condición implica la condición de retención y espera.

[editar] Evitando bloqueos mutuos

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 satifasciendo 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.

[editar] 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 imprá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.

[editar] Livelock

Un livelock es similar a un deadlock, excepto que el estado de los dos procesos envueltos en el livelock constantemente cambia con respecto al otro. Livelock es una forma de inanición y la definición general sólo dice que un proceso específico no está procesando.

En un ejemplo del mundo real, un livelock ocurre por ejemplo cuando dos personas, al encontrarse en un pasillo angosto avanzando en sentidos opuestos, y cada una trata de ser amable moviéndose a un lado para dejar a la otra persona pasar, pero terminan moviéndose de lado a lado sin tener ningún progreso, pues ambos se mueven hacia el mismo lado, al mismo tiempo.

Livelock es un riesgo con algunos algoritmos que detectan y recuperan los deadlock, pues si más de uno toma cartas en el asunto, la detección del deadlock puede ser disparada continuamente; pudiendo ser arreglado asegurándose que sólo un proceso (escogido al azar o por prioridad) tome acción.

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com