집합 내 어떤 프로세스가 동일 집합 내 다른 프로세스의 작업이 끝나기를 기다리는 상태
waiting thread가 상태를 못바꾸며, 그 이유는 다른 waiting thread에 의해서 리소스가 점유되었기 때문이다.
동일 instance가 여러개이다.

do_work_one
lock(first_mutex) -> lock(second_mutex) -> unlock(second_mutex) -> unlock(first_mutex)
do_work_two
lock(second_mutex) -> lock(first_mutex) -> unlock(first_mutex) -> unlock(second_mutex)
서로가 필요로 하는 lock을 가지고 있어서 데드락 발생.
(잘 발생하지 않는다.)




cycle이 없으므로, deadlock이 발생하지 않는다.

deadlock이 발생

deadlock 발생 안함
no have a cycle
무조건 데드락이 없다.
has a cycle
deadlock이 있을 수도? 없을 수도?
Ignore
Prevent or avoid -> 불가능 근데 회피는 가능
detect and recover -> 현실적인 방법
4개 중 1개를 방지하면 해결 가능.



순번이 증가하는 방향으로 task를 실행한다.

이런 경우에도 Circular wait방지해도 발생한다.
Prevention말고 avoid를 하자. -> bank Algo.