DEADLOCK:
É uma situação na qual duas ou mais transações estão em estado de espera simultânea, cada uma esperando que uma das outras libere um bloqueio antes de poder prosseguir. Se ocorrer um deadlock, é desejável que o sistema detecte e o interrompa. Detectar um deadlock envolve detectar um ciclo no Grafo de Espera. Interromper o deadlock envolve escolher uma das transações participantes – ou seja, uma das transações do ciclo no grafo – como vítima e fazer o ROLLBACK, liberando assim seus bloqueios, e portanto, permitindo o prosseguimento de alguma outra transação.
Um exemplo de Deadlock:
Em um sistema com multiprogramação, vários processos podem competir por um conjunto finito de recursos presentes no sistema, como, por exemplo, o acesso a regiões da memória ou dispositivos de entrada e saída (E/S). Quando um processo X requisita um acesso a um determinado recurso e esse se encontra ocupado ou sendo utilizado por um processo Y de forma exclusiva, o sistema operacional coloca o requisitante em estado de espera.
Se o processo Y, por sua vez, também requisitar um recurso que esteja de posse do processo X de forma exclusiva, ambos entrarão em um estado de Deadlock.
Gabarito B
Condições para Deadlock:
Não-preempção - recursos precisam ser liberados explicitamente pelo processo que detém a sua posse
Exclusão mútua - cada recurso ou está alocado a exatamente um processo ou está disponível
Posse-e-espera (monopolização de recursos) - o processo tem um recurso, mas fica bloqueado esperando por outro recurso
Espera circular - dois ou mais processos formam um ciclo, cada um esperando por um recurso que está com o próximo
"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !