데드락은 공유 자원에 대해서 타 프로세스 또는 스레드가 다른 프로세스 또는 스레드가 보유하고 있는 자원을 기다리면서 모두 실행을 멈추는 상황을 말한다.

간단하게 비유하면 수저가 있고, 두 사람이 각각 숟가락과 젓가락을 나눠 가졌는데, 밥을 먹기 위해서는 숟가락과 젓가락을 다 가지고 있어야 먹을 수 있는데, 이 둘다 밥을 먹기 위해서는 둘 다 필요하기 때문에 서로 밥을 못 먹게 되는 상황이라고 할 수 있다.

발생 조건

여기서 상호 배제 (Mutual Exclusition)는 반드시 지켜야하는 부분이다.

위 발생 조건이 동시에 지켜지면 발생하게 된다.

해결 방법

위 4가지 중 1개라도 사라지면 해결할 수 있다. 다만 상호 배제 조건은 반드시 지켜야 하는 조건이라서 제거하면 안되고, 나머지 3개를 해결 해야 한다.

혹여나 데드락이 발생 했을때는 관련 프로세스(스레드)를 전부 종료하거나 데드락이 사라질 때까지 프로세스(스레드)를 하나씩 종료하게 된다.