-
Deadlock ocorre quando dois processos ficam bloqueados por alguma pendência não realizada. Geralmente os um processo bloqueado nesse caso, aguarda o resultado de um outro processo também bloqueado.
-
Como informação adicional, as quatro condições necessárias para se entrar no estado de Deadlock são:
1. Exclusão Mútua: todo recurso está ou associado a um único processo ou disponível;
2. Posse e Espera: processos que retêm recursos podem solicitar novos recursos;
3. Não Preempção: recursos concedidos previamente não podem ser forçosamente tomados; e
4. Espera Circular: deve haver uma cadeia circular de dois ou mais processos, na qual cada um está à espera de recursos retido pelo membro seguinte dessa cadeia.
-
Não entendi, se tem prioridade para escalonamento, então porque existe o deadlock!?
-
Quando recursos são alocados segundo um esquema de prioridades, é possível que um determinado processo espere indefinidamente por um
recurso conforme processos com prioridades mais altas venham chegando.
-
Certo.
Vamos pensar em um sistema que utiliza o algoritmo de "Prioridade" no escalonamento de processos. Nesse cenário certamente ocorre a preempção, condição que descarta a ocorrência de deadlock.
Porém, a partir do momento que emprego a solução de "busy waiting", isso agora passa a ser uma particularidade tratada pela Exclusão Mútua, em que processos não podem adquirir um recurso qdo ele está sendo utilizado por outro processo. Logo, isso passa a ser uma das condições para o Deadlock.