본문 바로가기
반도체 그 다음 학문/운영체제 (OS)

운영체제 Deadlcok Prevention

by 전컴반 2022. 5. 19.
반응형
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는 자원 할당의 순서를 지정하는 것이다.

반응형

댓글