O que é deadlock no sistema operacional: condições e algoritmo de detecção

Experimente Nosso Instrumento Para Eliminar Problemas





O objetivo principal de um sistema operacional é fornecer comunicação adequada entre recursos de hardware e software e também fornecer serviços comuns aos programas. Quando um processo do sistema operacional deseja acessar qualquer recurso, ele primeiro envia uma solicitação para o recurso específico que deseja acessar, em seguida, utiliza o recurso e, finalmente, libera o recurso após o uso. Suponha que muitos processos estejam tentando acessar um recurso ao mesmo tempo, torna-se difícil fornecer um recurso para todos os processos de uma vez em tal situação, surge o conceito denominado impasse. Portanto, este artigo descreve como ocorre o conflito e como superar essa situação.

Qual é o impasse no sistema operacional?

Definição: Dead-Lock é uma situação em que dois ou mais processadores estão esperando que algum evento aconteça, mas esses eventos que não acontecem são uma condição de deadlock e os processadores são considerados em um estado de deadlock. Por exemplo, vamos supor um cenário em tempo real, onde há dois carros A e B, dirigidos por dois motoristas individuais em uma estrada de mão única. Agora surge a situação onde o motorista do Carro A diz que está se movendo em direção ao norte é uma direção correta, enquanto o motorista do Carro B diz que está se movendo em direção ao sul está correto. Mas nenhum dos dois se move para trás para permitir que outro carro avance, esta condição é chamada de condição de deadlock.




Exemplo de carro

carro-exemplo

Para melhor compreensão, vamos considerar outro exemplo onde há dois recursos R1, R2 e dois processos P1 e P2, onde R1 é atribuído a P1 e R2 é atribuído a P2. Agora se P1 deseja acessar R2, como já sabemos que R2 é mantido por P2, e agora P2 deseja acessar R1, que é P1 executa somente quando é acessado em R2, também P2 executa somente quando é acessado em R1 nesta situação é um estado de deadlock.



Exemplo de processador

exemplo de processador

Condições de dead-lock

A seguir estão as quatro condições de deadlock importantes a ocorrer se todas as condições ocorrerem simultaneamente, há certas chances de ocorrer o deadlock.

Exclusão mútua

Isso significa que qualquer recurso que estamos usando deve ser usado de forma mutuamente exclusiva. Onde apenas um processo usa um recurso de cada vez. Por exemplo, o processo de impressão está acontecendo e de repente outro processo tenta interromper o processo de impressão. Portanto, aqui na situação de exclusão mútua, somente depois que a tarefa de impressão for concluída, apenas a próxima tarefa será processada. A exclusão mútua pode ser eliminada compartilhando recursos simultaneamente, o que não é possível na prática.

Exclusão mútua

exclusão mútua

Sem preempção

De acordo com preventivo algoritmos baseados, se houver uma tarefa prioritária tentando interromper a tarefa atual. O algoritmo preventivo mantém a tarefa atual e, em primeiro lugar, executa a tarefa prioritária e retorna à sua primeira tarefa. Uma situação explicada de acordo com o exemplo acima, onde um processo retém o recurso enquanto ele é executado, ou seja, P1 pode liberar R1 somente após a execução, da mesma forma que P2 liberar R2 somente após a execução. Se não houver preempção, pode ocorrer um impasse.


Exemplo sem preempção

exemplo sem preempção

Espere e espere

Um processo está retendo alguns recursos e aguardando recursos adicionais, mas esses recursos são adquiridos por algum outro processo. A partir do exemplo acima, P1 está retendo R1 e esperando por R2, onde R2 é adquirido por P2, e P2 está retendo R2 e esperando por R1, onde R1 é adquirido por P1 é uma situação de bloqueio e espera pode ocorrer impasse no sistema.

Exemplo de espera e espera

exemplo de segurar e esperar

Espera Circular

Diz-se que um conjunto de processos está em deadlock se um processo está esperando por um recurso alocado para outro processo e esse processo está esperando por um recurso, é semelhante ao exemplo explicado acima, onde está em forma de loop. Onde P1 está esperando por R2 e R2 está alocado para P2 e P2 está esperando por R1 e R1 alocado para P1 que é uma forma de espera circular se esta condição satisfizer o impasse ocorrer.

Circular-Espera-Exemplo

circular-esperar-exemplo

Algoritmo de detecção de dead-lock

Os casos em que alocamos recursos para processos e o sistema operacional verifica novamente se ocorreu um deadlock no sistema ou não usando 2 algoritmos de detecção de deadlock principais, eles são

  • Instância única
  • Várias instâncias de tipo de recurso

Instância única

Uma única instância é uma situação em que um sistema possui instâncias únicas de todos os recursos. Também é conhecido como algoritmo de espera por gráfico ou gráfico de alocação de recursos. O gráfico de alocação de recursos é composto por um conjunto de processos e um conjunto de recursos que são representados como dois vértices diferentes. Os recursos no gráfico de alocação de recursos são modificados e são representados como um gráfico de espera. Onde esperar pela forma de gráfico tem apenas processos que são representados como vértices como mostrado abaixo, em que,

  • Gráfico de alocação de recursos: os processos P1, P2, P3 e os recursos R1, R2, R3 são representados no gráfico de alocação de recursos.
  • Wait for Graph: Apenas os processos P1, P2, P3 são mencionados na espera do gráfico.
  • Se houver uma condição de ciclo, ou seja, se houver um fluxo contínuo de um processo em uma direção, isso significa que a condição de ciclo sai e espera que o gráfico esteja em uma condição de deadlock.

Exemplo 1: O exemplo a seguir mostra que não há estado de conflito porque não há fluxo contínuo observado na espera do gráfico.

Exemplo 1 de instância única

single-instance-example1

Exemplo 2: A condição de deadlock ocorreu porque há um fluxo contínuo de ciclo de P1 a P4.

Instância única - Exemplo2

single-instance-example2

Se o deadlock ocorrer com muita frequência no sistema, o algoritmo de detecção será usado com frequência. Se houver mais uso do algoritmo de detecção, haverá mais sobrecarga e mais tempo de computação. Portanto, para superar isso, invocamos o algoritmo depois, dando um tempo igual, é assim que o peso do gráfico é usado para detectar o impasse.

Várias instâncias do tipo de recurso

Várias instâncias do tipo de recurso é uma situação em que um sistema possui várias instâncias de todos os recursos; também é conhecido como algoritmo de banqueiros. De acordo com o algoritmo do Bankers, assim que o processo obtém todos os recursos necessários, ele libera seus recursos.

Vamos considerar o exemplo a seguir, suponha que haja 3 processos P0, P1, P2 e tipo de recurso A, B, C onde A pode ser CPU , B pode ser a impressora e C pode ser o teclado. Os dígitos “0” na coluna representam a disponibilidade de recursos.

Caso (i): Suponha que se considerarmos que a condição requisitada é “000” condição que está presente em P0 e P2, devemos verificar qual requisição é atendida, os processos P0 liberam os processos após serem alocados, então os próximos processos P2 são liberados após serem alocados. Assim, em uma sequência, um a um processo libera P0, P2, P3, P1, P4 em sequência. Por fim, obtemos recursos disponíveis como P7, P2, P6. A sequência disponível é uma condição em que não há conflito.

Bankers-Algorithm-Example1

bankers-algorithm-example1

Casas (ii): Suponha que P2 seja 001 em vez de 000, agora aplique o algoritmo do banqueiro para verificar a condição de deadlock, onde o único P0 é executado entre todos os 5 processos. Logo, P1, P2, P3, P4 estão em estado de deadlock, exceto para P0.

Banqueiros-Exemplo2

banqueiros-exemplo2

Aplicações de impasse

As aplicações do impasse podem ser explicadas com um exemplo em tempo real de resultado de exame online, onde vários alunos tentam acessar o site da universidade na hora do lançamento. Pode-se observar que às vezes a página da web não carrega de uma vez para vários usuários, essa é uma condição de deadlock. Isso pode ser superado usando qualquer um dos algoritmos.

Vantagens

As vantagens do impasse são

  • Nenhuma preempção é observada na prevenção de deadlock
  • Sem demora no processo

Desvantagens

A desvantagem do deadlock é

  • O recurso a ser utilizado deve ser conhecido com antecedência
  • Bloqueio do processo por muito tempo
  • As perdas por preempção são herdadas.

Este artigo apresenta uma visão geral sobre como o deadlock ocorre quando há dois ou mais processos e as três condições que são a causa para a ocorrência de um deadlock, e os dois tipos de algoritmos: algoritmo de compartilhamento de recursos que detecta a existência de um condição de impasse e o algoritmo dos banqueiros, que é o algoritmo de prevenção de deadlock. Aqui está a pergunta “O que acontece se o deadlock for ignorado?”.