예>
자원A
자원B
프로세스1 - 자원 A와 자원 B를 요구한다. 두 자원의 처리 후 각자를 해제.
프로세스2 - 자원 B와 자원 A를 요구한다. (마찬가지)
이 두 프로세스가 동시 수행되었을 경우.
프로세스 1 - 자원 A를 갖고 자원 B를 요구한다.
프로세스 2 - 자원 B를 갖고 자원 A를 요구한다.
결과적으로 데드락 발생.
이 경우, 반드시 자원 A를 먼저 가지게끔 요구 순서를 변경(알파벳 순)하면 해결 되지만,
다음과 같은 문제가 있다.
자원A
자원B
자원C
프로세스1 - 자원 A와 자원 B를 요구.
프로세스2 - 자원 B와 자원 C를 요구.
즉, 서로 의존관계에 있을 수 있는 자원을 종류(유형)에 따라 권한으로 부여 하면 쉽게 해결된다.
권한1 - 자원 A, 자원, B, 자원 C를 접근할 수 있는 권한으로서의 자원.
프로세스1 - 권한1을 얻어 자원 A와 자원 B를 사용
프로세스2 - 권한1을 얻어 자원 B와 자원 C를 사용
따라서, 범주별 권한으로 자원을 encapsulation 한다는 슬픈 이야기.
(자원A,B 자원 B,C 자원 C,D를 한 범주로 묶으면 A,B와 C,D는 상관이 없으면서도 선점한쪽을 기다려야 하므로)
(어쨌든 데드락은 발생하지 않게 된다)
|
그럼