데드락

이규은·2021년 10월 18일
0

스레드

목록 보기
4/4

교착 상태(deadlook)이란 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과 적으로 아무것도 완료되지 못하는 상태를 가리킨다.

교착 상태의 조건

  1. 상호배제
    프로세스들이 필요로 하는 자원에 대해 베타적인 통제권을 요구한다.
  2. 점유대기
    프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  3. 비선점
    프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
  4. 순환대기
    각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

이 조건 중에서 한 가지 라도 만족하지 않으면 교착 상태는 발생하지 않는다.

교착 상태 관리

교착 상태 예방

  • 상호배제 조건의 제거
    상호 배제 조건을 제거하면 교착 상태를 해결할 수 있다.

  • 점유와 대기 조건의 제거
    프로세스가 수행되기 전에 모든 자원을 할당시키고 점유하지 않을 때에는 다른 프로세스가 자원을 요구하는 방법이다.

  • 비선점 조건의 제거
    비선점 프로세스에 대해 선점 가능한 프로토콜을 만든다.

  • 환형 대기 조건의 제거
    자원 유형에 따라 순서를 매긴다

교착 상태 회피

자원 할당 그래프 알고리즘과 은행원 알고리즘을 사용하여 교착 상태를 회피한다.

교착 상태 무시

예방 혹은 회피기법을 프로그래밍해서 넣으면 성능에 영향을 미칠 수 있다. 따라서 데드락 발생 확률이 낮은 경우 조치를 취하지 않는다.

교착 상태 발견

감시 발견을 하는 detection 알고리즘으로 교착 상태 발생을 체크 한다.

profile
안녕하세요

0개의 댓글