Gabarito C
Deadlock (interbloqueio, blocagem, impasse), no contexto de sistemas operacionais (SO), refere-se a uma situação em que ocorre um impasse, e dois ou mais processos ficam impedidos de continuar suas execuções - ou seja, ficam bloqueados, esperando uns pelos outros. Trata-se de um problema bastante estudado em sistemas operacionais e banco de dados, pois é inerente à própria natureza desses sistemas.
O deadlock ocorre com um conjunto de processos e recursos não-preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo, o qual, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.
A definição textual de deadlock por ser muito abstrata, é mais difícil de se compreender do que a representação por grafos, que será resumida mais adiante. No entanto, algumas observações são pertinentes:
O deadlock pode ocorrer mesmo que haja somente um processo no SO, considerando que este processo utilize múltiplos threads e que tais threads requisitem os recursos alocados a outros threads no mesmo processo;
O deadlock independe da quantidade de recursos disponíveis no sistema;
Normalmente o deadlock ocorre com recursos, tais como dispositivos, arquivos, memória etc. Apesar de a CPU também ser um recurso para o SO, em geral é um recurso facilmente preemptível, pois existem os escalonadores para compartilhar o processador entre os diversos processos, quando trata-se de um ambiente multitarefa.
Erros de deadlock podem ocorrer em bancos de dados. Suponha que uma empresa tenha vários vendedores e vários pontos de venda ou caixas. O vendedor A vendeu 1 martelo e 1 furadeira. O sistema, então, solicita o travamento do registro da tabela "ESTOQUE", que contém o total de martelos em estoque e, em seguida, solicita o travamento do registro que contém o total de furadeiras em estoque. De posse da exclusividade de acesso aos dois registros, ele lê a quantidade de martelos, subtrai 1 e escreve de novo no registro; o mesmo ocorre com relação ao registro de furadeiras. Observe, no entanto, que existem diversos caixas operando simultaneamente, de forma que, se algum outro caixa, naquele exato instante, estiver vendendo uma furadeira, ele ficará aguardando a liberação do registro das furadeiras para depois alterá-lo. Note que ele só altera os registros depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registros. Suponha agora que, em outro caixa, foram vendidos 1 furadeira e 1 martelo e que o outro caixa solicitou o travamento do registro com a quantidade de furadeiras e agora quer o acesso ao de martelos; no entanto o registro de martelos está travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e também não consegue acesso ao outro registro que falta para terminar a operação. Isto é um deadlock.
"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !