데드락은 프로세스2개 자원2개만 기억하면 된다.

데드락에는 프로세스2개 자원2개가 필요하니

데드락 케이스를 만들어 낼 때, 프로세스2개 자원2개만 기억하면 만들어 낼 수 있다.

 

교착 상태 조건 4가지

다음 4가지 조건을 모두 만족하면 데드락이 발생한다.

  1. Mutual Exclusion : 상호 배제. 프로세스가 타겟 자원을 요구 시 타 프로세스를 배제하고 배타적으로 요구한다. (자원을 혼자 쓰겠다.)
  2. Hold & Wait : 자원 하나 홀드 한 상태에서, 다른 자원이 반환되기를 기다린다.
  3. No Preemption : 비선점. 다른 프로세스가 가지고 있는 자원을 선점할 수 없다.[=뺏어올 수 없다] (반대 케이스는 내가 우선순위가 높으면 선점 가능한 경우.)
  4. Circular Wait : 대기가 환형으로 발생하는 경우.

 

Lock Free는 CAS instruction 지원이 필요하다.

https://effectivesquid.tistory.com/m/entry/Lock-Free-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98Non-Blocking-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

'OS > Kernel' 카테고리의 다른 글

Deadlock 데드락  (0) 2018.10.04
파이프라이닝과 해저드  (0) 2018.06.20
Meltdown 정리  (0) 2018.05.26
CVE-2017-1000112 : Exploitable memory corruption due to UFO to non-UFO path switch  (0) 2017.11.08
[kernel] current 구조체 / cred 수정  (0) 2017.10.22
[kernel] hook sys_call_table  (0) 2017.10.20