Esgotamento de Recursos em Computação Concorrente
Pontos principais
- O esgotamento de recursos ocorre quando um processo é impedido indefinidamente de acessar recursos essenciais.
- Algoritmos de escalonamento que não garantem a execução de todos os processos podem causar esgotamento.
- A técnica de 'aging' é um método comum para prevenir o esgotamento, aumentando a prioridade de processos em espera.
- O esgotamento difere do deadlock, pois o processo em esgotamento aguarda recursos que estão sendo usados por outros, enquanto o deadlock envolve dependências circulares.
O esgotamento de recursos (frequentemente referido pelo termo em inglês starvation) é um fenômeno que ocorre em sistemas de computação concorrente quando um processo é perpetuamente impedido de acessar os recursos necessários para realizar suas tarefas. Diferente de uma falha temporária, o esgotamento mantém o processo em um estado de espera indefinida, impedindo sua conclusão.
Causas e Mecanismos
O esgotamento pode surgir devido a falhas no projeto de algoritmos de escalonamento ou de exclusão mútua. Em sistemas mal projetados, a lógica de alocação pode favorecer consistentemente certos processos em detrimento de outros. Além disso, o problema pode ser desencadeado por vazamentos de recursos ou por ações deliberadas, como ataques de negação de serviço (DoS), que consomem a disponibilidade do sistema.
Escalonamento e Prioridade
A maioria dos sistemas operacionais modernos utiliza algoritmos de escalonamento para gerenciar a distribuição de tempo de CPU e outros recursos. Quando esses algoritmos priorizam processos de forma rígida, pode ocorrer o esgotamento de processos de baixa prioridade. Se um processo de alta prioridade monopoliza o processador, processos com prioridade menor podem nunca ser executados.
Uma condição relacionada é a inversão de prioridade, onde um processo de alta prioridade depende de um resultado de um processo de baixa prioridade que, por sua vez, está sendo impedido de rodar devido ao esgotamento, travando assim a execução do sistema como um todo.
Diferença entre Esgotamento e Deadlock
Embora ambos resultem na interrupção de processos, o esgotamento e o deadlock (impasse) possuem naturezas distintas:
- Deadlock: Ocorre quando um conjunto de processos fica bloqueado porque cada um espera por um recurso mantido por outro membro do mesmo conjunto.
- Esgotamento: Ocorre quando um processo aguarda um recurso que é continuamente concedido a outros processos, mas nunca a ele.
Um algoritmo pode ser livre de deadlock, mas ainda assim permitir o esgotamento, caso a escolha de qual processo acessar um recurso crítico seja feita de forma arbitrária ou injusta.
Mitigação: A Técnica de Aging
Para prevenir o esgotamento, sistemas utilizam estratégias como o aging (envelhecimento). Esta técnica aumenta gradualmente a prioridade de processos que permanecem na fila de espera por longos períodos. Com o tempo, a prioridade do processo aumenta o suficiente para garantir que ele finalmente receba o recurso necessário, assegurando a justiça na alocação.
Perguntas frequentes
O que é esgotamento de recursos?
É um problema em sistemas concorrentes onde um processo nunca obtém os recursos necessários para progredir, ficando em espera permanente.
Como o escalonamento de prioridade causa esgotamento?
Se um escalonador sempre favorece processos de alta prioridade, processos de baixa prioridade podem nunca ser agendados para execução.
O que é a técnica de aging?
É uma estratégia que aumenta progressivamente a prioridade de um processo à medida que ele espera na fila, garantindo que ele eventualmente receba o recurso.