CPU 스케줄링 (CPU Scheduling)

컴퓨터과학·AI
한 줄 정의: 여러 프로세스가 하나의 CPU를 나눠 쓸 때, 다음에 어떤 프로세스에게 처리 시간을 줄지 운영체제가 정하는 규칙입니다.

쉽게 풀면

병원 응급실을 떠올려 보세요. 의사(CPU)는 한 명인데 환자(프로세스)는 여러 명 대기하고 있습니다. 접수한 순서대로만 진료하면 가벼운 감기 환자가 위급한 환자보다 먼저 밀려 처리될 수도 있습니다. 그래서 응급실은 "누구를 먼저 볼지" 정하는 규칙(중증도 순, 대기시간 순 등)을 둡니다. CPU 스케줄링도 똑같습니다. 컴퓨터 안에서 동시에 실행되려는 여러 프로세스 중 "다음엔 누구에게 CPU를 넘길지"를 정하는 규칙이 필요한데, 순서대로 처리하는 방식(FCFS), 짧은 작업부터 먼저 끝내는 방식(SJF), 정해진 시간만큼씩 돌아가며 나눠주는 방식(라운드 로빈) 등 다양한 전략이 있습니다.

왜 중요한가

CPU 스케줄링 정책은 시스템의 응답성, 처리량, 공정성을 동시에 좌우하기 때문에 운영체제, 실시간 시스템, 클라우드 자원관리 등 다양한 컴퓨터과학 논문에서 성능 개선의 핵심 대상으로 다뤄집니다. 특히 멀티코어 환경이나 데이터센터처럼 자원 경합이 큰 상황에서는 스케줄링 알고리즘의 미세한 차이가 전체 시스템 성능에 큰 영향을 미치기 때문에, 새로운 워크로드에 맞춘 스케줄링 기법 제안이 꾸준히 연구됩니다.

논문에서는 이렇게 쓰입니다

"본 실험에서는 라운드 로빈(round robin) CPU 스케줄링 정책을 적용하여 각 프로세스에 동일한 타임 슬라이스를 할당함으로써 응답 시간의 형평성을 확보하였다."

이 문장은 "실험 환경에서 모든 프로세스가 순서대로 돌아가며 똑같은 시간만큼 CPU를 배정받도록 설정해, 특정 프로세스만 계속 뒤로 밀리지 않게 했다"는 뜻입니다.

"실시간 시스템에서는 마감시한이 임박한 작업에 우선순위를 부여하는 최단 마감시한 우선(EDF) 스케줄링을 적용하여 마감시한 위반율을 크게 낮추었다."

일반 범용 운영체제와 달리, 실시간 시스템 연구에서는 마감시한 준수를 최우선 목표로 하는 스케줄링 정책이 별도로 다뤄진다는 것을 보여주는 예문입니다.

조금 더 깊게 보면

스케줄링 알고리즘을 평가할 때는 평균 대기시간, 응답시간, 처리율, 기아 상태(starvation) 발생 여부 등 여러 지표를 함께 살펴보는 것이 일반적이며, 하나의 지표를 개선하면 다른 지표가 악화되는 상충관계가 흔히 나타납니다. 실제 운영체제는 우선순위와 타임 슬라이스를 상황에 따라 동적으로 조정하는 다단계 피드백 큐(multilevel feedback queue)와 같은 복합적인 방식을 사용하는 경우가 많습니다.

주의할 점

스케줄링 방식은 "무엇을 최적화할 것인가"에 따라 결과가 달라집니다. 평균 대기시간을 줄이는 데 유리한 방식이 반드시 응답성이나 공정성에서도 유리한 것은 아닙니다. 또한 CPU 스케줄링은 여러 프로세스가 경쟁 상태교착 상태에 빠지지 않도록 막아주는 것이 아니라, 단지 "누가 언제 CPU를 쓸지"만 결정한다는 점도 구분해서 이해해야 합니다.

관련 용어