Deadlock 처리
deadlock을 처리하는 방법으로는 3가지 정도 볼 수 있다.
1. Deadlcok Prevention
2. Deadlcok Avoidance
3. Detection and recovery
그중에 Deadlcok Prevention에 대해 알아보자
Deadlcok Prevention
Deadlock에 빠지는 4가지 조건 중 하나라도 성립하지 않게 하는 것이다.
첫째로, Mutual Exclusion을 무효화하기 위해선 모든 자원을 공유 자원으로 변경하는 방법이 있다. 하지만 공유 자원으로 사용할 수 없는 것들이 있기 때문에 불가능하다.
둘째로, Hold and Wait를 무효화하기 위해 프로세스를 실행시키기 위해 필요한 자원을 미리 다 확보하면 그때 동작하는 방법이 있다. 하지만 자원이 굉장히 많이 필요하다면 확률적으로 모든 자원이 할당될 확률이 굉장히 작다. 또 다른 방법으로는 자원을 요청할 때 가지고 있던 자원을 Hold하지 않고 release 하고 요청하는 방법이 있다. 하지만 이런 방법들은 사실 불가능하다. starvation이 발생할 수도 있고 이 외에도 많은 문제가 생길 수 있다.
셋째로, No Preemption을 무효화할 방법은 없다. 어떤 자원은 내재적으로 preemption을 못하게 돼 있기 때문이다.
그렇다면 마지막으로 Circular wait를 무효화하는 방법밖에는 없다.
어떻게 하는지 보면, 자원을 할당할 때 미리 순서를 정해서 지정하는 것이다.
// 프로세스0
wait(S);
wait(Q);
signal(Q);
singnal(S);
// 프로세스1
wait(Q);
wait(S);
signal(S);
signal(Q);
이런 상황이면 Deadlock에 빠지지만 동작 순서를 지정하여 S가 무조건 Q보다 먼저 실행되게 한다거나 하면 Deadlcok에 빠지지 않는다.
정리하면 Deadlcok Prevention는 자원 할당의 순서를 지정하는 것이다.
'반도체 그 다음 학문 > 운영체제 (OS)' 카테고리의 다른 글
운영체제 Deadlock Detection (Deadlock 해결방법, 하드웨어 Deadlock) (0) | 2022.05.19 |
---|---|
운영체제 Deadlock Avoidance ( 은행원 알고리즘, Banker's Algorithm, Safety Algorithm, Resource-Request Algorithm ) (0) | 2022.05.19 |
운영체제 Deadlock (발생 원인, 조건, Mutual exclusion, Hold and wait, Circular wait ) (0) | 2022.05.19 |
운영체제 Reader-Writers & Dining Philosophers (0) | 2022.05.12 |
운영체제 Monitors & Liveness (0) | 2022.05.12 |
댓글