참고자료 : https://lazaros7.tistory.com/280
- 프로세스가 자원을 얻지못해 다음 작업을 못하는 상태

데드락 발생 조건
데드락은 아래 네 가지 조건이 동시에 성립할 때 발생한다. 즉, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만든다면 데드락을 해결할 수 있다.
- 상호 배제 : 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다.
- 점유 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
- 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 순환 대기 : 프로세스의 집합 {P0, P1, …, Pn} 에서 P0는 P1이 점유한 자원을 대기하고 P1은 P2가 점유한 자원을 대기하고 P2…Pn-1은 Pn이 점유한 자원을 대기하며 Pn은 P0가 점유한 자원을 요구해야한다.
데드락 처리
- 교착 상태 예방 및 회피 : 교착 상태가 되지 않도록 보장하기 위하여 교착 상태를 예방하거나 회피하는 프로토콜을 이용하는 방법
- 교착 상태 탐지 및 회복 : 교착 상태가 되도록 허용한 다음에 회복시키는 방법
- 교착 상태 무시 : 대부분의 시스템은 교착 상태가 잘 발생하지 않으며, 교착 상태 예방, 회피, 탐지, 복구하는 것은 비용이 많이 든다.
회피
- 교착 상태가 발생하면 피해나가는 방법
- 은행원 알고리즘(Bancker’s Algorithm) : 자원할당 요청 → 자원이 안전한지 체크 → (안전 o) 자원할당 → (안전 x) 할당거부