예방은 성립 조건을 없애고, 회피는 요청마다 안전한 완료 순서가 남는지 계산한다

은행원 알고리즘은 현재 deadlock만 찾는 검사가 아니다. 요청을 가상 승인한 뒤 모든 process가 끝날 수 있는 safe sequence를 증명한다.

Prevention · 정적 규칙

네 필요조건 중 하나가 항상 성립하지 않게 설계한다. 단순하지만 concurrency와 자원 이용률을 낮출 수 있다.

상호 배제공유 가능 자원화

점유·대기일괄 요청·선반납

비선점회수 가능한 자원 선점

순환 대기전역 lock 순서

Avoidance · 동적 승인

Available, Max, AllocationNeed = Max − Allocation을 알고 요청 뒤에도 safe state인지 계산한다. 최대 요구량을 모르면 적용하기 어렵다.

1. BoundRequest ≤ Need·Available을 확인한다.
2. PretendAvailable·Allocation·Need를 임시 갱신한다.
3. FindNeedᵢ ≤ Work인 미완료 process를 찾는다.
4. Release가상 완료 후 Work += Allocationᵢ.
5. Decide전부 끝나면 승인, 아니면 rollback·wait.
안전 순서 예시Work=[3,3,2]P1 완료P3 완료P0 완료따라서 요청 뒤에도 완료 순서가 남는다.

Unsafe ≠ deadlocked아직 멈추지 않았어도 이후 요청에 따라 deadlock에 빠질 수 있어 회피가 거부한다.

예방 규칙의 비용lock 순서·일괄 요청이 실제 병렬성과 latency를 얼마나 줄이는지 측정한다.

입력 계약process 수명과 최대 claim이 안정적인 폐쇄형 자원 모델에서만 계산을 신뢰한다.