O gabarito é a letra C.
Um deadlock acontece quando duas ou mais tarefas bloqueiam uma à outra permanentemente, sendo que cada uma tem o bloqueio de um recurso, que a outra tarefa está tentando bloquear. Por exemplo:
A transação A adquire um bloqueio compartilhado da linha 1.
A transação B adquire um bloqueio compartilhado da linha 2.
A transação A agora solicita um bloqueio exclusivo na linha 2 e é bloqueado até que a transação B termine e libere o bloqueio compartilhado que tem na linha 2.
A transação B agora solicita um bloqueio exclusivo na linha 1 e é bloqueado até que a transação A termine e libere o bloqueio compartilhado que tem na linha 1.
A transação A não pode terminar até que a transação B termine, mas a transação B está bloqueada pela transação A. Essa condição é também chamada de dependência cíclica: a transação A tem uma dependência da transação B, e a transação B fecha o círculo tendo uma dependência da transação A.
Ambas as transações em um deadlock esperarão indefinidamente, a menos que o deadlock seja quebrado por um processo externo. O monitor de deadlock verifica periodicamente as tarefas que estão em um deadlock. Se o monitor detectar uma dependência cíclica, ele escolhe uma das tarefas como vítima e termina sua transação com um erro (SELEÇÃO DA VÍTIMA). Isso permite que a outra tarefa complete sua transação. O aplicativo com a transação que terminou com um erro pode repetir a transação, a qual normalmente é concluída depois que a outra transação em deadlock é encerrada.
B = Wait-die (esperar-morer) - se a transação que solicitou o bloqueio é a mais antiga, pode aguardar. Se for a mais nova, sofre rollback e recomeça mais tarde com mesmo timestamping.
Wound-wait (ferir-esperar) – se uma transação mais nova solicitar o bloqueio e o item estiver bloqueado por uma transação mais antiga, a transação mais nova pode aguardar. Se for a mais antiga que estiver solicitando, então ela interrompe a mais nova, a qual sofre rollback e recomeça mais tarde com mesmo timestamping.
Inverteram
C = Se o sistema estiver em um estado de deadlock, algumas das transações que causam o deadlock precisam ser abortadas. A escolha de quais transações abortar é conhecida como seleção de vítima. O algoritmo para a seleção de vítima geralmente deve evitar a seleção de transações que estiveram em execução por muito tempo e que realizaram muitas atualizações, e deve tentar, em vez disso, selecionar transações que não fizeram muitas mudanças (transações mais novas).
Navathe.