Diferença entre Deadlock e fome

Deadlock vs Starvation
 

A principal diferença entre impasse e fome é a relação de causa e efeito entre eles; é um impasse que causa fome. Outra diferença interessante entre impasse e fome é que o impasse é um problema, enquanto a fome pode, às vezes, ajudar a sair de um impasse. No mundo dos computadores, ao escrever um programa de computador, haverá mais de um processo / encadeamento que será executado simultaneamente um após o outro para atender ao serviço necessário ao programa. Portanto, para ter um sistema justo, o programador deve garantir que todos os processos / threads recebam ou obtenham acesso suficiente aos recursos necessários. Caso contrário, haverá um impasse e isso levará à fome mais tarde. Geralmente, um sistema justo não contém impasses ou fome. Os conflitos e a fome ocorrerão principalmente quando muitos threads estiverem competindo por recursos limitados.

O que é Deadlock?

Um impasse é uma condição que ocorre quando dois encadeamentos ou processos esperam um pelo outro para concluir a tarefa. Eles apenas desligam, mas nunca param ou terminam sua tarefa. Na ciência da computação, impasses podem ser vistos em toda parte. Em um banco de dados de transações, quando dois processos, cada um em sua própria transação, atualiza as mesmas duas linhas de informações, mas na ordem oposta, isso causa um impasse. Na programação simultânea, um conflito pode ocorrer quando duas ações concorrentes esperam uma pela outra para avançar. Nos sistemas de telecomunicações, um impasse pode ocorrer devido à perda ou corrupção de sinais.

Atualmente, o impasse é um dos principais problemas em sistemas de multiprocessamento e computação paralela. Como solução, um sistema de travamento chamado sincronização de processos é implementado para software e hardware.

O que é fome?

No dicionário de ciências médicas, a fome é resultado da falta total ou total de nutrientes necessários para a manutenção da vida. Da mesma forma, na ciência da computação, a fome é um problema encontrado quando vários encadeamentos ou processos aguardam o mesmo recurso, chamado de deadlock.

Para sair de um conflito, um dos processos ou encadeamentos deve ter que desistir ou reverter para que o outro encadeamento ou processo possa usar o recurso. Se isso acontecer continuamente e o mesmo processo ou encadeamento precisar desistir ou retroceder a cada vez, permitindo que outros processos ou encadeamentos usem o recurso, o processo ou encadeamento selecionado, que retrocedeu, passará por uma situação chamada inanição. Portanto, a fim de sair de um impasse, a fome é uma das soluções. Portanto, às vezes a fome é chamada uma espécie de livelock. Quando existem muitos processos ou encadeamentos de alta prioridade, um processo ou encadeamento de menor prioridade sempre passará fome em um impasse.

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

Os "filósofos do jantar"

Qual é a diferença entre Deadlock e Starvation?

• Processo:

• Em conflito, os dois threads ou processos esperam um pelo outro e ambos não avançam.

• No início, quando dois ou mais encadeamentos ou processos aguardam o mesmo recurso, um reverterá e permitirá que os outros usem o recurso primeiro e, depois, o encadeamento ou processo que passará fome tentará novamente. Portanto, todos os threads ou processos prosseguirão de qualquer maneira.

• Reversão:

• Em um impasse, os threads / processos de alta prioridade, bem como os threads / processos de baixa prioridade, esperam um pelo outro infinitamente. Nunca acaba.

• Mas, com fome, os de baixa prioridade aguardam ou retrocedem, mas os de alta prioridade prosseguem.

• Aguardando ou Bloqueado:

• Um impasse é uma espera circular.

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

• Impasse e fome:

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

• Causas:

• Um impasse ocorrerá devido à exclusão mútua, espera e espera, sem preempção ou espera circular.

• A fome ocorre devido à escassez de recursos, gerenciamento descontrolado de recursos e prioridades do processo.

Resumo:

Impasse vs. Fome

Deadlock e inanição são alguns dos problemas que ocorrem devido a corridas de dados e condições de corrida que ocorrem durante a programação e a implementação de hardware. Em um impasse, dois encadeamentos aguardam infinitamente um pelo outro sem serem executados, enquanto, em um início de fome, um encadeamento reverte e deixa o outro encadeamento usar os recursos. Um impasse causará fome, enquanto a fome ajudará um thread a sair de um impasse.

Cortesia de imagens:

  1. Computador de Steve Jurvetson de Menlo Park, EUA (CC BY 2.0)
  2. Os “Filósofos do Jantar” de Bdesham (CC BY-SA 3.0)