Escolar Documentos
Profissional Documentos
Cultura Documentos
Tucuruí-PA
2021
Curso Técnico em Informática Subsequente
T184-1ND – Sistemas Operacionais
Tucuruí-PA
2021
1. Introdução
Em computação, deadlock é um termo comum utilizado para descrever uma situação em que
o processo A fica bloqueado pelo sistema operacional esperando por dados do processo B, ao
mesmo tempo que processo B também fica bloqueado esperando por dados do processo. Na
verdade podem ocorrer deadlocks mesmo que exista apenas 1 processo envolvido, neste caso as
trheads do processo podem estar em deadlock [3].
O deadlock pode ocorrer em vários níveis, com bem mais do que apenas 2 processos
envolvidos. É possível que vários processos esperem por outros em cadeia, sendo algum processo
da cadeia espera por dados do processo que iniciou a cadeia. Por estes e outros motivos detectar um
deadlock é uma tarefa de alta complexidade, geralmente NÃO implementada pelos sistemas
operacionais. Em sistemas de banco de dados o deadlock também é bastante comum e vários fatores
devem ser considerados para minimizar a ocorrência dos mesmos [3].
Fonte: www.univasf.edu.br/
Segundo Tanenbaum, deadlock pode ser definido como: “Um conjunto de processos estará
em situação de deadlock se todo processo pertencente ao conjunto estiver esperando por um evento
que somente um outro processo desse mesmo conjunto poderá fazer acontecer” [1, 2].
Nenhum processo consegue executar recurso que precisa, ou liberar recurso que está de
posse, ou ser acordado, pois o recurso que precisa está ocupado. Vale detalhar que recurso é uma
sequência de eventos necessários ao uso de um processo, assim pode ser dispositivos ou qualquer
item compartilhado [2].
• Posse e Espera: processos que retêm recursos podem solicitar novos recursos;
• Não Preempção: recursos concedidos previamente não podem ser forçosamente tomados;
• Espera Circular: deve haver uma cadeia circular de dois ou mais processos, na qual cada um
está à espera de recursos retido pelo membro seguinte dessa cadeia.
Todas essas condições devem ocorrer simultaneamente para que ocorra Deadlock. Se uma dessas
condições não ocorrer, não haverá deadlock.
Ignorar por completo: Utilizar o Algoritmo Avestruz que é uma abordagem mais simples.
"Enterre a cabeça na areia e finja que nenhum problema ocorrerá.". Razoável se deadlocks ocorram
muito raramente. Essa abordagem não parece, mas é coerente já que tratamente de deadlock é muito
custoso e supondo que os usuários preferem um deadlock ocasional a uma regra restrigindo o
sistema a um único processo, e assim um único arquivo aberto, ou seja, um recurso de cada tipo [2].
Vale uma análise do cenário em que estamos e então avaliar e ponderar entre conveniência e
correção. Sistemas Operacionais de propósito geral como Windows e Unix adotam essa abordagem
pois em caso de deadlock o usuário terá abandonar o processo. Não gera tantos prejuízos quando
comparados com sistemas de propósito específico que são de alto risco, como por exemplo,
controladores de aviões, equipamentos médicos [2];
Detecção e Recuperação:
- Preempção: retirar um recurso de algum outro processo. Nesse método, cabe uma análise da
natureza do recurso;
- Eliminação de Processos: forma mais grosseira mas mais simples de quebrar um deadlock é
eliminar um dos processos no ciclo de processos em deadlock, assim os outros processos
conseguirão seus recursos. Para eliminar o processo, escolher um que possa ser reexecutado desde o
início;
- Evitar Dinamicamente: alocação cuidadosa de recursos, avaliando a chance de tal ação resultar
ou não em deadlock;
- Prevenção: é atacar uma das condições necessárias para se ter o estado de deadlock. Segue como
acontece cada um dos possíveis ataques. Atacando:
- Exclusão Mútua (usar spool em tudo): recursos, como impressoras, podem fazer uso de spool: - o
daemon de impressora é o único que usa o recurso impressora; - desta forma deadlock envolvendo a
impressora é eliminado. Nem todos os dispositivos podem fazer parte de spool: Princípio: evtar
alocar um recurso quando ele não for absolutamente necessário; tenta assegurar que o menor
número possível de processos possa de fato requisitar o recurso.;
- Posse e Espera (requisitar inicialmente todos os recursos necessários): exige que todos os
processos requisitem os recursos antes iniciarem, assim um processo nunca tem que esperar aquilo
que precisa. O problema dessa mordomia é que podem não saber quantos e quais recursos vão
precisar no início da execução e assim dimensionar recursos que outros processos poderiam estar
usando. Uma variação desse tratamento é que o processo deveria desistir de todos os recursos para
então requisitar todos os que são imediamente necessário;
- Não Preempção (retomar recursos alocados): esta é uma opção inviável. considere um processo
de posse da impressora, então no meio da impressão esse recurso é passado a outro processo, e num
instante futuro retorna a impressora a força;
Existe também o cenário de Deadlock sem envolvimento de recursos. Isso é possível que
dois processos entre em situação de deadlock se cada um estiver esperando que o outro faça algo.
Pode ocorrer com semáforos quando cada processo executa um down() sobre dois semáforos
(mutéx, outro qualquer), se executados em ordem errada resulta em deadlock.
Considerações finais
Referencias
1. DEVMEDIA. Introdução ao Deadlock. Disponível em:
<https://www.devmedia.com.br/introducao-ao-deadlock/24794> Acesso em 19 Dez. 2021.