일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태 `2개 이상의프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 교착상태` 라고 한다.
1. Mutual exclusion (상호 배제)
: 매 순간 하나의 프로세스만이 자원을 사용할 수 있음
2. No preemption (비선점)
: 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음
3. Hold and wait (보유대기)
: 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음
4. Circular wait (순환대기)
: 자원을 기다리는 프로세스간에 사이클이 형성되어야 함
1. 교착상태 예방 기법
2. 교착상태 회피 기법
3. 교착상태 회복 기법
4. 교착상태 무시 기법
예방 기법은 교착 상태가 애초에 발생하지 않도록 예방하는 방법으로써, 교착상태 발생조건 4가지 중, 하나를 부정하는 기법
교착상태 회피 기법은 교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘(Banker's Algorithm)이 사용된다.
1. 각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태를 안전상태, 교착상태가 발생할 수 있는 상태를 불안전 상태라고 한다.
2. 은행원 알고리즘을 적용하기 위해서는 자원의 양과 프로세스 수가 일정해야 한다.
3. 은행원 알고리즘은 프로세스의 모든 요구를 유한한 시간안에 할당하는 것을 보장한다.
교착상태 회복기법은 교착상태가 발생했을 때, 이 상황을 해결하는 기법을 의미한다.
교착상태의 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하며, 해당 프로세스를 일시 정지시키는 방법
우선순위가 낮은 프로세스, 수행된 정도가 적은 프로세스, 사용되는 자원이 적은 프로세스 등을 위주로 해당 프로세스의 자원을 선점합니다.
※ 자원 선점시 고려사항
1. 자원 을 선점할 프로세스 선택 문제 : 최소의 피해를 줄 수 있는 프로세스를 선택
2. 자원을 선점한 프로세스의 복귀 문제 : 자원이 부족한 상태이므로 대부분 일시 중지시키고 다시 시작하는 방법을 사용
3. 기아 현상 문제 : 한 프로세스가 계속하여 자원 선점 대상이 되지 못하도록 고려
교착상태를 시스템이 책임지지 않는다
현대 대부분의 OS는 해당 처리방법을 채택