Bloqueo en el DBMS

Un punto muerto es una condición en la que dos o más tareas se esperan para ser terminadas pero ninguna de ellas está dispuesta a renunciar a los recursos que la otra necesita. En esta situación ninguna tarea se termina nunca y está en estado de espera para siempre.
Diagrama de bloqueo

Las condiciones de Coffman

Coffman estableció cuatro condiciones para que se produzca un bloqueo. Un punto muerto puede ocurrir si todas las siguientes condiciones se cumplen.

  • Condición de exclusión mutua: Debe haber al menos un recurso que no pueda ser usado por más de un proceso a la vez.
  • Condición de espera: Un proceso que está reteniendo un recurso puede solicitar recursos adicionales que están siendo retenidos por otros procesos en el sistema.
  • No existe una condición de anticipación: Un recurso no puede ser tomado por la fuerza de un proceso. Sólo el proceso puede liberar un recurso que está siendo retenido por él.
  • Condición de espera circular: Una condición en la que un proceso está esperando un recurso que está siendo retenido por el segundo proceso y el segundo proceso está esperando el tercer proceso ….así sucesivamente y el último proceso está esperando el primer proceso. De esta manera se crea una cadena de espera circular.

Manejo de los bloqueos

Ignorar el punto muerto (Algoritmo del avestruz)

¿Eso te hizo reír? Te preguntarás cómo es posible que ignorar un punto muerto se convierta en un manejo de punto muerto. Pero para hacerte saber que las ventanas que estás usando en tu PC, usan este enfoque de manejo de bloqueo y es por eso que a veces se cuelga y tienes que reiniciarlo para que funcione. No sólo Windows sino también UNIX utiliza este enfoque.

La pregunta es ¿por qué? ¿Por qué en lugar de tratar con un bloqueo lo ignoran y por qué se llama algoritmo del Avestruz?

¡Bueno! Déjenme responder primero a la segunda pregunta, Esto se conoce como algoritmo del Avestruz porque en este enfoque ignoramos el punto muerto y pretendemos que nunca ocurriría, al igual que el comportamiento del Avestruz «meter la cabeza en la arena y pretender que no hay problema».

Discutamospor qué lo ignoramos: Cuando se cree que los callejones sin salida son muy raros y el costo de la manipulación de los mismos es mayor, en ese caso ignorar es mejor solución que manipularlos. Por ejemplo: Tomemos el ejemplo del sistema operativo – Si el tiempo que requiere manejar el bloqueo es mayor que el tiempo que requiere reiniciar las ventanas, entonces reiniciar sería una opción preferida considerando que los bloqueos son muy raros en las ventanas.

Detección de bloqueo

El programador de recursos es el que lleva el registro de los recursos asignados y solicitados por los procesos. Por lo tanto, si hay un bloqueo, el programador de recursos lo sabe. Así es como se detecta un bloqueo.

Una vez que se detecta un bloqueo, se corrige por los siguientes métodos:

  • Terminando los procesos involucrados en el bloqueo: Terminar todos los procesos involucrados en el bloqueo o terminar los procesos uno por uno hasta que se resuelva el bloqueo puede ser la solución, pero ambos enfoques no son buenos. Terminar todos los procesos cuesta mucho y el trabajo parcial hecho por los procesos se pierde. Terminar uno por uno lleva mucho tiempo porque cada vez que un proceso se termina, necesita comprobar si el bloqueo se resuelve o no. Por lo tanto, el mejor enfoque es considerar la edad y la prioridad de los procesos mientras se terminan durante una condición de bloqueo.
  • Prelación de recursos: Otro enfoque puede ser la anticipación de los recursos y su asignación a los otros procesos hasta que se resuelva el bloqueo.

Prevención del bloqueo

Hemos aprendido que si las cuatro condiciones de Coffman se cumplen, se produce un punto muerto, por lo que evitar una o más de ellas podría evitar el punto muerto.

  • Eliminando la exclusión mutua: Todos los recursos deben ser compartibles, lo que significa que más de un proceso puede hacerse con los recursos. Este enfoque es prácticamente imposible.
  • Eliminando la condición de espera y retención: Esto puede ser eliminado si el proceso adquiere todos los recursos que se necesitan antes de comenzar. Otra forma de eliminar esto para hacer cumplir una norma de solicitud de recursos cuando no hay ninguno retenido por el proceso.
  • Prelación de los recursos: La anticipación de recursos de un proceso puede resultar en un retroceso y por lo tanto esto debe ser evitado para mantener la consistencia y estabilidad del sistema.
  • Evite la condición de espera circular: Esto puede evitarse si los recursos se mantienen en una jerarquía y el proceso puede mantener los recursos en orden de precedencia creciente. Esto evita la espera circular. Otra forma de hacerlo es forzando una regla de un recurso por proceso: Un proceso puede solicitar un recurso una vez que libere el recurso que actualmente tiene en su poder. Esto evita la espera circular.

Evitar el bloqueo

El bloqueo puede evitarse si los recursos se asignan de tal manera que se evite que se produzca el bloqueo. Hay dos algoritmos para evitar el bloqueo.

Aquí está la representación en forma de tabla de la asignación de recursos para cada algoritmo. Ambos algoritmos tienen en cuenta la edad del proceso al tiempo que determinan la mejor manera posible de asignar los recursos para evitar el bloqueo.

Espera/muerte/esperaEl proceso del anciano necesita un recurso sostenido por un proceso más jovenElproceso del anciano esperaElproceso del anciano muereEl proceso del anciano necesita un recurso sostenido por un proceso más viejoElproceso del anciano muereElproceso del anciano esperaUna vez que el

famoso algoritmo de evasión de bloqueo es el algoritmo de Banker

Rate this post

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio