데드락(Deadlock) 발생 가능성을 사전에 파악하여 방지하는 회피(Avoidance) 전략과 대표적인 기법인 은행원 알고리즘을 정리한다.
안전 상태와 불안전 상태
데드락 회피는 자원 할당 전 시스템의 상태를 계산하여 판단한다.
- 안전 상태 (Safe State): 모든 프로세스가 정상 종료될 수 있는 자원 할당 순서(안전 순서열)가 존재하는 상태다.
- 불안전 상태 (Unsafe State): 데드락 발생 가능성이 있는 상태다.
은행원 알고리즘 (Banker’s Algorithm)
자원 요청 시 해당 요청을 수락했을 때 시스템이 안전 상태를 유지할 수 있는지 검증한다.
[ 시스템 자원 현황 ]
- 가용 자원 (Available): 3
[ 프로세스별 상태 ]
P1: 추가 필요 3 -> 가용 자원으로 완료 가능
P2: 추가 필요 5 -> 대기 필요
P3: 추가 필요 2 -> 가용 자원으로 완료 가능
프로세스가 작업을 끝내고 자원을 반납하는 시나리오를 계산하여, 모든 프로세스가 완료 가능한 경로가 존재할 때만 자원을 할당한다.
데드락 회피는 자원 할당 시마다 계산 오버헤드가 발생하지만 시스템의 안정성을 보장하는 신중한 접근 방식이다.
최악의 상황을 가정하고 대비하는 구조적인 설계 전략인 것 같다.