2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며, 작업을 더 이상 진행하지 못하는 상태
여러 프로세스가 작업하다보니 자연히 일어난다.
시스템 자원, 공유 변수, 응용 프로그램 등을 사용할 때 발생할 수 있다.
교착 상태는 다음의 조건을 모두 충족해야 발생한다.
상호 배제
한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이다. 자원이 임계구역이므로 보호되어 다른 프로세스가 동시 접근이 불가능하다.
자원 비선점
한 프로세스가 사용 중인 자원은 다른 프로세스에서 빼았을 수 없다.
점유와 대기
프로세스가 어떤 자원을 할당 받은 상태에서 다른 자원을 기다리고 있는 상태이다.
원형 대기
점유와 대기를 하는 프로세스 간의 관계가 원을 이루어 프로세스들이 서로 양보하지 않는다.
예방
4가지 조건을 무력화하는 방법으로 이 중 하나라도 막는 것이다. 어떤 것이든 크게 실효성이 없다.
회피
자원 할당량을 조절하여, 교착 상태를 해결하는 방식이다.
자원을 할당하다가 교착 상태가 발생한다고 판단되면 자원 할당을 중단하고 지켜보는 것이다.
그러나 얼마만큼 할당해야 교착 상태가 발생하지 않는다는 보장이 없어 실효성이 없다.
검출, 회복
검출은 타임아웃, 자원 할당 그래프를 모니터링하면서 교착 상태가 발생하는지 살펴보는 방식
회복은 교착 상태가 발생하면 진행된다.
가장 현실적인 접근 방법이다.