본문 바로가기
🌱 Computer Science/OS

[OS] 데드락(교착상태)

by 카프리썬_ 2020. 1. 13.
728x90

프로세스가 공유자원을 동시에 할당하려고 할 때 무한정으로 대기하는 상태

 

언제 발생하는가?

다음과 같은 4가지 조건을 모두 만족하면 교착상태가 발생한다.

1. 상호배제 조건

하나의 프로세스나 스레드만 공유자원으로 가질 수 있다면 다른 자원은동시에 할당할 수 없어서 교착상태가 발생한다.

2. 점유대기 조건

한번 할당하고, 다른 자원을 할당하기 위해서 대기한다면 이때 무한정으로 대기할 수 있어서 교착상태가 발생한다.
3. 비선점 조건

한번 할당 하면, 중단되거나 취소할 수 없다면 다른 자원을 할당하기 위해 기다려야 해서 교착상태가 발생한다.
4. 순환대기 조건

다음 자원을 대기하는데 사이클이 존재한다면, 무한정으로 기다리는 교착상태가 발생한다.

 

그렇다면 어떻게 예방할수 있는가? 교착상태를 피하려면?

위와 같은 4가지 조건 중 한가지를 부정하면 된다.
1. 상호배제 조건을 부정하면
여러가지 공유자원을 동시에 할당할 수 있어서 교착상태를 예방할 수 있다.
2. 점유대기 조건을 부정하면
다른 자원을 할당할 동안 대기하지 않아서 교착상태를 예방할 수 있다.
3. 비선점 조건을 부정하면
자원이 선택되어도 중단될 수 있어서 교착상태를 예방할 수 있다.
4. 순환대기 조건을 부정하면
사이클에 할당 순서를 부여하여 교착상태를 예방할 수 있다.

 

반응형