데드락 관련 내용 정리. 출처는 위키


교착상태(deadlock) : 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다려서 결과적으로 아무것도 완료되지 못하는 상태.

데드락의 조건

교착 상태는 다음 네 가지 조건이 모두 만족하면 발생한다.

1) mutual exclusion(상호배제) : 자원의 사용은 배타적이다. (두 프로세스가 동시에 자원을 쓸 수 없다)

2) hold and wait(점유대기) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.

3) no preemption(비선점) : 누군가 사용 중인 자원을 뺏을 수 없다.

4) circular wait(순환대기) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있다.

circular wait 조건은 hold and wait 조건과 no preemtion 조건을 만족해야 성립한다. 즉 위 4가지 조건은 서로 완전히 독립적이지 않다.

교착 상태 관리

circular wait 을 막는것이 제일 쉬우며, 시스템에 circular wait이 발생하지 않도록 자원 할당 상태를 검사한다.

회피하기 위한 알고리즘으로 1) 자원 할당 그래프 알고리즘과 2) 은행원 알고리즘 이 있는데, 이 부분은 잘 모르는 부분. 실 예제도 어떠한지 찾아봐야 할 듯..