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) 프로세스들이 서로가 가진 자원을 기다리며 원형으로 연결된 상태

📝 요약

데드락은 동시성 환경에서 발생하는 대표적인 자원 충돌 문제입니다.
철학자 식사 문제나 교차로 차량 대기와 같이,
자원을 점유한 채 서로를 기다리는 구조가 되면 시스템은 정지 상태에 빠집니다.
관련 용어를 정확히 이해하는 것은 데드락의 발생 조건과 해결 전략을 익히기 위한 기초입니다.