Conceitos de Processos, Mutex e Deadlock em Sistemas
Parbegin e Execução Paralela
Parbegin é uma estrutura utilizada para indicar o início e o fim de uma seleção de execução paralela, permitindo que a execução sequencial seja dividida entre vários fluxos.
Sua forma geral (segundo Dijkstra) é:
parbegin Proposição1; Proposição2; ... Proposição n; parend
Mutex e Exclusão Mútua
Mutex: Ocorre quando um processo impede que outros acessem dados compartilhados simultaneamente. Aplica-se quando processos executam operações que não estão em disputa, permitindo que outros prossigam concorrentemente.
Seções Críticas
Quando um processo acessa dados compartilhados, ele entra em uma seção crítica:
- Todos os outros processos são excluídos de suas próprias seções críticas.
- Processos fora de suas seções críticas podem continuar a execução.
- Ao sair da seção crítica, o sistema deve permitir que o próximo processo em espera entre.
- O processo tem acesso exclusivo; outros que requerem o mesmo recurso permanecem em espera.
- Programas não devem ser bloqueados em sua seção crítica.
- Se um processo terminar (voluntária ou involuntariamente), o sistema operacional deve liberar o mutex.
Deadlock (Impasse)
Deadlock ocorre quando um processo aguarda um evento que nunca ocorrerá, deixando um ou mais processos em uma situação de espera infinita.
Tráfego e Deadlock
O exemplo clássico é um cruzamento: se quatro carros chegam simultaneamente e cada um ocupa um recurso (quadrante) esperando pelo próximo, ocorre um impasse circular.
Impasse de Recurso Simples
Ocorre devido à retenção de recursos utilizáveis em série:
- Cada processo aguarda que outro libere um recurso.
- O recurso retido não é liberado até que o processo obtenha o próximo recurso necessário.
- Existe uma espera circular.
Detecção e Adiamento Indefinido
Detecção: Identifica ciclos de dependência entre processos e recursos. Se houver um ciclo, o sistema está em deadlock.
Adiamento Indefinido: Ocorre quando o escalonamento de recursos é injusto. Pode ser evitado com a técnica de envelhecimento (aumentar a prioridade de um processo enquanto ele espera).
Interlock em Sistemas de Spool
Sistemas de spool aumentam a capacidade do sistema, mas são propensos a deadlocks. Para reduzir riscos, deve-se:
- Prover espaço de armazenamento maior que o esperado.
- Limitar a leitura de novos trabalhos quando o spool atingir 75% da capacidade.
- Utilizar alocação dinâmica de espaço.
As Quatro Condições de Coffman
Para que um deadlock ocorra, quatro condições devem ser atendidas:
- Exclusão Mútua: Controle exclusivo dos recursos.
- Hold and Wait: Manter recursos alocados enquanto espera por outros.
- Não preempção: Recursos não podem ser retirados à força.
- Espera Circular: Cadeia de processos onde cada um retém um recurso exigido pelo próximo.
Recuperação de Deadlock
A recuperação é complexa devido a:
- Dificuldade em identificar se o sistema realmente parou.
- Sobrecarga ao suspender e retomar processos.
- Necessidade de intervenção manual do operador.
- Prioridades de processos podem ser arbitrárias ou incorretas.