필요조건
: 필요하지만 결과를 보장하지 않는다.
충분조건
: 충분하여 결과를 보장한다.
교착 상태의 필요 조건
하나라도 만족하지 못 하면 교착 상태가 일어나지 않는다.
1. 상호 배제 : 자원 하나에 한 프로세스만 점유할 수 있다.
2. 점유와 대기 : 점유된 자원을 기다리는 다른 프로세스가 있어야 한다.
3. 비선점 : 가로챌 수 없다.
4. 순환 대기 : 순환이 만들어진다.
대기가 없으므로 교착상태가 아니다.
R -> P : P가 R을 점유하고 있다.
P -> R : P가 R을 사용하기 위해 대기하고 있다.
P3가 R2를 대기하고 있으므로 교착상태이다.
사이클이 있지만 P2가 대기하고 있는 자원이 없으므로 R1의 점유상태가 종료 예정이다. 그래서 교착상태가 아니다.
네 가지 발생 조건 중 하나만 성립하지 않도록 한다. 사용 제약 조건을 정적으로 사전에 설정한다.
사용 제약 조건을 동적으로 실행 중에 설정한다. 교착 상태 유발 가능성이 존재하면(불안정 상태), 자원 할당을 연기한다.
안정상태
: 안정 순열이 존재한다.
불안정상태
: 발생할 가능성이 존재한다.
요청을 받아들였는데 안정상태라면 받아들이고 아니라면 받아들이지 않는
다.
안정 순열이란?
영구적으로 끝낼 수 있는지 확인한다.
P2가 종료 됐을 때 요청할 수 있는 자원의 개수가 남은 자원의 개수보다 크다면 안정 순열이다. P3가 자원을 3개 점유하고 P2가 종료 됐을 때, P1이 5개를 요청했다면 남은 자원의 개수는 4개이기 때문에 불안정 순열이 된다.