ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데드락(DeadLock)
    운영체제 2023. 8. 15. 19:41
    728x90

    교착상태 즉 데드락

    두 스레드가 서로 상대방이 쥐고 있는 자물쇠가 풀리기만을 기다리면서 아무것도 할 수 없는 상황이 벌어 질 때가 있습니다. 이런 상황을 교착상태 즉 데드락(DeadLock)이라고 합니다. 데드락이란 스레드들이 서로 필요한 자원에 대한 락을 가지고 있는 경우에 발생합니다. 이러한 경우에 두 스레드 모두 실행 될 수 없는 상태가 되기 때문에 데드락이라는 이름이 붙여졌다고 합니다.

     

     

    예를 들면 데드락은 흔히 두 프로세스가 다음 단계로 넘어가기 위해서 두개의 락을  획득해야 하는데 서로 반대되는 순서로 락을 획득해야 하는 경우에 발생 합니다.

     

    예시 (A와 B라는 락이 존재)

    1. 1번 프로세스가 A를 획득
    2. 2번 프로세스가 1번 보다 먼저 B를 획득
    3. 1번 프로세스는 2번 프로세스가 보유하고있는 B를 획득하기 위해 대기
    4. 2번 프로세스는 1번 프로세스가 보유하고있는 A를 획득하기 위해 대기

    이러한 데드락을 감지하고 해결하는 여러가지 메커니즘이 존재하지만, 그중에 훌륭하다고 할 만한 것은 존재하지않는다고 합니다.

    락을 두개 이상 획득할 필요가 있다면 반드시 똑같은 순서로 획득하고 풀어줄 때는 역순으로만 풀어주는 방식으로 처음부터 코드를 설계해 애초부터 데드락을 방지하는 것이 최선입니다.

    하지만 이마저도 여러 락을 코드에서 빈번하게 획득할 수 있는 복잡한 애플리케이션에서는 데드락 예방이 쉽지않습니다.

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

    모니터와 세마포어  (17) 2023.08.15
    프로세스와 쓰레드  (0) 2023.08.01
Designed by Tistory.