Starvation (기아 상태) 란?

woga·2020년 11월 18일
1

운영체제

목록 보기
7/10

Starvation 이란?

특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태, 기아 상태라고도 불린다.

50개의 Task가 있고 50개 중 49개는 1번 우선 순위를 갖고 나머지 1개는 2번 우선 순위를 갖는다고 가정하자. 또한, 해당 프로그램은 10번의 실행 과정을 거치면 종료된다.
이때, 2번의 우선순위를 갖는 작업은 자원을 할당받을 수 없다. 자원을 할당 받더라도 우선 순위가 높은 자원에게 자원 할당을 뺏기기 때문이다.

Starvation과 Deadlock

Deadlock은 프로세스가 자원을 얻지 못해 다음 처리를 못하는 상태,
Starvation은 프로세스가 원하는 자원을 계속 할당받지 못하는 상태를 말한다.

주로 Deadlock은 여러 프로세스가 동일 자원 점유를 요청할 때 발생하고 Starvation은 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때 특정 프로세스는 영원히 자원 할당이 안되는 경우를 말한다.

Starvation이 발생하는 스케줄링

SJF(Shortest - Job - First) : 이 스케줄링은 극단적으로 CPU 사용이 짧은 job을 선호하기 때문에 사용 시간이 긴 프로세스는 거의 영원히 CPU를 할당 받을 수 없다.

SRT(Shortest Remaining time First) : 새로운 프로세스가 도달할 때마다 남은 burst time보다 더 짧은 CPU burst time이 있다면 선점하기 때문에 긴 burst time을 가진 프로세스는 영원히 할당 받을 수 없다.

우선순위 스케줄링 : 우선 순위가 낮다면 할당받기 어려워 기아 상태가 발생할 수 있다.

SPN, feed back 에서도 우선 순위와 관련 있는 Starvation이 발생할 수 있다.

해결책

우선순위 변경

  • 프로세스 우선 순위를 수시로 변경해서 각 프로세스가 높은 우선 순위를 가질 기회를 준다.
  • 오래 기다린 프로세스의 우선 순위를 높여준다. (aging 기법)
  • 우선 순위가 아닌 요청 순서대로 처리하는 FIFO 기반 요청 큐를 사용한다.
profile
와니와니와니와니 당근당근

0개의 댓글