기아 상태(starvation 스타베이션[*])는 컴퓨터 과학 용어의 하나로, 프로세스가 끊임없이 필요한 컴퓨터 자원을 가져오지 못하는 상황으로, 이러한 자원 없이는 처리를 끝낼 수 없는 병행 컴퓨팅에서 마주치는 문제이다. 기아 상태는 스케줄링이나 상호 배제 알고리즘의 오류에 기인하지만 자원 누수에 의해 일어날 수도 있으며 포크 폭탄과 같은 서비스 거부 공격을 통해 고의적으로 발생할 수도 있다.

병행 알고리즘의 기아 상태의 불능을 무기아 상태(starvation-freedom), 락아웃 프리덤(lockout-freedom)[1], 유한한 우회 상태(finite bypass)[2]라고 한다. 여기서 "유한한 우회"란 공유 자원으로의 접근이 허가되기 전에 이 알고리즘의 어떠한 프로세스라도 유한한 횟수만큼 우회된다는 것을 뜻한다.[2]

스케줄링 편집

기아 상태는 과도하게 단순한 스케줄링 알고리즘에 의해 발생하는 것이 보통이다. 이를테면 (낮은 품질로 설계된) 멀티태스킹 시스템이 처음 두 태스크 간에 (세 번째는 실행하지 않고) 무조건 교환을 하는 경우 세 번째 태스크는 CPU 시간을 기아 상태로 만든다. 커널의 일부인 스케줄링 알고리즘은 자원을 균등하게 할당하도록 고안되었다. 즉, 이 알고리즘은 어떠한 프로세스도 영구적으로 필요 자원이 부족하지 않도록 자원을 할당하는 방식이다.

같이 보기 편집

각주 편집

  1. Herlihy, Maurice; Shavit, Nir (2012). 《The Art of Multiprocessor Programming》. Elsevier. 24쪽. ISBN 9780123977953. 
  2. Raynal, Michel (2012). 《Concurrent Programming: Algorithms, Principles, and Foundations》. Springer Science & Business Media. 10–11쪽. ISBN 3642320279.