티스토리 뷰

운영체제

[OS] DeadLock

머어하지 2017. 5. 11. 21:16

  OS에서 일어날 수 있는 DeadLock에 대해서 알아보겠습니다.


DeadLock 이란?

  DeadLock은 다른 Process가 소유한 자원을 요청하는 행위가 서로에게 행해져 모든 Process가 Block이 된 상태를 의미합니다. 예제를 통해 알아보겠습니다. 다음과 같은 2개의 Process가 있습니다.


1
2
3
Process1
owns lock A
requests lock B
cs


1
2
3
Process2
owns lock B
requests lock A
cs


  Process1은 lock A를 가지고 있습니다. 즉, A라는 Semaphore를 가지고 있습니다. Process2는 lock B를 가지고 있습니다. Semaphore는 한 곳에서 사용중이면 다른 Process를 차단하는 목적으로 사용합니다. 따라서 Process1이 lock B를 요청할 시 lock B는 사용중이므로 Process1은 lock B가 release 될 때까지 Block 상태에서 대기하게 됩니다. Process2도 마찬가지로 lock A를 요청 후 Block에 들어가게 될 것입니다. 이를 그림으로 살펴보면 다음과같이 정리할 수 있습니다.


  서로가 사용하고 있는 Semaphore를 요청하여 Block에 걸리게됩니다. 이렇게 여러 Process간 요청에의해서 Deadlock이 걸릴 수 있지만, 스스로도 Deadlock에 빠질 수 있습니다. 다음을 살펴보겠습니다.


  Process1이 한 semaphore를 가지고 있습니다. 이제 이 semaphore는 Process가 접근할 수 없게됩니다. 이 때 Process1이 똑같은 semaphore를 요청하였습니다. 하지만 이 semaphore는 접근할 수 없는 semaphore이므로 Process1은 Deadlock에 빠지게 됩니다. 이러한 Self Deadlock은 Recursive Lock이라 부르기도 합니다.



'운영체제' 카테고리의 다른 글

[OS] Deadlock Prevention  (0) 2017.06.03
[OS] Deadlock의 조건  (0) 2017.05.12
[MicroC/OS-II] CPU Scheduling with Preemptive  (0) 2017.04.23
[MicroC/OS-II] CPU Scheduling with Non-Preemptive  (0) 2017.04.23
[MicroC/OS-II] OS_TCBInit  (0) 2017.04.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday