PromleeBlog
sitemap
aboutMe

posting thumbnail
CPU 스케줄링이란? - 하루 10분 운영체제 5일차
What is CPU Scheduling? - 10 Minutes of OS Day 5

📅

🚀

들어가기 전에 🔗

컴퓨터는 여러 프로그램을 동시에 실행하는 것처럼 보이지만, 실제로는 CPU 하나가 빠르게 여러 작업을 번갈아가며 처리하고 있습니다. 이렇게 CPU의 사용 순서를 정해주는 것이 바로
CPU 스케줄링
입니다.
운영체제에서 CPU 스케줄링은 시스템 성능과 사용자 경험에 직접적인 영향을 주는 중요한 요소입니다. 특히 기술 면접에서는
스케줄링 알고리즘의 종류와 특징
을 자주 물어보므로 반드시 이해하고 있어야 합니다.

🚀

CPU 스케줄링이란? 🔗

CPU 스케줄링은 실행 대기 중인 여러 프로세스 중 어떤 프로세스에게 CPU를 먼저 줄지를 결정하는 과정을 말합니다. 이 과정은 운영체제 안의
CPU 스케줄러
가 담당합니다.
예를 들어, 3개의 앱이 동시에 실행 중일 때 어떤 앱에 CPU를 먼저 줄 것인지, 어느 정도 시간을 줄 것인지를 판단하는 것이죠.

🚀

스케줄링의 기준 🔗

CPU 스케줄링 알고리즘은 다음과 같은 기준에 따라 평가됩니다
상황에 따라 어떤 기준이 더 중요한지가 달라지기 때문에, 목적에 맞는 알고리즘을 선택하는 것이 중요합니다.

🚀

대표적인 스케줄링 알고리즘 🔗

스케줄링 알고리즘에는 다양한 방식이 있으며, 각각의 특징을 잘 이해하고 있어야 면접에서도 당황하지 않습니다.

FCFS (First-Come, First-Served) 🔗

가장 먼저 도착한 프로세스부터 처리하는 방식입니다. 간단하지만,
Convoy Effect(호위 효과)
로 인해 짧은 작업이 오래 대기할 수 있습니다.

SJF (Shortest Job First) 🔗

실행 시간이 짧은 작업부터 처리합니다. 평균 대기 시간이 짧지만, 실행 시간을 미리 알아야 한다는 단점이 있습니다.

Priority Scheduling 🔗

우선순위가 높은 작업부터 처리합니다.
Starvation(기아 현상)
이 생길 수 있어, 우선순위 보정이 필요합니다.

Round Robin (RR) 🔗

각 프로세스에 정해진 시간만큼 CPU를 나눠주는 방식입니다. 응답성이 좋아 사용자 인터페이스에 적합합니다.
프로세스 스케줄링 흐름도
프로세스 스케줄링 흐름도

🚀

스레드 스케줄링 🔗

프로세스뿐만 아니라 스레드 역시 스케줄링 대상입니다. 특히 하나의 프로세스 안에 여러 스레드가 있는 경우, 어떤 스레드에 CPU를 줄지 결정하는 것이 중요합니다.
운영체제는 사용자 스레드와 커널 스레드에 따라 다른 방식으로 스케줄링을 수행합니다. 예를 들어, Java의 스레드 실행 순서는 운영체제의 커널 스케줄러에 따라 결정됩니다.

🚀

다중 처리기 스케줄링 🔗

요즘 컴퓨터는 다중 코어 CPU를 사용하기 때문에, 운영체제는 여러 CPU에 작업을 고르게 분배해야 합니다. 이를
다중 처리기 스케줄링(Multiprocessor Scheduling)
이라 부릅니다.
전통적으로는 다음 두 가지 방식이 사용됩니다

차이점 비교 🔗

두 방식의 차이점은 다음과 같습니다
구분대칭형 스케줄링 (SMP)비대칭형 스케줄링 (AMP)
정의모든 CPU가 동등하게 작업을 처리하고 동일한 OS 스케줄러를 공유함하나의 CPU만 스케줄링을 담당하고 나머지는 할당된 작업만 수행함
스케줄링 방식각 CPU가 독립적으로 스케줄링 수행마스터 CPU가 모든 스케줄링 결정
병렬 처리병렬성 뛰어남 (멀티코어 최대 활용)병렬성 제한적 (마스터 CPU 병목 가능성)
확장성우수함제한적
복잡도구현 복잡 (동기화, 경쟁 조건 관리 필요)구현 간단
사용 예시현대 운영체제 대부분 (Linux, Windows 등)임베디드 시스템, 실시간 시스템 등
현대의 리눅스나 윈도우 운영체제는 SMP 구조를 기반으로 하며, 대부분의 범용 CPU 시스템도 SMP를 채택합니다.

🚀

실시간 CPU 스케줄링 🔗

실시간 시스템에서는 작업이
정해진 시간 안에 반드시 완료
되어야 합니다. 이를 위해 다음과 같은 실시간 스케줄링 알고리즘이 사용됩니다
이러한 방식은 주로 임베디드 시스템이나 미션 크리티컬한 환경(예: 항공 시스템)에서 사용됩니다.

🚀

운영체제 사례 🔗

운영체제마다 기본 스케줄링 알고리즘이 다릅니다
각 운영체제는 사용 환경에 맞는 최적의 방식을 적용하고 있습니다.

🚀

알고리즘 비교 및 평가 🔗

아래는 주요 알고리즘들의 비교입니다
알고리즘응답 속도평균 대기 시간공정성특징
FCFS느림길 수 있음낮음간단함
SJF빠름가장 짧음낮음실행 시간 예측 필요
Priority다양함불안정할 수 있음낮음우선순위 설정 필요
RR빠름평균적높음공정성 우수

🚀

요약 🔗

이번 글에서는 CPU 스케줄링의 기본 개념과 다양한 알고리즘, 그리고 운영체제 사례까지 폭넓게 알아보았습니다. 각 알고리즘은 저마다 장단점이 있으며, 면접에서도 자주 묻는 부분입니다.
특히 Round Robin과 SJF는 실전에서 직접 구현하는 문제가 나올 수 있으니, 흐름도를 그리고 직접 코드로 연습해보는 것도 추천드립니다.
다음 글에서는
동기화 도구
에 대해 알아보겠습니다.

참고 🔗