위의 상황에서 P0가 S를 wait하고, P1는 Q를 wait하므로 DeadLock발생
wait signal을 쓰는 것은 Mutex가 당연히 전재되어야 함
하나를 쥐고 다른 것을 기다리는 상황. 위 P0과 P1처럼 각각 S와 Q를 쥐었는데 다시 반납을 하지 않음
하나를 쥐고 있기만 하고 내려놓지 않음. 스케줄러의 비선점적, 선점적 처럼 프로세스가 도중에 끝나지않아서 계속 쥐고 있음.
Dining Philosopher의 상황 처럼. 서로가 돌아가며 꼬리에 꼬리를 물며 대기하는 상황
Deadlock prevention
OS가 관리하면 오버헤드가 크고 알고리즘이 복잡해서 개발자가 잘 막아야 함
Deadlock avoidance
공유자원의 상태를 보고 (lock인지 unlock인지 확인) 일일히 Deadlock을 피하며 관리
Deadlock detection and recovery
OS가 Deadlock이 발생하는지 모니터링을 하다가 발견하면 복구
Deadlock ignorance
OS가 그냥 무시함. 그냥 걸리면 걸리는 거지~
wait(chopstick[L]), wait(chopstick[R])
로 Deadlock발생