본문 바로가기
programing/Thread

데드락(Deadlock) 발생 조건

by RedWiz 2017. 10. 10.

- 한 스레드(프로세스)가 cpu를 계속 점유하여 다른 스레드(프로세스)가 접근하지 못하게 되는 상태


- 데드락은 다음 네 가지 조건을 모두 충족할 때 발생


1) mutual exclusion (상호배제) : 한 번에 한 프로세스만 공유 자원을 사용할 수 있다.


2) hold and wait (점유하며 대기) : 하나의 자원을 점유 하고 있는 프로세스가 다른 점유된 자원을 추가로 얻기 위해 대기 해야 함.


3) no preemption(선취 불가능) : 자원들을 선점할 수 없어야함.(비선점) 한 프로세스가 다른 프로세스가 가진 접근 권한을 강제로 취소할 수 없다.


4) circular cycle(순환 대기) : 두 개 이상의 프로세스가 다른 프로셋의 자원 접근 권한을 개방하는 것을 기다리고 있는데, 그 관계에 cycle이 존재한다.


- 데드락의 방지는 위의 네 가지 중 하나를 제거함

'programing > Thread' 카테고리의 다른 글

쓰레드 풀  (0) 2017.02.23
Fiber  (0) 2015.06.09
[링크] 멀티쓰레드 프로그래밍이 왜이리 힘드나요?  (0) 2015.06.02
타이버 기반 동기화  (0) 2015.05.01
쓰레드 동기화  (0) 2015.04.30