OS Deadlock Avoidance

순환 대기 차단과 은행원 알고리즘의 안전 상태 판정

데드락 예방은 네 조건 중 하나를 깨고, 회피는 자원 요청을 승인하기 전 시스템이 안전 상태에 남는지 계산한다.

01

조건 깨기

자원 순서 부여, 일괄 요청, 선점 허용처럼 데드락 성립 조건을 미리 제거한다.

prevention
02

요청 입력

은행원 알고리즘은 프로세스별 최대 요구량과 현재 할당량, 가용 자원을 입력으로 둔다.

필요 자원 기준표
03

가상 승인

요청을 임시로 승인한 뒤 모든 프로세스가 끝날 수 있는 순서가 있는지 시뮬레이션한다.

pretend allocation
04

안전 상태

safe sequence가 존재하면 승인하고, 없으면 대기시켜 데드락 가능성을 막는다.

safe/unsafe
예방
강하지만 자원 활용률을 낮출 수 있다. 순서 부여는 단순하고 효과적이지만 설계 규칙을 지켜야 한다.
static policy
회피
요청마다 안전 상태를 계산해 더 유연하다. 최대 요구량을 미리 알아야 해서 일반 시스템에는 적용이 어렵다.
동적 판단
불안전
unsafe는 곧 deadlock은 아니지만 deadlock으로 갈 수 있는 상태다. 회피 알고리즘은 unsafe 진입을 막는다.
risk state

안전 상태 판정

최대 요구량 각 프로세스의 max claim이 현실적으로 제한되어 있다.
승인 전 계산 요청을 실제 반영하기 전에 가상 할당으로 safe sequence를 확인한다.
정책 비용 예방 규칙이 concurrency를 과도하게 줄이지 않는지 본다.

은행원 입력

Need = Max - Allocation
if Request <= Need && Request <= Available:
  grant only when safe sequence exists