Livelock: Qué es, ejemplo, diferencia con Deadlock

¿Qué es Livelock?

Un Livelock es una situación en la que una solicitud de bloqueo exclusivo se niega repetidamente, ya que muchos bloqueos compartidos superpuestos siguen interfiriendo entre sí. Los procesos siguen cambiando su estado, lo que les impide completar la tarea. Esto además les impide completar la tarea.

En este tutorial del sistema operativo, aprenderá:

  • ¿Qué es Livelock?
  • Ejemplos de Livelock
  • ¿Qué conduce a Livelock?
  • ¿Qué es Deadlock?
  • Ejemplo de interbloqueo
  • ¿Qué es el hambre?
  • Diferencia entre Deadlock, Starvation y Livelock

Ejemplos de Livelock

Ejemplo 1:

Un ejemplo más fácil de Livelock sería dos personas que se encuentran cara a cara en un pasillo, y ambos se hacen a un lado para dejar pasar al otro. Terminan moviéndose de lado a lado sin hacer ningún progreso ya que se mueven de la misma manera en ese momento. Aquí, nunca se cruzan.

Ejemplo 2:

Como puede ver en la imagen de arriba, cada uno de los dos procesos dados necesita dos recursos, y utilizan el sondeo primitivo para ingresar al registro para intentar adquirir los bloqueos necesarios para ellos. Si el intento falla, el método funciona nuevamente.

  1. El proceso A mantiene el recurso Y
  2. El proceso B contiene el recurso X
  3. El proceso A requiere X recurso
  4. El proceso B requiere el recurso Y

Suponiendo que el proceso A se ejecuta primero y adquiere el recurso de datos X y luego el proceso B se ejecuta y adquiere el recurso Y, no importa qué proceso se ejecute primero, ninguno de ellos avanza más.

Sin embargo, ninguno de los dos procesos está bloqueado. Utilizan los recursos de la CPU repetidamente sin que se produzca ningún progreso, pero también detienen cualquier bloque de procesamiento.

Por tanto, esta situación no es la de un punto muerto porque no hay un solo proceso que esté bloqueado, sino que nos enfrentamos a la situación algo equivalente a un punto muerto, que es LIVELOCK.

¿Qué conduce a Livelock?

Livelock ocurre cuando el número total de procesos permitidos en un sistema específico debe ser definido por el número total de entradas en la tabla de procesos. Por lo tanto, las ranuras de la tabla de procesos deben denominarse recursos finitos.

¿Qué es Deadlock?

Un interbloqueo es una situación que ocurre en el sistema operativo cuando cualquier proceso entra en un estado de espera porque otro proceso de espera está reteniendo el recurso demandado. El interbloqueo es un problema común en el multiproceso donde varios procesos comparten un tipo específico de recurso mutuamente excluyente conocido como bloqueo suave o software.

Ejemplo de interbloqueo

  • Un ejemplo del mundo real sería el tráfico, que solo va en una dirección.
  • Aquí, un puente se considera un recurso.
  • Por lo tanto, cuando ocurre un punto muerto, se puede resolver fácilmente si un automóvil retrocede (recursos anticipados y retroceso).
  • Es posible que sea necesario hacer una copia de seguridad de varios automóviles si se produce una situación de bloqueo.
  • Entonces el hambre es posible.
Ejemplo de interbloqueo

¿Qué es el hambre?

El hambre es una situación en la que todos los procesos de baja prioridad se bloquearon y los procesos de alta prioridad continúan. En cualquier sistema, las solicitudes de recursos de alta / baja prioridad siguen sucediendo de forma dinámica. Por lo tanto, se requiere alguna política para decidir quién recibe apoyo y cuándo.

Con algunos algoritmos, es posible que algunos procesos no obtengan el servicio deseado aunque no estén bloqueados. La inanición ocurre cuando algunos subprocesos hacen que los recursos compartidos no estén disponibles durante un largo período de tiempo.

Ejemplo de hambre:

Por ejemplo, un objeto ofrece un método sincronizado que probablemente tarde mucho en volver. Si un subproceso utiliza este método con frecuencia, a menudo se bloquearán otros subprocesos que también necesitan acceso frecuente sincronizado al mismo objeto.

Diferencia entre Deadlock, Starvation y Livelock

  • Un interbloqueo es una situación que ocurre en el sistema operativo cuando cualquier proceso entra en un estado de espera porque el recurso demandado está siendo retenido por otro proceso en espera.
  • Un livelock, por otro lado, es casi similar a un interbloqueo, excepto que los estados de los procesos que están involucrados en un livelock siempre cambian entre sí, ninguno progresa.
  • Entonces, Livelock es un caso único de escasez de recursos.

Resumen:

  • Definición: Un Livelock es una situación en la que una solicitud de bloqueo exclusivo se niega repetidamente, ya que muchos bloqueos compartidos superpuestos siguen interfiriendo entre sí.
  • Livelock ocurre cuando el número total de procesos permitidos en un sistema específico debe ser definido por el número total de entradas en la tabla de procesos.
  • Un interbloqueo es una situación que ocurre en el sistema operativo cuando cualquier proceso entra en un estado de espera porque otro proceso de espera está reteniendo el recurso demandado.
  • Un ejemplo del mundo real sería el tráfico, que solo va en una dirección.
  • Un ejemplo de Livelock sería dos personas que se encuentran cara a cara en un pasillo, y ambos se hacen a un lado para dejar pasar al otro.
  • El hambre es una situación en la que todos los procesos de baja prioridad se bloquearon y los procesos de alta prioridad continúan.

Articulos interesantes...