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

2017. 3. 5. 20:079급 공무원/컴퓨터 일반

A는 B의 자원을

B는 A의 자원을 요구하며

서로 안내놓고 있음

서로 머리끄댕이 잡고 너 먼저 놔라 하고 있는 상황


# 발생 조건 : 이하 네 가지 상황이 동시 발생하면 교착상태임(하나라도 만족하지 않으면 발생하지 않음)

 * 상호배제(Mutual exclusion) : 점유된 자원은 다른 프로세스가 사용할 수 없다.

 * 점유와 대기(Hold & wait) : 하나 이상의 자원을 점유한 채로, 다른 프로세스가 점유한 자원을 요청하며 대기한다

 * 비선점(Non preemption) : 프로세스가 점유한 자원을 강탈할 수 없다.

 * 순환대기(환형대기, Circular wait) : 프로세스간에 닫힌 체인이 존재하여 각 프로세스는 체인 내의 다른 프로세스에 의해 소유되어 있는 자원을 요청하며 대기하고 있다.


# 해결 방안

 · 발견(탐지, Detection)

 · 회복(복구, Recovery)

 · 예방(방지, Prevention) - 점유와 대기 부정, 비선점 부정, 환형대기 부정 (상호배제는 부정할 수 없음)

 · 회피(Avoidance) - 은행가 알고리즘


# 교착상태 회복

 · 프로세스 제거

 · 자원 선점

 · 복귀


# 교착상태 예방

 · 환형대기 부정 - 고유번호 할당, 큰 번호로만 자원 요구하도록 함

  > 프로그램 작성의 어려움, 자원 낭비

 · 점유와 대기 부정 - 모든 자원을 할당 한 후 프로세스 실행

  > 공유자원 낭비, 기아상태 발생 시킬 수 있음

 · 비선점 부정 - 자원 요구시 점유한 자원 반납하도록 하거나, 공유자원을 강제로 빼앗아 옴

  > 처리비용 증가(기존 작업 무효, 요청 반납이 무한정 반복될 수 있음)