본문 바로가기

프로그래밍/기본기ㆍ자료구조

Deadlock (데드락)

728x90
반응형

- 둘 이상의 프로세스가 함께 멈추는 교착 상태에 빠지는 것을 말하다.
- 재수 없으면 운영체제 자체도 교착되어 멈추는 현상이 발생할 수 있다.

발생 조건
1. 상호 배제 (Mutual Exclusion)
2. 점유 상태로 대기 (Hold And Wait)
3. 선점 불가 (No Preemption)
4. 순환성 대기 (Circular Wait)
이 네가지 조건이 모두 충족되면 교착 상태가 일어난다.

1. 상호 배제
 배타적이다는 표현을 사용한다. 자원을 독점 한다고 보면 된다. 
간단히 헬스장을 예로 들어보자
사람1이 벤치프레스를 하고 있다. 그리고 사람2가 벤치프레스를 하려고 기다리고 있다.
여기서 만약 사람1이 벤치를 독점하고 있다면 사람2는 사람1이 트레이너(운영체제)에게 제제를 당하기 전까지 주구장창 기다려야 할것이다.


2. 점유 상태로 대기
이미 자원을 점유하고 있음에도 다른 자원을 기다리고 있는 것이다.
이것도 간단히 헬스장을 예로 들어보자
사람1이 벤치프레스를 하고 있다. 그런데 이미 벤치를 차지하고 있음에도 옆에 있는 덤벨도 사용하려고 한다. 덤벨은 사람2가 이미 사용 중이고 덤벨을 놓을 생각을 안한다. 그럼 사람1은 덤벨을 사용할 수 있을때 까지계속 기다려야한다.


3. 선점 불가
- 다른 프로세스가 점유중인 자원을 뺏을 수 있는 방법이 없다.
자꾸 헬스장을 예로 들게 되는데 이것 역시 헬스장으로 예를 들 수 있다.
2번의 상황을 보자, 덤벨은 사람2가 이미 사용 중이다. 근데 사람1이 덤벨을 사용하고 싶다.
그러나 사람2가 마동석처럼 우락부락하고 건들면 진실의 방으로 끌려갈것 같은 사람이다면?
사람1은 덤벨을 뺏어올 수 있는 방법이 없다.


4. 순환성 대기
- 대기가 꼬리에 꼬리를 물어 무한정 대기하는 상황이다.
이것 또한 헬스장으로 예를 들 수 있지만 더 쉽게는 '회전 교차로'를 생각하면 된다.
양보가 없다면 꽉 막혀 아무도 지나가지 못하고 교착 상태에 빠질 것이다.

 

 

 

 

다람쥐와 포동포동이

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글

stack (스택 메모리)  (0) 2020.04.14
Generic (제네릭)  (3) 2020.04.12
GimbalLock (짐벌락)  (0) 2020.04.12
Sealed (상속 한정 키워드)  (0) 2020.04.11
Interface와 abstract의 차이  (0) 2020.04.11