Answer

데드락

Untitled

Untitled

데드락 발생조건 - 4가지

상호배제, 비선점, 점유대기, 순환대기

  1. 상호배제 (Mutual exclusion)
  2. 점유대기 (Hold and Wait)
  3. 비선점 (No preemption)
  4. 순환대기 (Circular wait)

데드락 처리 방법 (handling) - 4가지

예방, 회피, 발견 및 회복, 무시 기법

  1. 예방 (a.k.a 적극적 예방)

    1. 상호 배제 제거: 공유 자원 중 많은 경우가 한번에 한 프로세스만 사용 가능하기 때문에 제거하기 힘들다.

    2. 점유 대기 제거: 프로세스가 자원을 요청하려면 다른 어떤 자원도 가지고 있지않은 빈털터리여야 가능하게 제한한다.
      • 방법1) 프로세스를 실행하기 전, 모든 자원을 할당한다.
      • 방법2) 자원을 가지고 있는데 달느 자원이 또 필요하면, 보유하고 있던 자원을 모두 반납하고 빈털터리 상태로 필요 자원을 요청한다.
    3. 비선점 제거: 자원을 점유하고 있는 프로세스가 다른 자원의 권한을 요청할 때, 현재 점유하고 있는 자원을 반납하도록 한다.
    4. 순환 대기 제거: 자원에 고유번호를 할당하고 순서대로 자원을 요구하도록 한다, 대부분의 교착상태 방지 알고리즘의 목적이다.
  2. 회피 (회피함으로써 예방)

  3. 탐지 및 회복 (이미 데드락이 일어났다면..? 이렇게 대처하자)

    1. 프로세스 종료
      • 교착상태의 프로세스를 모두 중지한다.
      • 교착상태가 사라질 때까지 프로세스를 하나씩 종료시킨다.
    2. 할당 자원 반납
      • 교착상태의 프로세스를 정지시키고, 자원을 먼저 점유하여 다른 프로세스에게 할당한다.
      • 우선 순위가 낮은 프로세스, 수행 횟수가 적은 프로세스를 위주로 프로세스 자원을 선점한다.