- 한 스레드(프로세스)가 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 |