교착 상태란 두 개 이상의 프로세스가 서로의 작업이 끝나기를 기다리는 상황입니다.

교착 상태 필요 조건
교착 상태는 네 가지 조건을 만족하는 상황에서 발생합니다. 상호 배제, 비선점, 점유와 대기, 원형 대기입니다.
- 상호 배제 : 하나의 자원은 동시에 하나의 프로세스만 사용 가능
- 비선점 : 프로세스가 자원을 해제하지 않는 한 자원을 가져올 수 없음
- 점유와 대기 : 프로세스가 하나의 자원을 할당받고 다른 자원을 기다림
- 원형 대기 : 프로세스들이 순환 형태로 서로를 기다림
교착 상태 해결 방법
교착 상태 방지
- 상호 배제 제거
- 비선점 제거
- 점유와 대기 제거
- 원형 대기 제거
교착 상태 회피

- 시스템의 상태를 안정 상태와 불안정 상태로 구분함
- 안정 상태 : 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 한 번 이상일 때
- 불안정 상태 : 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 없을 때
- 시스템이 안정 상태를 유지할 수 있도록 자원을 할당함
교착 상태 탐지 및 회복

- 교착 상태 탐지
- 대기 그래프 : 자원 할당 그래프에서 프로세스와 프로세스 간 기다리는 관계만 나타낸 그래프
- 그래프 감소 : 대기 그래프에서 작업이 끝날 프로세스의 화살표를 연속적으로 지워가는 것
- 교착 상태 회복
- 교착 상태를 유발한 프로세스를 강제 종료
- 교착 상태에 빠진 모든 프로세스 종료
- 하나의 프로세스를 골라 종료
- 우선 순위가 낮은 프로세스 먼저
- 현재까지 진행 상황이 짧은 프로세스 먼저
- 자원의 필요량이 많은 프로세스 먼저