Computer Science/운영체제

교착상태와 기아상태

eunnnn 2023. 3. 18. 07:15

교착 상태(Deadlock)이란 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있어, 상대방의 작업이 끝나기만을 기다리고 있기 때문에 다음 단계로 진행하지 못하는 상태를 의미한다.

 

교착 상태의 발생 조건

  • 상호배제(Mutual exclusion) :  한 번에 한 프로세스만 해당 자원을 사용할 수 있어야 한다.
  • 점유대기(Hold and wait) : 최소 하나의 자원을 점유하고 있으면서 다른 프로세스가 사용중인 자원을 추가로 점유하기 위해 대기하는 프로세스가 존재한다.
  • 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
  • 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

위의 한 조건이라도 성립하지 않으면 교착 상태는 발생하지 않는다.
 

교착 상태의 예방 및 회피

예방 : 교착상태의 발생 조건 중 하나를 제거하면서 예방.

  • 상호 배제 부정 : 여러 프로세스가 공유 자원 사용
  • 점유 대기 부정 : 프로세스 실행 전 모든 자원 할당
  • 비선점 부정 : 점유중인 자원을 다른 프로세스가 요구하는 경우 그를 반납
  • 순환 대기 부정 : 자원에 고유 번호를 할당한 후 순서대로 자원 요구

회피 : 은행원 알고리즘
프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 미리 검사하여 교착 상태를 회피한다. 안정 상태인 경우만 자원을 할당하고 그렇지 않은 경우 다른 프로세스들의 자원 해지시 까지 대기한다.
 
회복 - 탐지 : 교착 상태 발생을 허용하되, 교착 상태를 알아내고 교착 상태로부터 벗어나 회복할 수 있게 한다.

  • 교착상태를 일으킨 프로세스를 종료 (모두 중지하거나, 교착 상태가 제거될 때까지 하나씩 중지하거나)
  • 교착상태의 프로세스가 점유하고 있는 자원을 선점해 다른 프로세스에게 할당 (우선 순위나 수행 횟수 고려)

기아 상태 (Starvation)

기아 상태란 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스가 우선순위가 낮아 영원히 자원 할당이 되지 않는 상태를 말한다.
 
이러한 문제는 우선순위를 변경하는 방법으로 해결할 수 있다.

  • 프로세스 우선순위 수시 변경을 통해 각 프로세스 높은 우선순위를 가지도록 기회 부여
  • 오래 기다린 프로세스의 우선순위 높이기
  • 우선순위가 아닌 요청 순서대로 처리하는 요청큐 사용

교착 상태 vs 기아 상태

  • 교착상태 : 여러 프로세스가 동일 자원 점유를 요청할 때 발생
  • 기아상태 : 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 발생

 
 
출처

더보기