CPU 스케줄링에 대해서 설명해주세요.

CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 의미합니다. 만약 CPU 스케줄링이 없다면, 반드시 실행되어야 할 프로세스들이 실행되지 못할 수 있으며, 당장 급하지 않은 프로세스가 실행되는 등 무질서한 상태가 발생할 수 있습니다. CPU 스케줄링은 선점형과 비선점형 방식으로 구현할 수 있으며, 다양한 스케줄링 알고리즘이 존재합니다.

선점형 스케줄링과 비선점형은 각각 어떤 특징이 존재하나요?

알고 계신 CPU 스케줄링 알고리즘에 대해서 간략하게 설명해 주세요.

우선 순위가 존재하는 스케줄링은 기아 현상이 발생할 텐데, 어떻게 해결할 수 있나요?

최단 작업 우선(SJF), 최소 잔여 시간(SRT)이나 다단계 큐 스케줄링은 일종의 우선 순위 스케줄링이며, 말씀 주신 기아 현상이 발생할 수 있습니다. 기아 현상을 방지하기 위해서는 대표적으로 에이징 기법이 존재합니다. 에이징(Aging) 이란 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식입니다.

예를 들어, 다단계 큐 스케줄링의 기아 현상 문제를 해결하기 위해서 에이징 기법이 적용된 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling) 방식이 존재하는데요. 해당 방식은 새로 준비 상태가 된 프로세스가 있다면, 우선순위가 가장 높은 우선순위 큐에 삽입되고 타임 슬라이스 동안 실행됩니다. 만약, 해당 큐에서 실행이 끝나지 않는다면 프로세스는 다음 우선순위 큐에 삽입됩니다.(결국 CPU를 오래 사용해야 하는 프로세스는 점차 우선순위가 낮아집니다.) 만약 우선순위가 낮은 큐에서 너무 오래 기다리고 있는 프로세스가 있다면 점차 우선순위가 높은 큐로 이동시키는 에이징 기법을 적용해 기아 현상을 예방합니다.

CSLOG에서 보기