avoidance policy

데드락 예방과 회피

실무에서는 이론적 은행원 알고리즘보다 락 순서, try-lock, 타임아웃, 백오프처럼 실패를 제어하는 규칙을 자주 조합합니다.

order전역 락 순서
timeout무한 대기 차단
banker안전 상태 검사
retry반납 후 재시도
상호 배제 완화

읽기 전용 데이터나 스풀링처럼 독점 자원 자체를 줄이면 데드락 가능성이 낮아집니다.

점유 후 대기 깨기

필요한 자원을 한 번에 요청하거나 실패하면 이미 얻은 자원을 반납합니다.

선점 허용

가능한 자원은 강제로 회수하거나 롤백해 no preemption 조건을 깨뜨립니다.

순환 대기 제거

모든 코드가 같은 락 순서를 따르면 자원 그래프에 순환이 만들어지기 어렵습니다.

은행원 알고리즘

최대 요구량을 알고 있을 때 요청 후에도 안전 순서가 남는 경우에만 자원을 줍니다.

실무 재시도

trylock, 시간 제한, 지수 백오프, 대체 경로는 무한 대기를 운영 가능한 실패로 바꿉니다.