본문 바로가기
CSS

데드락

by BottleCoffin 2022. 8. 12.

데드락이란?

- 프로세스가 자원을 얻지 못해 다음 작업을 못하는 상태


ex) a
b가 있어야 되고 bc가 필요하고 ca가 필요하고 각각 프로세스에 있을 때 a를 갖고 있는 프로세스는 b가 있어야 다음 단계로 넘어갈 수 있고 b,c도 마찬가지일 때 셋다 아무것도 하지 못하는데 이 상태를 데드락 이라고 한다.

 


데드락 발생 조건

데드락은 4가지 조건이 동시에 성립 할 때 발생한다. 데드락을 해결하기 위해서는 네 가지 조건 중 하나라도 성립하지 않도록 만들면 된다.

-
상호 배제(Mutual exclusion) : 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다.
-
점유 대기(Hold and wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
-
비선점(No Preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 빼앗을 수 없어야 한다.
-
순환 대기(Circular wait) : 위의 예시

정리


데드락은 프로세스가 자원을 얻지 못해, 다음 작업을 못하는 상태.
예를 들어서 프로세스 1과 프로세스 2가 각각 자원 A와 자원B를 얻어야 되는데 프로세스1A를 프로세스2B를 가지고 있어서, 서로 무한정 기다리는 상태를 데드락이라고 한다.


데드락은 상호배제, 점유대기, 비선점, 순환 대기 네가지 조건이 동시에 발생해야 성립이 가능한데 데드락을 해결하기 위해서는 네 가지 조건 중 하나라도 성립하지 않도록 만들면 된다.

댓글