데드락(Deadlock) 또는 교착 상태는 운영체제에서 발생할 수 있는 문제로, 둘 이상의 프로세스가 서로 자원을 점유하고 있으며, 각 프로세스가 다른 프로세스가 점유한 자원을 기다리면서 무한 대기 상태에 빠지는 현상을 말합니다.
데드락이 발생하려면 다음 네 가지 조건이 동시에 성립해야 합니다.
상호 배제(Mutual Exclusion)
점유와 대기(Hold and Wait)
비선점(Non-Preemption)
순환 대기(Circular Wait)
데드락을 해결하거나 방지하기 위해 다음과 같은 방법이 사용됩니다
예방(Prevention)
데드락 발생 조건 중 하나 이상을 제거하여 데드락을 방지합니다.
상호 배제 방지: 여러 프로세스가 동시에 자원을 공유하도록 허용.
점유와 대기 방지: 모든 필요한 자원을 한 번에 요청하도록 강제.
비선점 방지: 이미 할당된 자원도 강제로 회수 가능하게 설정.
순환 대기 방지: 자원의 요청 순서를 정해 순환 관계를 없앰.
회피(Avoidance)
탐지 및 복구(Detection and Recovery)
데드락이 발생했음을 탐지하고 이를 해결합니다.
무시(Ignorance)
데드락은 시스템 효율성을 저하시킬 수 있는 심각한 문제이므로, 예방과 회피 전략을 통해 사전에 방지하거나 탐지 및 복구 메커니즘을 통해 해결하는 것이 중요합니다.