Impasses e inanição
Condições de impasse, grafos de espera, prevenção e estados seguros.
Quatro condições
Impasse exige, em simultâneo: exclusão mútua, retenção com espera, ausência de preempção e espera circular.
- Ordem global de locks em todos os caminhos quebra o ciclo. Pedir tudo de uma vez quebra a retenção; libertar e recomeçar pode dar livelock.
- Com uma instância por recurso, ciclo prova impasse. Com várias, uma unidade livre pode desfazer o ciclo.
Banqueiro
Estado seguro: há ordem de conclusão dentro dos máximos declarados. Inseguro não prova impasse.
Need = Max - Allocation;Work = Available.- Escolhe por concluir com
Need <= Workem cada componente. - Soma a atribuição:
Work += Allocation. Repete até incluir todos. - O banqueiro só concede o que cabe e mantém segurança.
Distinções
| Problema | Sinal |
|---|---|
| Impasse | ciclo de espera sem libertação |
| Inanição | uns avançam, um fica sem serviço |
| Livelock | tentativas sem progresso útil |
Deteção procura ciclos; recuperação termina ou retira com consistência. Timeouts exigem saber o que libertar e reverter.