데드락(deadlock)

Rudy·2023년 1월 10일
0

Deadlock(교착상태)

두개 이상의 프로세스 혹은 스레드가 서로가 가진 리소스를 기다리는 상태를 말한다.

데드락을 만드는 조건

  • Mutual exclusion : 리소스를 공유해서 사용할 수 없다
  • Hold and wait : 프로세스가 이미 하나 이상의 리소스를 취득한 상태에서 (hold) 다른 프로세스가 사용하고 있는 리소스를 추가로 기다린다 (wait)
  • No preemption : 리소스 반환(release)은 오직 그 리소스를 취득한 프로세스만 할 수 있다
  • Circular wait : 프로세스들이 순환(circilar) 형태로 서로의 리소스를 기다린다.

OS의 데드락 해결방법

데드락 방지(Deadlock prevention)

  • 위 네 가지 조건 중 하나가 충족되지 않게 시스템을 디자인 한다

hold and wait

  • 사용할 리소스들을 모두 획득한 뒤에 시작
  • 리소스를 전혀 가지지 않은 상태에서만 리소스 요청

no preemption

  • 추가적인 리소스를 기다려야 한다면 이미 획득한 리소스를 다른 프로세스가 선점 가능하도록 한다

circular wait (가장 많이 사용하는 방식)

  • 모든 리소스에 순서 체계를 부여해서 오름차순으로 리소스를 요청

데드락 회피(Deadlock avoidance)

  • 실행 환경에서 추가적인 정보를 활용해서 데드락이 발생할 것 같은 상황을 회피하는 것
    Banker algorithm : 리소스 요청을 허락해줬을 때 데드락이 발생할 가능성이 있으면 리소스를
    할당해도 안전할 떄 까지 계속 요청을 거절하는 알고리즘

데드락 감지와 복구

  • 데드락을 허용하고 데드락이 발생하면 복구하는 전략

    데드락 감지와 복구 전략
    1 . 프로세스를 종료한다
    2 . 리소스의 일시적인 선점을 허용한다

profile
주니어 개발자

0개의 댓글