따봉도치야 고마워

교착상태(DeadLock)란? 본문

프로그래밍/공부

교착상태(DeadLock)란?

따봉도치 2020. 2. 26. 15:47

교착상태(DeadLock)란?

*상호 배제에 의해 나타는 문제점. 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

 

상호 배제(mutual exclusion) : 여러 프로세스가 공유자원을 동시에 사용하지 못하도록 사용하는 알고리즘

 

교착상태 발생의 조건

  1. 상호 배제(Mutual Exclusion) : 한 자원을 여러 프로세스가 동시 접근 불가
  2. 점유와 대기(Hold and Wait) : 자원을 가진 상태에서 다른 프로세스가 사용 중인 자원의 반납을 기다리는 것
  3. 비선점(Non Preemptive) : 다른 프로세스의 자원을 강제로 가져올 수 없음
  4. 환형 대기(Circle Wait) : 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있는 것

 

교착상태 해결 방법

1) 예방(Prevention) : 위 4가지 발생 조건 중 하나를 제거함

- 가장 자원 낭비가 심함

  • 상호 배제 부정 : 한 번에 여러 개의 프로세스가 공유 자원 사용할 수 있도록
  • 점유 및 대기 부정 : 프로세스가 실행되기 전 필요한 모든 자원 할당해 대기를 없애거나 자원이 점유되지 않은 상태에서만 요구하도록 함
  • 비선점 부정 : 자원 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유한 자원을 반남하고 기다리게 함
  • 환형 대기 부정 : 자원을 순서대로 분류해 고유번호 할당, 각 프로세스는 현재 점유한 자원의 번호보다 앞/뒤 한 방향으로만 요구할 수 있도록

2) 회피(Avoidance) : 발생조건을 없애기보단 발생하지 않도록 알고리즘을 적용

- 은행원 알고리즘 (추후 포스팅 추가)

 

3) 탐지(Detection) : 교착상태가 발생하는 것을 막지 않고, 발생 이후 문제 해결

- 자원할당 그래프 (추후 포스팅 추가)

 

4) 회복(Recovery) : 교착상태 발견 후,  해당 프로세스를 종료시키거나, 할당된 자원을 선점해 회복

 

 

+ 내가 회사에서 실제로 경험했던건 환형 대기 부정방법인 것 같다 > 자원 사용에 순서를 매겨 사용했었음

 

Comments