Livelock: Qual é, por exemplo, diferença com impasse

Índice:

Anonim

O que é Livelock?

Um Livelock é uma situação em que uma solicitação de bloqueio exclusivo é negada repetidamente, pois muitos bloqueios compartilhados sobrepostos continuam interferindo uns nos outros. 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.

Neste tutorial de sistema operacional, você aprenderá:

  • O que é Livelock?
  • Exemplos de Livelock
  • O que leva ao Livelock?
  • O que é impasse?
  • Exemplo de impasse
  • O que é fome?
  • Diferença entre impasse, fome e bloqueio de vida

Exemplos de Livelock

Exemplo 1:

Um exemplo mais fácil de Livelock seria duas pessoas que se encontram cara a cara em um corredor, e ambas se movem para o lado 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.

Exemplo 2:

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

  1. Recurso de retenção Y do processo A
  2. O processo B contém o recurso X
  3. Processo A requer recurso X
  4. Processo B requer recurso Y

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

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, essa situação não é de deadlock porque não existe um único processo que está bloqueado, mas nos deparamos com uma situação equivalente a um deadlock, que é LIVELOCK.

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 é impasse?

Um deadlock é uma situação que ocorre no SO quando qualquer processo entra em um estado de espera porque outro processo de espera está mantendo o recurso exigido. 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 impasse

  • Um exemplo do mundo real seria o tráfego, que segue apenas em uma direção.
  • Aqui, uma ponte é considerada um recurso.
  • Portanto, quando ocorre um impasse, ele pode ser facilmente resolvido se um carro dá ré (preempção de recursos e reversão).
  • Pode ser necessário dar ré em vários carros se ocorrer uma situação de impasse.
  • Portanto, a fome é possível.
Exemplo de impasse

O que é fome?

Starvation é uma situação em que todos os processos de baixa prioridade são bloqueados e os processos de alta prioridade continuam. Em qualquer sistema, as solicitações de recursos de alta / baixa prioridade continuam acontecendo dinamicamente. Desse modo, alguma política é necessária para decidir quem recebe suporte e quando.

Usando alguns algoritmos, alguns processos podem não obter a manutenção desejada, mesmo que não estejam em conflito. 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 um método sincronizado que provavelmente levará muito tempo para retornar. Se um thread usar esse método com frequência, outros threads que também precisam de acesso sincronizado frequente ao mesmo objeto serão frequentemente bloqueados.

Diferença entre impasse, fome e bloqueio de vida

  • Um deadlock é uma situação que ocorre no SO quando qualquer processo entra em um estado de espera porque o recurso exigido está sendo retido por outro processo de espera.
  • Um livelock, por outro lado, é quase semelhante a um deadlock, exceto que os estados dos processos que estão envolvidos em um livelock sempre mudam um para o outro, nenhum progredindo.
  • Portanto, Livelock é um caso único de escassez 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 uns nos outros.
  • 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 SO quando qualquer processo entra em um estado de espera porque outro processo de espera está mantendo o recurso exigido.
  • Um exemplo do mundo real seria o tráfego, que segue apenas em uma direção.
  • Um exemplo de Livelock seria duas pessoas que se encontram cara a cara em um corredor, e ambas se movem para o lado para deixar a outra passar.
  • Starvation é uma situação em que todos os processos de baixa prioridade são bloqueados e os processos de alta prioridade continuam.