DeadLock이란

VS Looping

구분 Deadlock Looping
원인 서로 자원 대기 잘못된 반복 조건
발생 대상 둘 이상의 프로세스/스레드 하나의 프로세스/스레드
CPU 상태 유후(idel) - 아무 일 안 함 바쁨(busy) - 계속 같은 코드 실행
복구 방법 OS가 탐지&자원 회수 필요 코드 수정 OR 프로세스 강제 종료
예시 두 스레드가 서로 락을 기다림 while문을 탈출하지 못함

DeadLock 주로 발생 이유

DeadLock 발생 조건

아래 4가지가 모두 성립해야 데드락 발생

1. 상호 배제(Mutual exclusion)

2. 점유 대기(Hold and wait)

3. 비선형(No preemption)

4. 순환 대기(Circular wait)