1 minute read

교착상태 (Deadlock)

  • 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 기다릴 때 발생
  • 제한된 자원 이용률을 높이고 시스템 효율성을 증가시키기 위해 사용하는 병행 처리 기술과 자원 공유에 따른 부작용

해결 기법

  • 시스템이 교착상태가 되지 않도록 예방(방지) 하는 것
  • 가능한 교착상태를 회피 하는 것
  • 교착상태를 허용하되 교착상태에서 다시 회복 할 수 있게 하는 것

교착상태의 필요충분조건

  • 교착상태 발생의 네 가지 필요 조건이 시스템 내에서 동시에 충족되어야 함
    • 상호배제
    • 점유 및 대기
    • 비선점
    • 순환대기

예방 기법

  • 필요충분조건 중 최소 하나만이라도 발생하지 않도록 함
    • 점유 및 대기: 프로세스의 실행에 앞서 필요한 자원을 모두 확보
    • 비선점: 프로세스가 일부 자원을 점유하고 있으면서 다른 자원 요청 시, 즉시 할당할 수 없으면 프로세스가 현재 점유하고 있는 모든 자원을 해제한 후 대기
    • 순환대기: 모든 자원 형태에 선형으로 순서를 부여하며, 각 프로세스는 오름차순으로만 자원을 요청할 수 있음

회피 기법

  • 예방 알고리즘보다 덜 엄격
  • 교착상태를 안정상태와 불안정상태로 구분하여 회피할 수 있음
  • 교착상태 탐지 알고리즘을 호출

은행가 알고리즘 (Banker’s Algorithm)

  • 교착상태를 회피하기 위한 방법
  • 각 프로세스에 자원을 어떻게 할당할 것인가라는 정보가 필요하므로, 각 프로세스가 요청하는 자원 종류의 최대수를 알아야 함

회복기법

  • 순환대기를 탈피하는 방법
  • 프로세스를 한 개 이상 중지시키거나 교착상태에 있는 프로세스들의 자원을 선점하는 방법

기아상태

  • 프로세스가 자신의 작업을 완료하지 못한 상태
    • 교착상태를 예방하기 위해 자원을 할당할 때 발생(기다림)되는 결과
    • 무기한 연기, 무기한 블록킹
  • 작업이 결코 사용할 수 없고 계속 기다려야 하는 자원을 할당할 때 발생되는 결과

Comments