교착 상태(Dead lock)

GwanMtCat·2023년 9월 19일
0

2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며, 작업을 더 이상 진행하지 못하는 상태
여러 프로세스가 작업하다보니 자연히 일어난다.

시스템 자원, 공유 변수, 응용 프로그램 등을 사용할 때 발생할 수 있다.


교착 상태의 필요조건

교착 상태는 다음의 조건을 모두 충족해야 발생한다.

  • 상호 배제
    한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이다. 자원이 임계구역이므로 보호되어 다른 프로세스가 동시 접근이 불가능하다.

  • 자원 비선점
    한 프로세스가 사용 중인 자원은 다른 프로세스에서 빼았을 수 없다.

  • 점유와 대기
    프로세스가 어떤 자원을 할당 받은 상태에서 다른 자원을 기다리고 있는 상태이다.

  • 원형 대기
    점유와 대기를 하는 프로세스 간의 관계가 원을 이루어 프로세스들이 서로 양보하지 않는다.


교착 상태의 해결 방법

  • 예방
    4가지 조건을 무력화하는 방법으로 이 중 하나라도 막는 것이다. 어떤 것이든 크게 실효성이 없다.

  • 회피
    자원 할당량을 조절하여, 교착 상태를 해결하는 방식이다.
    자원을 할당하다가 교착 상태가 발생한다고 판단되면 자원 할당을 중단하고 지켜보는 것이다.
    그러나 얼마만큼 할당해야 교착 상태가 발생하지 않는다는 보장이 없어 실효성이 없다.

  • 검출, 회복
    검출은 타임아웃, 자원 할당 그래프를 모니터링하면서 교착 상태가 발생하는지 살펴보는 방식
    회복은 교착 상태가 발생하면 진행된다.
    가장 현실적인 접근 방법이다.


0개의 댓글