교착 상태의 개요
교착 상태의 정의
- 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태
- 두명의 요리사와 두개의 조리 기구가 있고, 각 요리사가 각 조리 기구 하나씩 독점 중에, 서로의 조리기구를 탐하고만 있는 경우에 해당
- 아사상태 : 운영체제가 잘못된 정책을 사용하여 특정 프로세스의 작업이 지연되는 문제
- 교착상태 : 여러 프로세스가 작업을 진행하다 보니 자연적으로 일어나는 문제
교착 상태의 발생
- 시스템 자원, 공유 변수, 응용 프로그램들을 사용 할 때 발생 할 수 있음
- 시스템 자원
- 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생
- 임계 구역으로 보호되는 프린터, 스캐너, CD 레코더 등 동시에 같이 사용 할 수 없는 시스템 자원을 할당 받은 후 양보하지 않는 경우에 해당
- 공유 변수
- 한 변수를 할당 받은 상태에서, 다른 변수를 무한정 기다리기만 할 때 교착 상태가 발생
- 응용 프로그램
- 여러 프로세스가 하나의 데이터베이스에 저장된 데이터를 사용 할 때엔 일관성을 유지하기 위해 잠금을 사용 → 이때 잠금 때문에 교착 상태 발생 가능
자원 할당 그래프
- 프로세스가 어떤 자원을 사용 중이고, 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현 한 것
- 어떤 프로세스에 어떤 자원이 할당되어 있는지 한눈에 파악 가능

출처 : https://wannabe-gosu.tistory.com/26
- 자원을 사용하고 있는 경우는 자원으로 부터 프로세스로 향하는 화살표 ( 할당된 경우 )
- 프로세스가 자원을 기다리고 있는 경우는 프로세스로 부터 자원으로 향하는 화살표로 표기 ( 대기하는 경우 )