상호배제에 의해 나타나는 문제점으로, 다중 프로그래밍 시스템에서 여러 프로세스들이 공유하고 있는 일부 자원들을 점유하고 놓지 않으면서 다른 프로세스가 가지고 있는 자원들을 원하여 무한정으로 기다리고 있는 상태를 말한다.
프로세스 상태 중 asleep 상태, 또는 suspended block 상태로도 될 수 있다. 자원을 다시 얻으면 wake up된다.
한 자원에 대한 여러 프로세스의 동시 접근 불가
자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것
다른 프로세스의 자원을 강제로 가져올 수 없음
각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것
교착상태 발생 조건은 위 네가지를 모두 만족시켜야 한다. 하지만 교착상태를 해결하는데에는 네가지 중 한가지만 해결하면 된다.
교착상태의 발생조건을 없애기보다는 발생하지 않도록 알고리즘을 적용하는 방법으로, 자원할당 그래프 알고리즘과 은행원 알고리즘이 있다.
교착상태가 발생하는 것을 아예 막지 않고, 만약 교착상태가 발생하면 발생 이후에 문제를 해결하는 방법.
교착상태를 해결할 때에도 문맥교환에 의한 overhead로 성능 저하가 생긴다. 교착상태에 의한 성능 저하보다 이를 해결할 때의 성능저하가 큰 경우 그냥 무시한다.