1 분 소요

교착상태

  • 대기 중인 프로세스들이 요청한 자원이 이미 점유되고, 그 프로세스들도 대기 상태일 때 그 상태를 변경할 수 없는 상황

교착 상태의 조건

  • 다음의 4가지 조건이 동시에 성립 될 때 발생한다.

  • 상호 배제 (Mutual Exclusion)
    • 최소 한 개 이상의 자원이 비공유 모드로 점유되어야 한다. 비공유 모드에서는 한 번에 하나의 프로세스만이 그 자원을 사용할 수 있다.
  • 점유 하며 대기 (Hold and Wait)
    • 프로세스는 최소한 하나의 자원을 점유 한 채 자원을 추가로 얻기 위해 대기해야 한다.
  • 비선점 (No Preemtion)
    • 자원들을 선점할 수 없어야 한다.
  • 환형 대기 (Circular Wait)

교착 상태 처리 방법

  • 회피 (Avoidance)
    • 교착 상태가 발생 했을 때 적절히 피해가는 방법
    • 은행원 알고리즘 (Banker's Algorithm)
      • 프로세스가 자원 요청을 할 때, 자원 할당 뒤에도 시스템이 교착 상태가 일어나지 않는지 확인 후 할당
      • 안정 상태(Safe state)에 있으면 할당, 불안정 상태(Unsafe State)에 있으면 비할당
      • Max 얼마나 많은 금액을 요구하는가
      • Available 빌려줄 수 있는 돈
      • Allocated 현재 빌려준 돈
  • 예방 (Prevention)
    • 4가지 조건 중 하나를 제거함으로서 해결
    • 가장 자원 낭비가 심하다.
    • 상호 배제 : 한 번에 여러 프로세스가 공유 자원을 사용할 수 있도록 함
    • 점유 대기 : 프로세스가 실행 되기 전 필요한 모든 자원을 할당하거나 자원이 점유되지 않은 상태에서만 자원을 요구하게 함
    • 비선점 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납, 대기하게 함.
    • 환형 대기 : 자원을 선형 순서로 번호를 분배함. 한 쪽 방향으로만 자원을 공유하게 함.
  • 발견 후 처리 (Detect and Recovery)
    • 교착 상태가 발생 했는 지 점검 후 회복시킨다.
    • 교착 상태 발견 알고리즘, 자원 할당 그래프 등을 사용한다.
    • 회복 기법은 교착 상태를 일으킨 프로세스를 종료 시키거나 교착 상태의 자원을 선점하여 해결하는 방법
      • 자원 선점 시 고려 사항
        • 희생자 선택 (selection of a victim) : 최소의 피해를 줄 프로세스 선택
        • 후퇴 (rollback) : 일반적으로 일시 중단 시키고 다시 복귀
        • 기아 상태 (starvation) : 한 프로세스가 계속 선점 대상이 되지 않도록 한다. (후퇴 횟수 포함하기)
  • 무시 (Do Nothing)

카테고리:

업데이트: