Gabarito: C.
Deadlock/Impasse - ocorre quando um processo espera por um evento que nunca ocorrerá. Processos formam um ciclo fechado, numa espera circular que impede os mesmos de executar/concluir suas tarefas.
Como complemento:
Starvation/Inanição - ocorre quando os programas são executados indefinidamente e não realizam nenhum progresso em seu processamento. Processos não são escolhidos pelo escalonamento do SO.
Os conceitos de Deadlock e Starvation são bem semelhantes, já errei várias questões por fazer confusão entre eles. Então, assim como todas as outras disciplinas, só fazendo muitas questões para sedimentar.
Para muitas aplicações, um processo necessita de acesso exclusivo não só a um recurso, mas também a vários. Suponha, por exemplo, que dois processos queiram cada um gravar em CD um documento escaneado. O processo A solicita permissão para usar o scanner e é autorizado. O processo B, que é programado diferentemente, solicita primeiro permissão para usar o gravador de CD e também é autorizado. Então, o processo A pede para usar o gravador de CD, mas a solicitação lhe é negada até que o processo B o libere. Infelizmente, em vez de liberar o gravador de CD, o processo B pede para usar o scanner. Nesse ponto, ambos os processos ficam bloqueados e assim permanecerão para sempre. Essa situação é denominada impasse (deadlock).
Sistemas operacionais modernos / Andrew S. Tanenbaum
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.