Livelock: o que é, exemplo, diferença com deadlock
⚡ Resumo Inteligente
Livelock é uma situação de concorrência em que os processos ficam mudando de estado em resposta uns aos outros, mas não fazem nenhum progresso real, permanecendo ativos e consumindo ciclos de CPU sem nunca concluir suas tarefas ou ficarem bloqueados.
O que é LiveLock?
A livelock é uma situação em que uma solicitação de bloqueio exclusivo é negada repetidamente, devido à sobreposição de vários bloqueios.ping Os bloqueios compartilhados continuam interferindo uns nos outros. Os processos ficam mudando de estado, o que os impede de concluir a tarefa.
Exemplos de Livelock
1 exemplo:
O exemplo mais simples de Livelock é o de duas pessoas que se encontram frente a frente em um corredor e ambas se movem para o lado para deixar a outra passar. Elas continuam se movendo de um lado para o outro sem progredir, porque se movem sempre na mesma direção e ao mesmo tempo. Nesse caso, elas nunca se cruzam.
2 exemplo:
Na imagem acima, cada um dos dois processos precisa de dois recursos e utiliza um método primitivo de polling para tentar adquirir os bloqueios necessários. Se uma tentativa falhar, o método tenta novamente.
- O processo A detém o recurso Y.
- O processo B contém o recurso X
- O processo A requer o recurso X
- O processo B requer o recurso Y.
Suponha que o processo A seja executado primeiro e adquira o recurso X, e em seguida o processo B seja executado e adquira o recurso Y. Independentemente de qual processo seja executado primeiro, nenhum deles progride adicionalmente.
No entanto, nenhum dos dois processos está bloqueado. Eles consomem recursos da CPU repetidamente sem fazer nenhum progresso, mas nunca param devido a um bloqueio de processamento.
Portanto, esta situação não é uma impasse, porque nenhum processo está bloqueado; em vez disso, enfrentamos uma situação equivalente a um impasse, chamada LIVELOCK.
O que leva ao Livelock?
O impasse (livelock) está ligado ao número de processos que um sistema permite, o qual é definido pelo número total de entradas na tabela de processos. Esses espaços na tabela de processos são, portanto, tratados como recursos finitos. Quando os processos tentam repetidamente acessar esses recursos limitados, cedendo a vez uns aos outros continuamente, nenhum deles progride e o sistema entra em impasse.
O que é Deadlock?
A impasse Um deadlock é uma situação que ocorre em um sistema operacional quando um processo entra em estado de espera porque outro processo em espera está utilizando o recurso solicitado. O deadlock é um problema comum em multiprocessamento, onde vários processos compartilham um tipo específico de recurso mutuamente exclusivo, conhecido como bloqueio de software ou soft lock.
Exemplo de impasse
- Um exemplo prático seria o trânsito que flui em apenas uma direção.
- Aqui, uma ponte é considerada um recurso.
- Quando ocorre um impasse, ele pode ser resolvido facilmente se um dos carros recuar (preempção de recursos e reversão).
- Vários carros podem ter que fazer backup se ocorrer uma situação de impasse.
- Portanto, a inanição é possível.
Exemplo de impasse
O que é fome?
A inanição é uma situação em que processos de baixa prioridade são bloqueados enquanto processos de alta prioridade prosseguem. Em qualquer sistema, solicitações por recursos de alta e baixa prioridade ocorrem dinamicamente. Portanto, alguma política é necessária para decidir quem será atendido e quando.
Com alguns algoritmos, certos processos podem não obter o serviço desejado, mesmo que não estejam em deadlock. A inanição ocorre quando algumas threads tornam os recursos compartilhados indisponíveis por um longo período de tempo.
Exemplo de fome
Por exemplo, um objeto oferece um método sincronizado que provavelmente levará muito tempo para retornar. Se uma thread usar esse método com frequência, outras threads que também precisam de acesso sincronizado frequente ao mesmo objeto muitas vezes ficarão bloqueadas.
Diferença entre impasse, fome e livelock
- Um deadlock é uma situação que ocorre em um sistema operacional quando um processo entra em estado de espera porque o recurso solicitado está sendo utilizado por outro processo que também está em espera.
- Um impasse, por outro lado, é quase semelhante a um impasse, exceto que os estados dos processos envolvidos em um impasse estão sempre mudando em resposta uns aos outros, sem que nenhum deles progrida.
- Assim, a cigarra viva é um caso único de escassez de recursos.



