이론

데드락 예방조건 4가지

월러비 2024. 3. 20. 20:03

데드락 해결 방법

  1. 교착 상태 방지 (Deadlock Prevention)
    1. 하나 이상의 조건을 유지할 수 없도록 함으로써 교착 상태가 발생하지 않습니다.
    2. 상호배제 (Mutual Exclusion)
      1. 공유 불가능한 리소스에 대해 보유해야 합니다.
      2. 재사용 가능한 리소스에 대한 상호 제외를 제거할 수 없으므로 이 옵션은 선택 사항이 아닙니다.
    3. 점유대기 (Hold and Wait)
      1. 스레드가 리소스를 요청할 때마다 다른 리소스를 보유하지 않도록 보장해야 합니다.
        1. 실행을 시작하기 전에 스레드가 모든 리소스를 요청하고 할당해야 합니다.
        2. 스레드에 할당된 리소스가 없는 경우에만 스레드가 리소스를 요청하도록 허용
        3. 단점 : 자원 활용률 저하 및 기아(Starvation) 발생 가능성
    4. 비 선점 (No Preemption)
      1. 일부 리소스를 보유하고 있는 스레드가 즉시 할당할 수 없는 다른 리소스를 요청하면 해당 스레드가 현재 보유하고 있는 모든 리소스가 해제됩니다.
        1. 즉, 리소스를 강제로 뺴앗을 수 있습니다.
        2. 스레드가 대기하는 동안 리소스가 손실될 수 있습니다.
        3. 스레드가 새 리소스가 할당되고 사전 설정된 리소스를 복구하는 경우에만 다시 시작됩니다.
        4. 단점 : 뮤텍스락, 세마포어 등의 자원에 일반적으로 적용할 수 없습니다.
    5. 순환대기 (Circular Wait)
      1. 모든 리소스 유형의 총 순서 부여, 각 스레드가 열거 순서에 따라 리소스를 요청하도록 요구합니다.
        1. 스레드는 리소스 번호의 증가된 순서로만 리소스를 요청할 수 있습니다.
        2. 스레드가 이러한 규칙을 위반하면 종료됩니다.

'이론' 카테고리의 다른 글

컴파일러와 인터프리터 차이  (0) 2024.03.24
컴파일링의 각 과정과 결과물  (0) 2024.03.23
데드락(deadlock) 발생조건 4가지  (0) 2024.03.19
Animation Tweening  (0) 2024.03.18
Animation Blending  (0) 2024.03.17