Lock Problem(Dead-Lock)

Lock이 의도되지 않은 상태에 빠져 나오지 못하는 상태가 여러 가지 있는데 그 중 대표적인 3가지를 알아본다.

Dead-Lock

  • 두 개의 태스크간에 자원을 하나 씩 소유하고 상대방의 자원에 접근하려 하는 경우 교착 상태에 빠져 나올 수 없는 상태가 된다.

lock_problem1

Circular Lock Dependency

  • 같은 lock을 두 번 사용하는 경우 두 번째 lock 호출 시 무한 대기 상태가 된다.

lock_problem2

Interrupt Safety

  • 루틴에서 같은 lock을 두 번 호출하지 않았는데도 불구하고 인터럽트 루틴에 의해 같은 lock이 호출되어 결국 두 번 사용되어지는 경우가 발생하는 경우에 두 번째 lock 호출에서 무한 대기 상태가 된다.

lock_problem3

  • 인터럽트 루틴에 의해 우선 순위가 더 높은 태스크로 스케쥴 되어 이미 호출된 lock을 또 사용하게 되는 경우에도 같은 상황이 발생한다.

lock_problem4a

참고

 

댓글 남기기