Impasse em OperaSistema de ting: O que é, Espera Circular (Exemplos)
⚡ Resumo Inteligente
Um deadlock em um sistema operacional ocorre quando um conjunto de processos fica bloqueado porque cada um deles detém um recurso e espera por outro que um processo diferente detém, criando uma cadeia circular onde nenhum processo consegue prosseguir.

O que é Deadlock?
Deadlock é uma situação que ocorre em um sistema operativo Ocorre um deadlock quando um processo entra em estado de espera porque outro processo em espera está utilizando o recurso solicitado. É um problema comum em multiprocessamento, onde vários processos compartilham um tipo específico de recurso mutuamente exclusivo, conhecido como bloqueio de software ou bloqueio temporário.
Quando ocorre um deadlock, nenhum dos processos envolvidos pode continuar, portanto o trabalho afetado é interrompido até que o sistema operacional intervenha.
Exemplo de impasse
- Um exemplo prático seria o trânsito que flui em apenas uma direção.
- Aqui, uma ponte é considerada um recurso.
- Assim, quando ocorre um impasse, ele pode ser resolvido se um dos carros recuar (preemptar recursos e reverter).
- 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 é espera circular?
Um processo está aguardando um recurso que está sendo utilizado por um segundo processo, que por sua vez está aguardando um recurso utilizado por um terceiro processo, e assim por diante. Isso continua até que o último processo esteja aguardando um recurso utilizado pelo primeiro processo. Isso cria uma cadeia circular.
Por exemplo, o Processo A recebe o Recurso B enquanto o solicita. Da mesma forma, o Processo B recebe o Recurso A enquanto o solicita. Isso cria um ciclo de espera circular.
Exemplo de espera circular
Por exemplo, um computador tem três unidades USB e três processos. Cada um dos três processos está utilizando uma das unidades USB. Assim, quando cada processo solicita outra unidade, os três processos entram em um impasse, pois cada um fica aguardando a liberação de uma unidade USB enquanto ainda a está utilizando. Isso resulta em um ciclo vicioso.
Exemplo de espera circular
Detecção de deadlock no sistema operacional
A ocorrência de um deadlock pode ser detectada pelo agendador de recursos. O agendador de recursos ajuda o sistema operacional a manter track de todos os recursos alocados a diferentes processos. Uma vez detectado um impasse, ele pode ser resolvido preemptando recursos, revertendo um processo ou encerrando um ou mais processos em impasse.
Prevenção de deadlock no sistema operacional
É importante prevenir um impasse antes que ele ocorra. O sistema verifica cada transação antes de sua execução para garantir que ela não leve a um impasse. Mesmo uma pequena operação que possa causar um impasse no futuro nunca é permitida.
A prevenção de impasses é um conjunto de métodos para garantir que pelo menos uma das quatro condições necessárias não possa ser satisfeita.
Sem preempção
Um recurso só pode ser liberado voluntariamente pelo processo que o detém, após esse processo ter concluído sua tarefa.
- Se um processo que está utilizando alguns recursos solicitar outro recurso que não possa ser alocado imediatamente, todos os seus recursos serão liberados.
- Os recursos preemptados são adicionados à lista de recursos pelos quais o processo está aguardando.
- O processo é reiniciado somente quando consegue recuperar seus recursos antigos, bem como os novos recursos que está solicitando.
Exclusão mútua
Exclusão Mútua é a forma completa de Mutex. É um tipo especial de protocolo binário. semáforo que é usado para controlar o acesso a um recurso compartilhado. Inclui um mecanismo de herança de prioridade para evitar problemas prolongados de inversão de prioridade e mantém as tarefas de maior prioridade bloqueadas pelo menor tempo possível.
Recursos compartilhados, como arquivos somente leitura, nunca levam a impasses (deadlocks), mas recursos como impressoras e unidades de fita precisam de acesso exclusivo por um único processo.
Segure e espere
Nessa situação, os processos devem ser interrompidos, impedindo que ocupem um ou mais recursos enquanto aguardam simultaneamente por um ou mais outros.
Espera Circular
Este método impõe uma ordenação total de todos os tipos de recursos. A prevenção de espera circular também exige que cada processo solicite recursos em ordem crescente de enumeração.
Evitar impasses Algorithms
É melhor evitar um impasse do que tomar medidas depois que ele já ocorreu. A prevenção requer informações adicionais, como a forma como os recursos serão utilizados. A prevenção de impasses é um modelo útil no qual cada processo declara o número máximo de recursos de cada tipo que poderá necessitar.
Anulação Algorithms
O algoritmo de prevenção de impasses avalia dinamicamente o estado de alocação de recursos, de forma que uma situação de espera circular nunca ocorra.
Para uma única instância de um tipo de recurso:
- Utilize um gráfico de alocação de recursos.
- Um ciclo no grafo é necessário e suficiente para que ocorra um impasse.
Para múltiplas instâncias de um tipo de recurso:
- Um ciclo é necessário, mas não suficiente para um impasse.
- Use o Algoritmo do banqueiro.
Diferença entre fome e impasse
Aqui estão algumas diferenças importantes entre impasse e inanição:
| Deadlock | Fome |
|---|---|
| A situação de deadlock ocorre quando um dos processos fica bloqueado. | A inanição é uma situação em que todos os processos de baixa prioridade ficam bloqueados enquanto os processos de alta prioridade são executados. |
| Deadlock é um processo infinito. | A inanição é uma longa espera, mas não um processo infinito. |
| Todo impasse sempre envolve um ponto de inanição. | Nem toda situação de fome resulta necessariamente em um impasse. |
| O impasse ocorre devido à exclusão mútua, à espera contínua, à ausência de preempção e à espera circular que acontecem simultaneamente. | Isso ocorre devido à falta de controle de prioridades e à má gestão de recursos. |
Vantagens do impasse
Aqui estão as vantagens de usar o método de tratamento de deadlock:
- Essa situação funciona bem para processos que executam uma única sequência de atividades.
- Não é necessária nenhuma preempção para evitar um impasse.
- É um método conveniente quando aplicado a recursos cujo estado pode ser salvo e restaurado facilmente.
- É possível impor isso por meio de verificações em tempo de compilação.
- Não requer computação em tempo de execução, uma vez que o problema é resolvido no projeto do sistema.
Desvantagens do impasse
Aqui estão as desvantagens de usar o método de tratamento de deadlock:
- Isso atrasa o início do processo.
- Os processos devem conhecer suas necessidades futuras de recursos com antecedência.
- Ele se antecipa com mais frequência do que o necessário.
- Isso impede solicitações incrementais de recursos.
- Possui perdas inerentes por preempção.


