개발놀이터

면접 준비 : 교착상태와 기아상태 본문

CS 지식/면접준비

면접 준비 : 교착상태와 기아상태

마늘냄새폴폴 2023. 4. 24. 19:38

Q. 교착상태와 기아상태에 대해서 설명하고 해결방안에 대해서 설명해주세요. 
A. 교착상태는 서로 다른 프로세스가 서로 점유하고 있는 자원의 반납을 대기하고 있는 상태를 말합니다. 교착상태가 발생하기 위해서는 한번에 한 프로세스만 자원을 사용할 수 있는 상호 배제, 할당된 자원을 가진 상태에서 다른 자원을 기다리는 점유 대기, 다른 프로세스가 자원의 사용을 끝날 때 까지 자원을 뺏을 수 없는 비선점, 각 프로세스가 순환적으로 다음 프로세스를 요구하는 자원을 가지고 있는 상태인 순환 대기가 모두 만족하는 경우 발생합니다. 이를 해결하기 위해서는 앞선 네가지 조건 중 하나라도 만족하지 않도록 설계하거나, 알고리즘을 통해 교착상태가 발생하지 않도록 하는 방법을 사용하거나, 교착상태를 감지하고 회복하거나, 시스템이 교착상태가 극히 드물게 발생한다면 무시하는 방법도 있습니다. 기아 상태는 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스가 영원히 자원 할당이 되지 않는 경우를 말합니다. 기아 상태를 해결하기 위해서는 우선순위를 변경하거나, 오래 기다린 프로세스의 우선순위를 높여주거나, PriorityQueue와 같은 스케쥴링 알고리즘을 사용하는 방법이 있습니다.