0%

교착상태와 기아상태

교착상태와 기아상태

교착상태란?

  • 무한 대기 상태: 두개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에, 다음 단계로 진행하지 못하는 상태

1번차: a, b가 필요

2번차: b, c가 필요

3번차: c, d가 필요

4번차: a, d가 필요

image-20200221140245245

교착상태 발생 조건

  • 다음 네 가지 조건이 모두 성립될 때, 교착상태 발생 가능성이 있음
  1. 상호배제: 한 순간에 한 프로세스만이 자원을 사용할 수 있다.즉, 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수 없다.
  2. 점유대기: 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  3. 비선점: 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
  4. 순환대기: 각 프로세스는 순환적으로 다음프로세스가 요구하는 자원을 가지고 있다.

교착상태 해별방법

  1. 예방으로 교착상태의 발생 조건 1~4 중에 하나를 시스템에서 허용하지 않는 것이다.
  2. 회피로 현재 자원 할당의 상태에 따라 안전하게 자원 할당을 결정하는 것이다.
  3. 발견으로, 교착상태가 발생하면 그것을 발견하고 회복하는 것이다.

기아상태란?

  • 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태

기아상태 해결 방안

  • 우선순위 변경
    • 프로세스 우선순위를 수시로 변경해서, 각 프로레스가 높은 우선순위를 가질 기회주기
    • 오래 기다린 프로레스의 우선순위를 높여주기
    • 우선순위가 아닌, 요청 순서대로 처리하는 FIFO기반 요청큐 사용

교착상태와 기아상태

  • 교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
  • 기아상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우를 주로 의미함