Impasse em OperaSistema de ting: O que é, Espera Circular (Exemplos)

O que é Deadlock?

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 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 recuar (preemptar recursos e reversão).
  • Vários carros podem ter que fazer backup se ocorrer uma situação de impasse.
  • Portanto, a fome é possível.
Exemplo de impasse
Exemplo de impasse

O que é espera circular?

Um processo está aguardando o recurso, que está retido pelo segundo processo, que também está aguardando o recurso retido pelo terceiro processo, etc. Isso continuará até que o último processo esteja aguardando um recurso retido pelo primeiro processo. Isso cria uma cadeia circular.

Por exemplo, o Processo A recebe o Recurso B porque está solicitando o Recurso A. Da mesma forma, o Processo B recebe o Recurso A e está solicitando o Recurso B. Isso cria um loop de espera circular.

Exemplo de espera circular

Por exemplo, um computador possui três unidades USB e três processos. Cada um dos três processos é capaz de conter uma das unidades USB. Assim, quando cada processo solicitar outro drive, os três processos terão a situação de deadlock, pois cada processo estará aguardando a liberação do drive USB, que está em uso no momento. Isso resultará em uma cadeia circular.

Exemplo de espera circular

Exemplo de espera circular

Detecção de deadlock no sistema operacional

Uma ocorrência de conflito pode ser detectada pelo agendador de recursos. Um agendador de recursos ajuda o sistema operacional a controlar todos os recursos alocados para diferentes processos. Portanto, quando um impasse é detectado, ele pode ser resolvido usando os métodos abaixo:

Prevenção de deadlock no sistema operacional

É importante evitar um impasse antes que ele ocorra. O sistema verifica cada transação antes de ser executada para garantir que não cause situações de impasse. De tal forma que mesmo uma pequena mudança ocorre de forma que uma operação que pode levar a um Deadlock no futuro também nunca permitiu a execução do processo.

É um conjunto de métodos para garantir que pelo menos uma das condições não seja válida.

Nenhuma ação preventiva

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 contém alguns recursos solicitar outro recurso que não possa ser imediatamente alocado a ele, nessa situação todos os recursos serão liberados.
  • Os recursos preemptados requerem a lista de recursos de um processo que está aguardando.
  • O processo será reiniciado somente se conseguir recuperar o recurso antigo e um novo que está solicitando.
  • Se o processo estiver solicitando algum outro recurso, quando estiver disponível, então ele foi entregue ao processo solicitante.
  • Caso esteja retido por outro processo que esteja aguardando outro recurso, nós o liberamos e entregamos ao processo solicitante.

Exclusão mútua

A exclusão mútua é uma forma completa de Mutex. É um tipo especial de semáforo binário usado para controlar o acesso ao recurso compartilhado. Inclui um mecanismo de herança de prioridade para evitar problemas estendidos de inversão de prioridade. Ele permite que as tarefas atuais de maior prioridade sejam mantidas no estado bloqueado pelo menor tempo possível.

Recursos compartilhados, como arquivos somente leitura, nunca levam a conflitos, mas recursos, como impressoras e unidades de fita, precisam de acesso exclusivo por um único processo.

Segure e espere

Nessa condição, os processos devem ser impedidos de manter recursos únicos ou múltiplos enquanto aguardam simultaneamente por um ou mais outros.

Espera Circular

Impõe uma ordenação total de todos os tipos de recursos. A espera circular também exige que cada processo solicite recursos em ordem crescente de enumeração.

Evitar impasses Algorithms

É melhor evitar um impasse em vez de agir após a ocorrência do impasse. Precisa de informações adicionais, como a forma como os recursos devem ser usados. Evitar deadlock é o modelo mais simples e útil em que cada processo declara o número máximo de recursos de cada tipo que pode necessitar.

Anulação Algorithms

O algoritmo para evitar impasses ajuda a avaliar dinamicamente o estado de alocação de recursos para que nunca possa haver uma situação de espera circular.

Uma única instância de um tipo de recurso.

  • Use um gráfico de alocação de recursos
  • São necessários ciclos que são suficientes para o Deadlock

Múltiplas instâncias de um tipo de recurso.

Diferença entre fome e impasse

Aqui estão algumas diferenças importantes entre impasse e fome:

Deadlock Fome
A situação de deadlock ocorre quando um dos processos é bloqueado. A fome é uma situação em que todos os processos de baixa prioridade são bloqueados e os processos de alta prioridade são executados.
Deadlock é um processo infinito. A fome é uma longa espera, mas não um processo infinito.
Todo impasse sempre tem fome. Toda fome não tem necessariamente um impasse.
O impasse acontece então a exclusão mútua, espere e espere. Aqui, a preempção e a espera circular não ocorrem simultaneamente. Isso acontece devido à prioridade descontrolada e ao gerenciamento de recursos.

Vantagens do impasse

Aqui estão os prós/benefícios de usar o método Deadlock

  • Esta situação funciona bem para processos que realizam uma única explosão de atividade
  • Nenhuma preempção necessária para Deadlock.
  • Método conveniente quando aplicado a recursos cujo estado pode ser salvo e restaurado facilmente
  • Viável para aplicar através de verificações em tempo de compilação
  • Não necessita de cálculo em tempo de execução, pois o problema é resolvido no projeto do sistema

Desvantagens do impasse

Aqui estão os contras/desvantagens de usar o método de deadlock

  • Atrasa o início do processo
  • Os processos devem conhecer a necessidade futura de recursos
  • Antecipa-se com mais frequência do que o necessário
  • Não permite solicitações de recursos incrementais
  • Perdas de preempção inerentes.

Resumo

  • Definição de Deadlock: É uma situação que ocorre em OS quando qualquer processo entra em estado de espera porque outro processo em espera está retendo o recurso demandado
  • A espera circular acontece quando um processo está aguardando o recurso, que está retido pelo segundo processo, que também está aguardando o recurso retido pelo terceiro processo, etc.
  • Uma ocorrência de conflito pode ser detectada pelo agendador de recursos.
  • É importante evitar um impasse antes que ele ocorra.
  • Um recurso só pode ser liberado voluntariamente pelo processo que o detém, após esse processo ter concluído sua tarefa.
  • A exclusão mútua é uma forma completa de Mutex. É um tipo especial de binário semáforo que é usado para controlar o acesso ao recurso compartilhado.
  • Hold and wait é uma condição em que os processos devem ser impedidos de manter um ou vários recursos enquanto aguardam simultaneamente por um ou mais outros.
  • Evitar deadlock é o modelo mais simples e útil em que cada processo declara o número máximo de recursos de cada tipo que pode necessitar.
  • O algoritmo para evitar impasses ajuda a avaliar dinamicamente o estado de alocação de recursos para que nunca possa haver uma situação de espera circular.
  • O impasse é um processo infinito, enquanto a fome é uma longa espera, mas não um processo infinito.