Prévia do material em texto
Deadlocks Douglas Horvath Rafael Seiji Nasso Moreira Presidente Prudente - SP Setembro / 2023 Introdução: No âmbito da computação, particularmente em ambientes multiprocessados, deadlocks constituem um desafio significativo. Eles ocorrem quando dois ou mais processos ficam bloqueados indefinidamente, cada um aguardando a liberação de recursos que o outro detém. Essa situação pode ter implicações graves em sistemas críticos, resultando na perda de eficiência e, em alguns casos, falhas completas. Portanto, a compreensão e implementação de estratégias eficazes para lidar com deadlocks são cruciais para manter a integridade e a confiabilidade dos sistemas. Este trabalho explora detalhadamente quatro estratégias fundamentais: Ignorar, detectar e recuperar, evitar dinamicamente e prevenir. Ao analisar cada uma delas e examinar casos práticos, busca-se fornecer uma visão abrangente e prática sobre como abordar esse desafio complexo. A compreensão e aplicação dessas estratégias não apenas aprimoram a confiabilidade dos sistemas, mas também refletem a habilidade essencial de um profissional de TI em gerenciar situações críticas com eficácia. O processo “A” necessita do recurso “R2”, este por sua vez está dependente do processo “B”, este processo depende do recurso “R1”, que por fim está travado em dependência do processo “A”. Estratégias de Tratamento de Deadlocks 1. Ignorar o problema: Nesta estratégia, o sistema operacional simplesmente não faz nada para evitar ou lidar com deadlocks. Ele assume que os deadlocks são raros ou que não causam impacto significativo no funcionamento do sistema. Exemplo: Em sistemas onde os deadlocks são muito improváveis de ocorrer ou onde os custos associados à prevenção e recuperação são muito altos, pode ser aceitável ignorar o problema. Por exemplo, em sistemas embarcados com recursos extremamente limitados, a prevenção de deadlocks pode ser muito complexa e consumir recursos valiosos. 2. Detectar e Recuperar o Problema: Esta estratégia permite que os deadlocks ocorram, mas o sistema opera com um mecanismo de detecção de deadlock que periodicamente verifica se ocorreu um deadlock. Se um deadlock for detectado, o sistema toma medidas para recuperar dele. Exemplo: Um sistema operacional pode usar um algoritmo de detecção de deadlock que verifica regularmente o estado dos processos e recursos alocados. Se um deadlock for identificado, o sistema operacional pode interromper um ou mais processos envolvidos no deadlock e liberar os recursos alocados. 3. Evitar Dinamicamente o Problema: Nesta abordagem, o sistema tenta evitar a ocorrência de deadlocks ao tomar decisões dinâmicas sobre alocações de recursos. Isso significa que o sistema só aloca recursos se isso não criar uma situação de deadlock. Exemplo: Um sistema de gerenciamento de banco de dados pode usar travas compartilhadas e exclusivas para acessar dados. Se um processo solicitar uma trava exclusiva e outra transação já tiver uma trava compartilhada no mesmo recurso, o sistema pode alocar a trava exclusiva somente se nenhum outro processo tiver acesso ao recurso no momento. 4. Prevenir o Problema: A prevenção de deadlocks envolve a implementação de políticas e mecanismos que garantem que os quatro requisitos para a ocorrência de um deadlock (exclusão mútua, retenção e espera, sem preempção e espera circular) não sejam todos satisfeitos simultaneamente. Exemplo: Um exemplo clássico é o algoritmo do banqueiro, usado em sistemas operacionais. Nesse algoritmo, os processos devem solicitar e liberar recursos de maneira ordenada. O sistema verifica se a alocação solicitada não levará a um estado de deadlock antes de conceder o recurso. A escolha da estratégia de tratamento de deadlocks depende das características do sistema, da frequência esperada de deadlocks, dos requisitos de desempenho e das implicações de custo. Muitas vezes, uma combinação de estratégias é usada em sistemas complexos para garantir a robustez e o funcionamento eficiente.