본문 바로가기
Computer Science/운영체제

[운영체제] 교착상태 (Deadlock)

by Sky Titan 2020. 9. 23.
728x90

교착상태 (Deadlock)

  • 한 집합 내의 프로세스들이 각자 다른 프로세스에서 발생할 이벤트들을 기다리고 있어서 자원의 요구가 뒤엉킨 상황이다.
  • 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 기다릴 때 교착상태가 발생한다.

 

교착상태 발생 조건

조건 설명
상호배제 (Mutual Exclusion) 한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다.
점유대기 (Hold and Wait) 다른 프로세스에 할당된 자원을 얻기 위해 기다리는 최소 자원 하나를 보유한 프로세스가 존재해야 한다.
비선점 (Non-preemptive) 다른 프로세스가 점유하고 있는 자원을 강제로 뺏을 수 없다.
순환대기 (Circular Wait) P(n-1) 프로세스가 P(n) 프로세스가 보유하고 있는 자원을 얻기 위해 기다리고 있는 경우를 말한다.

 

 

교착상태 해결 기법

1. 교착상태 예방 (Prevention)

  • 교착상태 발생 4가지 조건 중 하나를 제거하여 해결한다.
  • 단점 : 장치의 효율성을 낮추고 시스템 처리량을 감소시킨다.

 

2. 교착상태 회피 (Avoidance)

  • 교착상태가 일어나려고 하면 적절히 피해간다.
  • '예방'보다 자원을 좀 더 효율적으로 이용하는 것을 목표로 한다.
은행원 알고리즘 (Banker's Algorithm)
: 프로세스가 자원을 요구할 때, 자원을 할당한 뒤에도 교착상태가 일어나지 않는지를 예측하여 회피한다.

 

3. 교착상태 탐지 (Detection)

  • 교착상태가 발생했는지를 파악하기 위해 탐지 알고리즘을 사용하여 시스템 상태를 검사한다.

 

4. 교착상태 회복 (Recovery)

  • 교착상태를 일으킨 프로세스를 중지시키거나 자원을 선점하여 순환대기에서 탈피한다.

 

728x90

댓글