Deadlock 데드락
데드락은 프로세스2개 자원2개만 기억하면 된다.
데드락에는 프로세스2개 자원2개가 필요하니 데드락 케이스를 만들어 낼 때, 프로세스2개 자원2개만 기억하면 만들어 낼 수 있다.
교착 상태 조건 4가지
다음 4가지 조건을 모두 만족하면 데드락이 발생한다.
- Mutual Exclusion : 상호 배제. 프로세스가 타겟 자원을 요구 시 타 프로세스를 배제하고 배타적으로 요구한다. (자원을 혼자 쓰겠다.)
- Hold & Wait : 자원 하나 홀드 한 상태에서, 다른 자원이 반환되기를 기다린다.
- No Preemption : 비선점. 다른 프로세스가 가지고 있는 자원을 선점할 수 없다.[=뺏어올 수 없다] (반대 케이스는 내가 우선순위가 높으면 선점 가능한 경우.)
- Circular Wait : 대기가 환형으로 발생하는 경우.
Lock Free는 CAS instruction 지원이 필요하다.
This post is licensed under CC BY 4.0 by the author.