다수의 프로세스가 서로가 가진 자원을 기다리며 무한히 멈춰버리는 치명적인 상태, ‘데드락(Deadlock)’의 발생 원인과 운영체제의 대응 전략을 분석한다.
교착 상태 성립의 4대 조건
데드락은 다음 4가지 조건이 동시에 충족될 때 발생한다.
- 상호 배제 (Mutual Exclusion): 한 번에 한 프로세스만 자원을 점유할 수 있다.
- 점유와 대기 (Hold and Wait): 자원을 가진 상태에서 다른 자원을 추가로 대기한다.
- 비선점 (No Preemption): 타 프로세스의 자원을 강제로 회수할 수 없다.
- 환형 대기 (Circular Wait): 대기 프로세스들이 순환 고리 구조를 형성한다.
데드락 해결을 위한 관리 정책
-
예방 (Prevention): 발생 조건 중 하나를 사전에 차단한다.
자원 낭비가 발생할 수 있다. -
회피 (Avoidance): 자원 할당 전 데드락 가능성을 미리 계산한다.
(은행원 알고리즘) - 탐지 및 복구 (Detection & Recovery): 발생을 허용하되, 주기적으로 확인하여 강제 종료 등으로 해결한다.
- 무시 (Ignore): 발생 빈도가 낮을 경우 조치 비용을 아끼기 위해 무시한다.
(현대 OS의 주류 방식)
P.S
데드락은 시스템 안정성을 위협하는 핵심 문제다.
자원 관리 정책을 설계할 때 발생 가능성을 고려한 방어적 설계가 필요하는 것 같다.