교착상태란
- 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 의미.
교착상태 조건
- 상호배제(Mutual exclusion) : 공유 자원은 한 번에 한 프로세스만 사용할 수 있다.
- 점유대기(Hold and Wait) : 프로세스가 적어도 하나의 자원을 점유(Hold)하면서 다른 프로세스가 점유한 자원을 필요로 할 때 해당 자원을 요청한 후 할당받을 때 까지 대기(Wait)할 수 있다.
- 비선점(No preemption) : 누가 자원을 사용하고 있다면, 이를 강제로 뺏을 수 없다.
- 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
교착상태 예방
- 예방 : 교착상태 조건 중 하나 이상를 제거하는 것 (자원 낭비 심함)
- 상호배제 부정 : 여러 프로세스가 공유 자원 사용
- 점유대기 부정 : 프로세스 실행전 모든 자원을 할당
- 비선점 부정 : 자원 점유 중인 프로세스가 다른 자원을 요구할 때 가진 자원 반납
- 순환대기 부정 : 자원에 고유번호 할당 후 순서대로 자원 요구
- 회피 : 부가적인 교착상태 회피 알고리즘을 사용
- 회복 : 교착상태에 있는 프로세스들을 하나씩 종료함
(식사하는 철학자 문제)