Livelock: qué es, ejemplo, diferencia con Deadlock

¿Qué es LiveLock?

A livelock Es una situación en la que se rechaza repetidamente una solicitud de un bloqueo exclusivo, ya que muchos bloqueos compartidos superpuestos siguen interfiriendo entre sí. Los procesos siguen cambiando su estado, lo que les impide aún más completar la tarea. Esto les impide aún más completar la tarea.

Ejemplos de Livelock

Ejemplo 1:

Un ejemplo más sencillo de Livelock sería el de dos personas que se encuentran cara a cara en un pasillo y ambas se hacen a un lado para dejar pasar al otro. Terminan moviéndose de un lado a otro sin lograr ningún progreso ya que se mueven en la misma dirección en cada momento. Aquí nunca se cruzan.

Ejemplo 2:

Ejemplos de Livelock

Puede ver en la imagen de arriba que cada uno de los dos procesos dados necesita dos recursos y utilizan el registro de entrada de sondeo primitivo para intentar adquirir los bloqueos necesarios para ellos. Si el intento falla, el método vuelve a funcionar.

  1. Procesar un recurso Y retener
  2. El proceso B retiene el recurso X
  3. El proceso A requiere X recurso
  4. El proceso B requiere 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.

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

Por lo 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 una situación algo equivalente a un interbloqueo, que es LIVELOCK.

¿Qué lleva a Livelock?

Livelock ocurre cuando la cantidad total de procesos permitidos en un sistema específico debe definirse por la cantidad total de entradas en la tabla de procesos. Por lo tanto, las ranuras de la tabla de procesos deben denominarse Recursos Finitos.

¿Qué es un bloqueo?

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

Ejemplo de bloqueo

  • Un ejemplo del mundo real sería el tráfico, que va sólo en una dirección.
  • Aquí, un puente se considera un recurso.
  • Entonces, cuando ocurre un punto muerto, se puede resolver fácilmente si un automóvil retrocede (apropiarse de recursos y retroceder).
  • Es posible que sea necesario hacer marcha atrás con varios vehículos si se produce una situación de bloqueo.
  • Entonces morir de hambre es posible.
Ejemplo de bloqueo
Ejemplo de bloqueo

¿Qué es el hambre?

La inanición 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 ocurriendo de forma dinámica. Por lo tanto, se requiere alguna política para decidir quién recibe apoyo y cuándo.

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

Ejemplo de hambruna

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

Diferencia entre punto muerto, inanición y punto muerto

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

Resum

  • Definición: Un Livelock es una situación en la que se rechaza repetidamente una solicitud de un bloqueo exclusivo, 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 definirse por el número total de entradas en la tabla de procesos.
  • Un bloqueo es una situación que ocurre en el sistema operativo cuando cualquier proceso entra en un estado de espera porque otro proceso en espera está reteniendo el recurso solicitado.
  • Un ejemplo del mundo real sería el tráfico, que va sólo en una dirección.
  • Un ejemplo de Livelock sería dos personas que se encuentran cara a cara en un pasillo y ambas se hacen a un lado para dejar pasar al otro.
  • La inanición es una situación en la que todos los procesos de baja prioridad se bloquearon y los procesos de alta prioridad continúan.