데드락 이란?
- 모든 스레드가 다른 스레드에 의해서만 발생할 수 있는 이벤트를 기다리고 있습다.
- 즉, 스레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태이기에 스레드를 실행할 수 없습니다.
데드락 발생 조건
- 데드락은 4가지의 조건이 모두 성립해야 발생합니다.
- 하나라도 성립하지 않으면 데드락 문제가 해결됩니다.
- 상호배제 (Mutual Exclusion)
- 한 번에 하나의 스레드만 리소스를 사용할 수 있습니다.
- 점유대기 (Hold and Wait)
- 하나 이상의 리소스를 보유한 스레드가 다른 스레드가 보유한 추가 리소스를 획득하기 위해 대기 중입니다.
- 비 선점 (No Preemption)
- 리소스 선점이 없습니다.
- 해당 스레드가 작업을 완료한 후 해당 스레드를 보유하는 스레드에 의해서만 리소스를 자발적으로 해제할 수 있습니다.
- 즉, 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺴앗을 수 없습니다.
- 순환대기 (Circular Wait)
- 프로세스의 자원 점유 및 점유된 자원의 요구 관계가 원형을 이루면서 대기하는 조건입니다.
- 각 프로세스는 순환적으로 다음 프로세스가 요구하는 차원을 가지고 있습니다.
'이론' 카테고리의 다른 글
| 컴파일링의 각 과정과 결과물 (0) | 2024.03.23 |
|---|---|
| 데드락 예방조건 4가지 (0) | 2024.03.20 |
| Animation Tweening (0) | 2024.03.18 |
| Animation Blending (0) | 2024.03.17 |
| Inverse Kinematics (1) | 2024.03.16 |