OS Deadlock Basics

데드락 4조건과 자원 할당 그래프 사이클 판정

데드락은 프로세스들이 서로 가진 자원을 기다리며 영원히 진행하지 못하는 상태이며 네 조건이 동시에 성립해야 한다.

01

자원 보유

각 프로세스가 이미 가진 자원과 추가로 기다리는 자원을 구분한다.

hold/request
02

조건 확인

상호 배제, 점유와 대기, 비선점, 순환 대기가 모두 참인지 본다.

necessary conditions
03

그래프 작성

요청 edge와 할당 edge를 자원 할당 그래프로 그려 순환 구조를 찾는다.

RAG
04

사례 연결

파일 잠금, DB transaction, thread lock 순서 문제를 같은 4조건으로 해석한다.

real systems
상호 배제
동시에 공유할 수 없는 자원이 있어야 한다. 읽기 전용 자원처럼 공유 가능하면 조건이 약해진다.
exclusive resource
점유와 대기
자원을 가진 채 다른 자원을 기다리는 상태다. 모든 자원을 한 번에 요청하게 하면 조건을 깰 수 있다.
hold while wait
순환 대기
P1은 P2를, P2는 P3를, P3는 P1을 기다리는 고리가 생긴다. 자원 순서 규칙은 이 고리를 미리 막는다.
cycle

데드락 판정 질문

자원 인스턴스 자원이 단일 인스턴스인지 다중 인스턴스인지 구분한다.
대기 지속 일시적인 긴 대기와 영구적인 순환 대기를 구분한다.
락 순서 코드에서 여러 락을 잡는 순서가 일관되는지 확인한다.

4조건

1. mutual exclusion
2. hold and wait
3. no preemption
4. circular wait