교착 상태란?
<aside>
💡 교착 상태란?
→ 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있어서 결과적으로 아무것도 완료되지 못하는 상태
</aside>
- 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
교착 상태가 발생하기 위한 조건
-
상호 배제(Mutual Exclusion)
- 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
-
점유와 대기(Hold and Wait)
- 최소한 하나의 자원을 점유하고 있으면서, 다른 프로세스에 할당되어 사용되고 있는 자원을 추가적으로 점유하기 위해 대기하고 있는 프로세스가 있어야 한다.
-
비선점(Non-preemption)
- 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 선점할 수 없어야 한다.
-
환형 대기(Circular Wait)
- 공유자원과 공유자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어, 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
교착 상태 처리 기법
예방(prevention)
- 교착 상태 발생 조건 중 하나를 제거하면서 해결한다. → 자원 낭비가 심하다.
회피(avoidance)