Deadlock

Um deadlock é uma situação em que dois programas de computador que compartilham o mesmo recurso estão efetivamente impedindo um ao outro de acessar o recurso, resultando em ambos os programas deixarem de funcionar.

Os primeiros sistemas operacionais de computador executaram apenas um programa de cada vez. Todos os recursos do sistema estavam disponíveis para este único programa. Mais tarde, os sistemas operacionais executaram vários programas ao mesmo tempo, intercalando-os. Os programas eram obrigados a especificar antecipadamente quais os recursos necessários para que pudessem evitar conflitos com outros programas em execução ao mesmo tempo. Eventualmente, alguns sistemas operacionais ofereciam alocação dinâmica de recursos. Os programas podiam solicitar novas alocações de recursos após terem começado a funcionar. Isto levou ao problema do impasse. Aqui está o exemplo mais simples:

 Programa 1 solicita o recurso A e o recebe. O programa 2 solicita o recurso B e o recebe. O programa 1 solicita o recurso B e é enfileirado, até a liberação do B. O programa 2 solicita o recurso A e é enfileirado, até a liberação do A.