Deadlock(교착 상태) - 3. 데드락 발생 조건 (Coffman의 네 가지 조건)
2025. 3. 25. 22:37ㆍ프로그래밍/시스템
3. 데드락 발생 조건 (Coffman의 네 가지 조건)
✅ 개요
데드락(교착 상태)은 단순히 자원을 동시에 사용하는 상황에서 발생하지 않습니다.
Edward G. Coffman, Jr., M. J. Elphick, A. Shoshani가 1971년 발표한 논문 「System Deadlocks」에서 제안한 바와 같이, 데드락이 발생하려면 반드시 네 가지 조건이 동시에 만족되어야 합니다.
이 네 가지 조건은 Coffman 조건(Coffman Conditions)이라 불리며, 데드락 분석, 예방, 탐지 전략의 기반이 되는 핵심 개념입니다.
✅ Coffman의 네 가지 조건
1. 상호 배제 (Mutual Exclusion)
- 하나의 자원은 동시에 둘 이상의 프로세스가 사용할 수 없습니다.
- 자원은 오직 하나의 프로세스만 점유할 수 있어야 하며, 자원은 공유 불가능한 상태여야 합니다.
- 대표 예: 프린터, DB 락, 파일 핸들 등
2. 점유 대기 (Hold and Wait)
- 자원을 점유하고 있는 프로세스가, 추가 자원을 요청하면서 대기하는 상태입니다.
- 점유 중인 자원을 반납하지 않고 다른 자원을 기다리기 때문에 데드락 가능성이 생깁니다.
3. 비선점 (No Preemption)
- 이미 할당된 자원은, 외부에서 강제로 회수(선점)할 수 없습니다.
- 자원을 점유한 프로세스가 자발적으로 반환할 때까지 기다려야 하므로, 대기가 지속됩니다.
4. 환형 대기 (Circular Wait)
- 두 개 이상의 프로세스가 서로가 가진 자원을 요구하며 원형으로 대기하는 구조입니다.
- 예: 프로세스 A → B → C → A 순서로 각자의 자원을 기다리는 상황
🔄 조건 간의 관계 및 작용 방식
Coffman 조건은 개별적으로도 의미가 있지만,
이 네 가지가 동시에 충족될 때 데드락이 실제로 발생합니다.
🧩 어떻게 함께 작용하는가?
- 상호 배제가 자원 독점을 허용하고,
- 점유 대기가 자원을 점유한 상태에서 다른 자원에 대한 요청을 발생시키며,
- 비선점은 점유 중인 자원을 강제로 빼앗지 못하게 하고,
- 이 모든 상황이 환형 대기 구조로 연결되면 데드락이 형성됩니다.
즉, 이 조건들은 단독으로는 위험 요소에 불과하지만,
서로를 보완하며 데드락이라는 실제 문제로 이어지게 됩니다.
📊 조건 제거 시 효과 요약
조건명 | 기능 요약 | 제거 또는 완화 방법 예시 |
상호 배제 | 자원을 동시에 사용 못하게 함 | 공유 가능한 자원으로 변경 (예: 읽기 전용 자원) |
점유 대기 | 자원을 점유한 채 대기함 | 필요한 모든 자원을 한 번에 요청하도록 설계 |
비선점 | 자원을 강제로 회수 불가 | 자원을 선점 가능하게 만들고 대기 프로세스를 중단 |
환형 대기 | 자원 요청이 순환 구조임 | 자원 요청 순서를 미리 정해 고리 구조를 방지 |
💡 하나의 조건이라도 제거하면 데드락은 원천적으로 발생하지 않습니다.
🧠 리소스 할당 그래프 (Resource Allocation Graph)
- 프로세스와 자원을 노드로 나타내고, 요청/점유 관계를 화살표로 표현하는 그래프입니다.
- 사이클(Cycle)이 존재할 경우, 데드락이 발생할 가능성이 있음
- 단일 자원 인스턴스일 경우: 사이클 존재 = 데드락 발생
- 다중 자원 인스턴스일 경우: 별도의 알고리즘이 필요
📝 요약
데드락은 단일 요인으로 발생하는 문제가 아니라,
Coffman의 네 가지 조건이 모두 충족될 때에만 발생하는 구조적 문제입니다.
따라서 시스템 설계 시 이 조건 중 하나라도 제거하거나 제어할 수 있다면,
데드락은 사전에 예방될 수 있습니다.
이 조건들은 이후 학습하게 될 데드락 예방, 회피, 탐지, 복구 전략의 기반이 됩니다.
'프로그래밍 > 시스템' 카테고리의 다른 글
Deadlock(교착 상태) - 5. 데드락과 유사 개념 비교 (0) | 2025.03.25 |
---|---|
Deadlock(교착 상태) - 4. 실제 사례로 보는 데드락 (0) | 2025.03.25 |
Deadlock(교착 상태) - 2. 데드락(교착 상태)의 개념 이해 (0) | 2025.03.25 |
Deadlock(교착 상태) - 1. 도입: 왜 데드락(교착 상태)을 알아야 할까? (0) | 2025.03.25 |
커널 포팅 (마무리 및 추가 학습 자료) (0) | 2025.03.06 |