데드락(Deadlock)은 컴퓨터 과학에서 주로 다루는 멀티 프로세싱 환경에서 발생하는 문제 상황입니다. 간단하게 설명하자면, 데드락은 두 개 이상의 프로세스나 스레드가 서로 필요한 자원을 기다리며 진행을 멈추게 되어, 어느 한 쪽도 그 다음 작업을 진행할 수 없는 상태를 의미합니다.
데드락의 발생 조건 네 가지:
상호 배제 (Mutual Exclusion): 한 번에 하나의 프로세스만이 자원을 사용할 수 있습니다.
점유와 대기 (Hold and Wait): 프로세스가 일부 자원을 점유한 상태에서 다른 자원을 대기합니다.
비선점 (No Preemption): 프로세스가 점유한 자원을 다른 프로세스가 강제로 빼앗을 수 없습니다.
환형 대기 (Circular Wait): 프로세스들이 원형의 형태로 자원을 대기하게 됩니다. (예: 프로세스 A는 B의 자원을, B는 C의 자원을, C는 A의 자원을 대기하는 식)