Livelock: qué es, ejemplo, diferencia con Deadlock
⚡ Resumen inteligente
El Livelock es una situación de concurrencia en la que los procesos cambian constantemente de estado en respuesta unos a otros, pero no logran ningún progreso real, permaneciendo activos y consumiendo ciclos de CPU sin completar nunca sus tareas ni quedar bloqueados.
¿Qué es LiveLock?
A livelock es una situación en la que se deniega repetidamente una solicitud de bloqueo exclusivo, ya que muchos se superponenping Los bloqueos compartidos interfieren constantemente entre sí. Los procesos cambian continuamente de estado, lo que impide que completen la tarea.
Ejemplos de Livelock
Ejemplo 1:
El ejemplo más sencillo de bloqueo mutuo es el de dos personas que se encuentran cara a cara en un pasillo y ambas se apartan para dejar pasar a la otra. Siguen moviéndose de un lado a otro sin avanzar porque se desplazan en la misma dirección al mismo tiempo. En este caso, nunca se cruzan.
Ejemplo 2:
En la imagen superior, cada uno de los dos procesos necesita dos recursos y utiliza un método de sondeo primitivo para intentar adquirir los bloqueos necesarios. Si un intento falla, el método vuelve a intentarlo.
- El proceso A posee el recurso Y.
- El proceso B retiene el recurso X
- El proceso A requiere el recurso X.
- El proceso B requiere el recurso Y.
Supongamos que el proceso A se ejecuta primero y adquiere el recurso X, y luego el proceso B se ejecuta y adquiere el recurso Y. Independientemente de qué proceso se ejecute primero, ninguno de ellos avanza más.
Sin embargo, ninguno de los dos procesos se bloquea. Ambos consumen recursos de la CPU repetidamente sin avanzar, pero nunca se detienen por un bloqueo de procesamiento.
Por lo tanto, esta situación no es una punto muerto, porque no se bloquea ningún proceso; en cambio, nos enfrentamos a una situación equivalente a un interbloqueo, que se denomina LIVELOCK.
¿Qué lleva a Livelock?
El bloqueo mutuo está ligado al número de procesos que permite un sistema, el cual se define por el número total de entradas en la tabla de procesos. Por lo tanto, estos espacios en la tabla de procesos se consideran recursos finitos. Cuando los procesos intentan repetidamente acceder a estos recursos limitados, cediéndose el paso entre sí, ninguno avanza y el sistema entra en un bloqueo mutuo.
¿Qué es un bloqueo?
A punto muerto Es una situación que ocurre en un sistema operativo cuando un proceso entra en estado de espera porque otro proceso en espera está utilizando el recurso solicitado. El interbloqueo es un problema común en el procesamiento paralelo, donde varios procesos comparten un tipo específico de recurso mutuamente excluyente conocido como bloqueo suave o bloqueo de software.
Ejemplo de bloqueo
- Un ejemplo real sería el tráfico que circula en una sola dirección.
- Aquí, un puente se considera un recurso.
- Cuando se produce un bloqueo, se puede resolver fácilmente si un coche retrocede (se apropian los recursos y se revierte la operación).
- Es posible que sea necesario hacer marcha atrás con varios vehículos si se produce una situación de bloqueo.
- Por lo tanto, es posible que muera de hambre.
Ejemplo de bloqueo
¿Qué es el hambre?
La inanición se produce cuando los procesos de baja prioridad se bloquean mientras que los de alta prioridad continúan. En cualquier sistema, las solicitudes de recursos de alta y baja prioridad se suceden de forma dinámica. Por lo tanto, se requiere una política para decidir quién recibe atención y cuándo.
Con algunos algoritmos, ciertos procesos pueden no recibir el servicio deseado aunque no se produzca un interbloqueo. El bloqueo por inanición ocurre cuando algunos hilos impiden el acceso a recursos compartidos durante un período prolongado.
Ejemplo de hambruna
Por ejemplo, un objeto ofrece un método sincronizado que probablemente tarde mucho tiempo en devolver un resultado. Si un hilo utiliza este método con frecuencia, otros hilos que también necesitan acceso sincronizado frecuente al mismo objeto suelen quedar bloqueados.
Diferencia entre punto muerto, inanición y punto muerto
- Un interbloqueo es una situación que se produce en un sistema operativo cuando un proceso entra en estado de espera porque el recurso solicitado está siendo utilizado por otro proceso que también está en espera.
- Por otro lado, un bloqueo mutuo es casi similar a un interbloqueo, excepto que los estados de los procesos involucrados en un bloqueo mutuo cambian constantemente en respuesta unos a otros, sin que ninguno progrese.
- Por lo tanto, el estancamiento vital es un caso único de escasez de recursos.



