Deadlock(교착 상태) - 요약 정리
2025. 3. 26. 15:41ㆍ프로그래밍/시스템
🧷 Deadlock(교착 상태) 요약 정리
✅ 정의
Deadlock(교착 상태)이란 두 개 이상의 프로세스(또는 스레드)가 서로 필요한 자원을 점유한 채,
서로가 자원을 반환하기를 무한히 기다리는 상태를 말합니다.
외부 개입 없이 자연스럽게 진행이 불가능한 상태가 됩니다.
✅ 발생 조건 (Coffman의 네 가지 조건)
데드락은 아래 4가지 조건이 모두 충족될 때에만 발생합니다:
조건 | 설명 |
상호 배제 (Mutual Exclusion) | 하나의 자원은 한 번에 하나의 프로세스만 사용할 수 있다 |
점유 대기 (Hold and Wait) | 자원을 점유한 상태로 다른 자원을 요청하며 대기한다 |
비선점 (No Preemption) | 점유 중인 자원을 강제로 회수할 수 없다 |
환형 대기 (Circular Wait) | 프로세스들이 서로의 자원을 기다리며 원형 대기를 형성한다 |
✅ 유사 개념 비교
개념 | 정의 | 차이점 |
Deadlock | 모든 프로세스가 자원을 점유한 채 서로 대기하며 멈춘 상태 | 진행이 아예 멈춤 |
Livelock | 프로세스가 계속 상태를 바꾸지만 실제로 작업은 안 이루어짐 | 바쁘게 움직이나 실질적 진전 없음 |
Starvation (기아) | 특정 프로세스가 자원을 계속 할당받지 못해 실행되지 못함 | 일부 프로세스만 피해를 봄 |
✅ 처리 전략
전략 | 설명 |
예방 (Prevention) | 데드락 발생 조건 중 하나 이상을 사전에 제거 |
회피 (Avoidance) | 데드락이 발생하지 않는 안전 상태만 유지 (예: 은행가 알고리즘) |
탐지 (Detection) | 데드락이 발생해도 탐지 후 대응 |
복구 (Recovery) | 데드락 탐지 후 프로세스 종료, 자원 회수 등으로 해결 |
✅ 주요 알고리즘
알고리즘 | 목적 | 특징 |
자원 할당 그래프 (RAG) | 탐지 | 자원/프로세스 간 관계를 그래프로 표현하여 사이클 여부 분석 |
은행가 알고리즘 (Banker’s Algorithm) | 회피 | 안전 상태를 유지하면서 자원 요청 판단 |
✅ 실전 코딩 기법
- 락 순서 고정: 자원 획득 순서 통일
- 타임아웃 락 사용: 무한 대기 방지
- 재시도 + 백오프: 충돌 완화
- 로깅/모니터링: 운영 중 데드락 추적 가능
✅ 실무 팁
- 완벽한 회피는 어렵지만, 구조적 예방 + 모니터링 + 복구 설계로 충분히 관리 가능
- 중요 로직(결제, 저장 등)은 반드시 데드락 대비 설계를 적용할 것
- 코드 리뷰 시 락 순서, 중첩, 해제 누락 등을 반드시 점검할 것
'프로그래밍 > 시스템' 카테고리의 다른 글
Deadlock(교착 상태) - 10. 요약 및 실전 적용 가이드 (0) | 2025.03.26 |
---|---|
Deadlock(교착 상태) - 9. FAQ: 자주 묻는 질문과 실전 팁 (0) | 2025.03.26 |
Deadlock(교착 상태) - 8. Deadlock을 피하기 위한 실전 코딩 기법 (0) | 2025.03.26 |
Deadlock(교착 상태) - 7. 주요 알고리즘 소개 (0) | 2025.03.26 |
Deadlock(교착 상태) - 6. 데드락 처리 전략 총정리 (0) | 2025.03.26 |