Starvation (inanição) - processo nunca consegue executar sua região crítica, ou seja, acessar o recurso compartilhado. Processo com o arquivo extenso nunca consegue alocar o arquivo.
Deadlock (impasse) - no conceito de SO, caracteriza uma situação em que ocorre um impasse e dois ou mais processos foram impedidos de continuar suas execuções, ou seja, ficam bloqueados. Pode ocorrer mesmo que haja apenas um processo no SO, considerando que este processo utilize múltiplos threads.
Independe da quantidade de recursos disponíveis.
Condições necessárias para deadlock (simultâneas):
- Exclusão mútua (apenas um processo de cada vez pode usar o recurso. Caso outro processo solicite um recurso, este deve ser atrasado até que o mesmo tenha sido liberado). Usar spool em tudo.
- Retenção e espera (Posse e espera por recurso) Requisitar inicialmente todos os recursos alocados. Processos que, em um determinado instante, retêm recursos concedidos anteriormente podem requisitar novos recursos.
- Inexistência de preempção ou não-preempção (processos que não podem ser parados no meio. Gravação de CD, impressão...) Retomar os recursos alocados. Recursos concedidos previamente a um processo não podem ser forçosamente tomados desse processo – eles devem ser explicitamente liberados pelo processo que os retêm.
- Espera circular (O processo nunca é acessado) Ordenar numericamente. Deve existir um encadeamento de dois ou mais processos; cada um deles encontra-se à espera de um recurso que está sendo usado pelo membro seguinte dessa cadeia.