Escolar Documentos
Profissional Documentos
Cultura Documentos
Deadlock
Jequié
2021
Quando se está criando aplicações multi-threaded, um dos problemas mais comuns são
os Deadlock e de longe um dos mais difíceis de resolver. Traduzindo literalmente Deadlock é
um impasse entre os processos. Ele é definido da seguinte forma: Um conjunto de processos do
Sistema Operacional esta em situação de Deadlock se todo processo pertencente ao conjunto
estiver esperando por um evento que somente outro processo desse mesmo conjunto poderá
fazer acontecer, ou seja, um conjunto de processos que estão bloqueados indefinidamente
esperando uns pelos outros quando tentam acessar um mesmo recurso ao mesmo tempo.
Assim, nenhum processo consegue executar recurso que precisa, ou liberar recurso que
esta de posse, ou ser acordado, pois o recurso que precisa está ocupado. Alguma das condições
para se entrar no estado de Deadlock:
Posse e Espera: processos que retém recurso podem solicitar novos recursos;
Espera Circular: deve haver uma cadeia circular de dois ou mais processos, na qual cada
um está á espera de recursos retidos pelo membro seguinte dessa cadeia.
Todas essas condições devem ocorrer simultaneamente para que ocorra Deadlock. Sem que
uma dessas condições não ocorra, não haverá deadlock.
Os sistemas operacionais Android utilizam da detecção e recuperação como meio de lidar com
deadlocks, então o sistema detecta que ocorreu um deadlock e parte dai para tentar se recuperar. Detectar
um deadlock é facilmente possível já que cada processo está bloqueado e esperando uns pelos outros.
Apos a recuperação, o algoritmos que rastreia a alocação de recursos e estados dos processos, começa
tudo outra vez com um ou mais dos processos em para solucionar o deadlock.
Os sistemas Windows utilizam de técnicas de prevenção ao deadlock, muitos programas
possuem mecanismos de proteção anti-deadlock, desse jeito, evitando condições que podem causar um
deadlock por meio de prevenção.
Os sistemas Linux e iOS ignoram por completo, apesar que nos sistemas iOS é razoável, pois se
trata de um fenômeno que é raro de acontecer. Já os sistemas Linux possuem algumas ferramentas para
construir hierarquias de controle de bloqueio dinamicamente, observando como os bloqueios acontecem
no sistemas e gerando um erro quando nota uma ordem de aquisição de bloqueio conflitante.
Referencias Bibliográficas