Diferença entre Deadlock e Starvation | Deadlock vs Starvation

Anonim

Deadlock vs Starvation

A principal diferença entre deadlock e fome é a relação causa-efeito entre eles; É o impasse que provoca a fome. Outra diferença interessante entre o impasse e a fome é que o impasse é um problema, enquanto a fome pode, às vezes, ajudar a sair de um impasse. No mundo do computador, ao escrever um programa de computador, haverá mais de um processo / segmento que será simultaneamente executado um após o outro para atender o serviço necessário ao programa. Portanto, para ter um sistema justo, o programador deve ter que garantir que todos os processos / tópicos irão receber ou ter acesso suficiente aos recursos de que precisam. Caso contrário, haverá um impasse, e isso levará a uma fome mais tarde. Geralmente, um sistema justo não contém deadlocks ou fome. Deadlocks e fome ocorrerão principalmente quando muitos tópicos estão competindo por recursos limitados.

O que é Deadlock?

Um bloqueio é uma condição que ocorre quando dois threads ou processos aguardam um ao outro para completar a tarefa . Eles só desligam, mas nunca param ou terminam sua tarefa. Na informática, os impasses podem ser vistos em todos os lugares. Em um banco de dados de transações, quando dois processos dentro de sua própria transação atualizam as mesmas duas linhas de informações, mas na ordem oposta, isso causará um impasse. Na programação concorrente, um impasse pode ocorrer quando duas ações concorrentes aguardam um ao outro para prosseguir. Nos sistemas de telecomunicações, um impasse pode ocorrer devido a perda ou corrupção de sinais.

No momento, o impasse é um dos principais problemas em sistemas multiprocessamento e computação paralela. Como solução, um sistema de bloqueio chamado sincronização de processo é implementado para software e hardware.

O que é Starvation?

Do dicionário de ciência médica, a fome é resultado da falta grave ou total de nutrientes que são necessários para a manutenção da vida. Da mesma forma, na ciência da computação, a fome é um problema que é encontrado quando múltiplos threads ou processos aguardam o mesmo recurso, chamado "deadlock" .

Para sair de um impasse, um dos processos ou tópicos deve ter que desistir ou reverter para que o outro segmento ou processo possa usar o recurso. Se isso acontecer continuamente e o mesmo processo ou thread tiver que desistir ou rolar de volta cada vez que permite que outros processos ou threads usem o recurso, o processo ou thread selecionado, que reverte, sofrerá uma situação chamada de fome.Portanto, para sair de um impasse, a fome é uma das soluções . Portanto, às vezes a fome é chamada de um tipo de animação . Quando há muitos processos ou threads de alta prioridade, um processo ou thread de prioridade menor sempre morrerá de fome em um impasse.

Pode haver muitas fome, como morrendo de fome nos recursos e morrendo de fome na CPU . Existem muitos exemplos comuns de fome. Eles são Problema dos Leitores-escritores e problema dos filósofos do jantar, que é mais famoso. Há cinco filósofos silenciosos sentados em uma mesa redonda com tigelas de espaguete. Forks são colocados entre cada par de filósofos adjacentes. Cada filósofo deve alternadamente pensar e comer. No entanto, um filósofo só pode comer espaguete quando ele tem garfos esquerdo e direito.

The "Dining Philosophes"

Qual a diferença entre deadlock e Starvation?

• Processo:

• No deadlock, os dois processos ou threads aguardam um ao outro e ambos não avançam.

• Na inanição, quando dois ou mais threads ou processos aguardam o mesmo recurso, um irá reverter e permitir que os outros usem o recurso primeiro e, em seguida, o processo ou o processo faminto tentará novamente. Portanto, todos os tópicos ou processos irão de qualquer forma avançar.

• Rolling Back:

• Em um impasse, ambos os threads / processos de alta prioridade, bem como threads / processos de baixa prioridade, esperarão um para o outro de forma infinita. Nunca acaba.

• Mas, em uma fome, os prioritários de baixa prioridade irão aguardar ou reverter, mas os de alta prioridade prosseguirão.

• Esperando ou Bloquear:

• Um impasse é uma espera circular.

• Uma fome é uma espécie de livelock e às vezes ajuda a sair de um impasse.

• Deadlock e Starvation:

• Um deadlock causa fome, mas a fome não causa um impasse.

• Causas:

• Um impasse ocorre por exclusão mútua, espera e espera, sem preempção ou espera circular.

• A inanição ocorre devido à escassez de recursos, à gestão descontrolada dos recursos e às prioridades do processo.

Resumo:

Deadlock vs. Starvation

Deadlock e fome são alguns dos problemas que ocorrem devido a corridas de dados e condições de corrida que ocorrem durante a programação, bem como a implementação de hardware. Em um impasse, dois tópicos esperarão infinitamente um para o outro sem executar enquanto, em uma fome, um segmento irá reverter e deixar o outro segmento usar os recursos. Um impasse causará fome, enquanto a fome ajuda um fio a sair de um impasse.

Imagens Cortesia:

  1. Computador por Steve Jurvetson de Menlo Park, EUA (CC BY 2. 0)
  2. Os "Filósofos de jantar" de Bdesham (CC BY-SA 3. 0)