Livelock: o que é, exemplo, diferença com Deadlock

O que é LiveLock?

A livelock é uma situação em que uma solicitação de bloqueio exclusivo é negada repetidamente, pois muitos bloqueios compartilhados sobrepostos continuam interferindo entre si. Os processos continuam mudando de status, o que os impede ainda mais de concluir a tarefa. Isso os impede ainda mais de concluir a tarefa.

Exemplos de Livelock

1 exemplo:

Um exemplo mais fácil de Livelock seria duas pessoas que se encontram cara a cara em um corredor, e ambas se afastam para deixar a outra passar. Eles acabam se movendo de um lado para o outro sem fazer nenhum progresso, pois se movem da mesma maneira no momento. Aqui, eles nunca se cruzam.

2 exemplo:

Exemplos de Livelock

Você pode ver na imagem acima, cada um dos dois processos fornecidos precisa de dois recursos, e eles usam o registro primitivo de polling para tentar adquirir os bloqueios necessários para eles. Se a tentativa falhar, o método funciona novamente.

  1. Processo A espera recurso Y
  2. O processo B contém o recurso X
  3. O processo A requer recurso X
  4. O processo B requer recurso Y

Supondo que o processo A seja executado primeiro e adquira o recurso de dados X e, em seguida, o processo B seja executado e adquira o recurso Y, não importa qual processo seja executado primeiro, nenhum deles progride posteriormente.

No entanto, nenhum dos dois processos está bloqueado. Eles usam recursos da CPU repetidamente sem nenhum progresso, mas também interrompem qualquer bloco de processamento.

Portanto, esta situação não é a de um deadlock porque não há um único processo que esteja bloqueado, mas enfrentamos uma situação equivalente a deadlock, que é LIVELOC.

O que leva ao Livelock?

Livelock ocorre quando o número total de processos permitidos em um sistema específico deve ser definido pelo número total de entradas na tabela de processos. Portanto, os slots da tabela de processos devem ser chamados de Recursos Finitos.

O que é Deadlock?

Um deadlock é uma situação que ocorre no sistema operacional quando qualquer processo entra em estado de espera porque outro processo em espera está retendo o recurso demandado. Deadlock é um problema comum em multiprocessamento, onde vários processos compartilham um tipo específico de recurso mutuamente exclusivo, conhecido como soft lock ou software.

Exemplo de Deadlock

  • Um exemplo do mundo real seria o tráfego, que segue apenas em uma direção.
  • Aqui, uma ponte é considerada um recurso.
  • Então, quando Deadlock acontecer, pode ser facilmente resolvido se um carro der ré (preempção de recursos e reversão).
  • Vários carros podem ter que fazer backup se um deadlock situação ocorre.
  • Portanto, a fome é possível.
Exemplo de Deadlock
Exemplo de Deadlock

O que é fome?

A fome é uma situação em que todos os processos de baixa prioridade são bloqueados e os processos de alta prioridade prosseguem. Em qualquer sistema, as solicitações de recursos de alta/baixa prioridade continuam acontecendo de forma dinâmica. Assim, é necessária alguma política para decidir quem recebe apoio e quando.

Usando alguns algorithms, alguns processos podem não obter o serviço desejado, mesmo que não sejamadlockEd. A fome ocorre quando alguns threads tornam os recursos compartilhados indisponíveis por um longo período de tempo.

Exemplo de fome

Por exemplo, um objeto oferece uma syncmétodo harmonizado que provavelmente levará muito tempo para retornar. Se um thread usa esse método com frequência, outros threads que também precisam de uso frequente synco acesso sincronizado ao mesmo objeto será frequentemente bloqueado.

Diferença entre Deadlock, fome e Livelock

  • Um deadlock é uma situação que ocorre no sistema operacional quando qualquer processo entra em estado de espera porque o recurso demandado está sendo mantido por outro processo em espera.
  • Um livelock, por outro lado, é quase semelhante a um deadlock, exceto que os estados dos processos envolvidos em um livelock sempre mudam entre si, nenhum progredindo.
  • Portanto, Livelock é um caso único de falta de recursos.

Resumo

  • Definição: Um Livelock é uma situação em que uma solicitação de bloqueio exclusivo é negada repetidamente, pois muitos bloqueios compartilhados sobrepostos continuam interferindo entre si.
  • Livelock ocorre quando o número total de processos permitidos em um sistema específico deve ser definido pelo número total de entradas na tabela de processos
  • Um deadlock é uma situação que ocorre no sistema operacional quando qualquer processo entra em estado de espera porque outro processo em espera está retendo o recurso demandado.
  • Um exemplo do mundo real seria o tráfego, que segue apenas em uma direção.
  • Um exemplo de Livelock seriam duas pessoas que se encontram cara a cara em um corredor, e ambas se afastam para deixar a outra passar.
  • A fome é uma situação em que todos os processos de baixa prioridade são bloqueados e os processos de alta prioridade prosseguem.