Deadlock(교착 상태) - 2. 데드락(교착 상태)의 개념 이해
2025. 3. 25. 22:23ㆍ프로그래밍/시스템
2. 데드락(교착 상태)의 개념 이해
✅ 데드락이란 무엇인가?
데드락(Deadlock, 교착 상태)은 둘 이상의 프로세스(또는 스레드)가
서로가 점유하고 있는 자원을 요청하면서 무한히 대기하는 상태를 말합니다.
이 상황에서는 어떤 작업도 더 이상 진행되지 않으며, 외부의 개입 없이는 시스템이 정지하게 됩니다.
📌 간단 정의
데드락은 서로가 필요한 자원을 점유한 채, 영원히 대기 상태에 빠지는 진행 불능 상태입니다.
🧠 일상 속 비유로 이해하는 데드락
🍽️ 철학자 식사 문제 (Dining Philosophers Problem)
E. W. Dijkstra가 1965년에 제안한 고전적 동시성 문제로,
자원 공유와 동기화의 위험성을 설명하는 대표적인 예시입니다.
- 5명의 철학자가 원형 테이블에 앉아 있고, 각자 왼쪽과 오른쪽에 포크가 하나씩 있습니다.
- 식사를 하기 위해서는 두 개의 포크가 모두 필요합니다.
- 모두가 동시에 왼쪽 포크를 집으면, 오른쪽 포크는 남아 있지 않아 아무도 식사할 수 없습니다.
- 이 상황은 서로가 자원을 기다리며 무한히 대기하는 구조로, 데드락이 발생합니다.
🚗 교차로 차량 대기
- 네 방향에서 진입한 차량들이 교차로 중앙에서 각자 앞 차량이 지나가길 기다리는 상태에 놓입니다.
- 서로 양보하지 않으면 모든 차량이 멈춰 있는 상태가 되며, 이는 데드락과 같은 구조입니다.
📚 데드락 관련 핵심 용어 정리
용어 | 설명 |
프로세스 (Process) | 실행 중인 프로그램으로, 자원을 요청하고 사용하는 작업 단위 |
스레드 (Thread) | 프로세스 내에서 실행되는 경량 작업 단위로, 자원을 공유하며 동작 |
자원 (Resource) | 프로세스가 필요로 하는 대상 (예: CPU, 파일, 데이터베이스 락 등) |
락 (Lock) | 자원에 대한 접근을 제어하여 동시 사용을 제한하는 메커니즘 |
상호배제 (Mutual Exclusion) | 하나의 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 함 |
점유 대기 (Hold and Wait) | 자원을 점유한 상태에서 다른 자원을 기다리는 상황 |
비선점 (No Preemption) | 점유 중인 자원을 강제로 회수할 수 없는 상태 |
환형 대기 (Circular Wait) | 프로세스들이 서로가 가진 자원을 기다리며 원형으로 연결된 상태 |
📝 요약
데드락은 동시성 환경에서 발생하는 대표적인 자원 충돌 문제입니다.
철학자 식사 문제나 교차로 차량 대기와 같이,
자원을 점유한 채 서로를 기다리는 구조가 되면 시스템은 정지 상태에 빠집니다.
관련 용어를 정확히 이해하는 것은 데드락의 발생 조건과 해결 전략을 익히기 위한 기초입니다.
'프로그래밍 > 시스템' 카테고리의 다른 글
Deadlock(교착 상태) - 4. 실제 사례로 보는 데드락 (0) | 2025.03.25 |
---|---|
Deadlock(교착 상태) - 3. 데드락 발생 조건 (Coffman의 네 가지 조건) (0) | 2025.03.25 |
Deadlock(교착 상태) - 1. 도입: 왜 데드락(교착 상태)을 알아야 할까? (0) | 2025.03.25 |
커널 포팅 (마무리 및 추가 학습 자료) (0) | 2025.03.06 |
커널 포팅 (6. 실전 커널 포팅 프로젝트 / 6.2 새로운 보드용 커널 포팅 프로젝트 진행) (0) | 2025.03.06 |