1. 데드락 개념
Deadlock이란 둘 이상의 Thread가 서로가 점유한 자원을 기다리며 무한 대기 상태에 빠지는 상황 의미.
각 Thread가 다른 Thread의 자원을 기다리는 순환 구조 형성 상태 의미.
2. 데드락 발생 조건
Deadlock은 다음 4가지 조건이 동시에 성립할 때 발생 가능.
1. 상호 배제 (Mutual Exclusion)
- 하나의 자원에 동시에 하나의 Thread만 접근 가능한 구조
- 다른 Thread는 자원 해제까지 대기 상태
2. 점유 대기 (Hold and Wait)
- 자원을 보유한 상태에서 다른 자원을 추가로 요청하는 상황
3. 비선점 (No Preemption)
- 이미 할당된 자원을 강제로 회수할 수 없는 구조
- 자원은 점유한 Thread에 의해만 반환 가능
4. 순환 대기 (Circular Wait)
- 여러 Thread가 순환 형태로 서로의 자원을 기다리는 구조
3. 데드락 해결 방법
데드락 해결 방법은 다음 4가지 방식 존재.
| 기법 | 설명 | 특징 |
|---|---|---|
| 무시 | 데드락 발생을 무시하는 방식 | 성능 저하 없음, 실제 시스템에서 많이 사용 |
| 예방 | 발생 조건 중 하나를 제거하는 방식 | 자원 효율성 감소 |
| 회피 | Deadlock이 발생하지 않도록 자원 할당 제어 | 알고리즘 기반 (은행원 알고리즘 등) |
| 탐지-회복 | 데드락 발생 후 탐지 및 복구 | 시스템 오버헤드 발생 |
4. 데드락 해결 방식 특징
무시
- 데드락 발생 확률이 낮은 환경에서 사용
- 성능 저하 없음
- 범용 운영체제에서는 모든 자원에 대해 데드락을 적극적으로 처리하지 않고, 일부 경우 무시하거나 응용 수준 처리에 맡기기도 함
예방
- 4가지 조건 중 하나 제거 방식
- 주로 순환 대기 제거 방식 사용
- 자원 활용 효율 감소
회피
- 자원 할당 시 데드락 발생 가능성 검사
- 안전 상태 유지 방식
- 대표 알고리즘: 은행원 알고리즘
탐지-회복
- 데드락 발생 후 탐지
- 일부 스레드 종료 또는 Rollback 수행
- 높은 비용 발생
핵심 정리
데드락
서로의 자원을 기다리며 무한 대기 상태 발생 구조발생 조건
상호 배제 / 점유 대기 / 비선점 / 순환 대기해결 방법
무시 / 예방 / 회피 / 탐지-회복
참고 자료
- KOCW, 운영체제 강의자료
https://contents.kocw.or.kr/KOCW/document/2015/cup/weonsunghyun/6.pdf - University of Illinois Chicago, Operating Systems Notes, “Deadlocks”
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html