CS

[OS] 교착상태와 기아상태란? 해결방법

KJihun 2023. 10. 6. 18:22
728x90

Dead Lock(교착상태)

다중 프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태

 

아래 조건 중 하나라도 미충족 시 교착상태가 발생하지 않음

  • 상호 배제(Mutual Exclusion) : 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 한다
  • 점유와 대기(Hold and Wait) : 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것
  • 비선점(Non-Preemption) : 다른 프로세스에 할당된 자원은 강제로 뺏을 수 없어야 한다
  • 환형 대기(Circular Wait) : 원형 구조로 구성되어 있어 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다

 

교착상태 해결방법

  • 예방 기법(Prevention) : 사전에 교착상태 발생의 네가지 조건 중 하나를 부정함으로써 수행
  • 회피 기법(Avoidance) : 일반적으로 은행원 알고리즘 사용하여 구현
  • 발견 기법(Detection) : 교착상태가 발생했는지 점검하여 교착상태가 발생한 자원을 발견하는 것
  • 회복 기법(Recovery): 교착상태가 발생 시 해결하는 방법

 

 

기아상태(Starvation)

프로세스가 원하는 자원을 할당받지 못하여 계속해서 대기하는 상태.

다른 프로세스들이 우선적으로 자원을 할당받아 작업을 수행하는 경우 발생할 수 있다.

기아상태가 발생하는 상황


1. 무한 대기: 한 프로세스가 자원을 요청했지만 계속해서 해당 자원을 할당받지 못하여 무한히 대기하는 경우

2. 우선순위 역전: 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스가 사용 중인 자원을 기다리는 경우

3. 자원 고갈: 특정 자원이 지속적으로 다른 프로세스에 의해 점유되어 해당 자원을 사용하려는 프로세스가 계속해서 대기하는 경우

 


프로세스 스케줄링 및 자원 할당 알고리즘을 효과적으로 관리하여 기아상태를 예방하거나 최소화하는 것이 중요하다.