다섯 살도 알 수 있게 · 시스템SW
CPU 스케줄링이 뭐예요?
CPU 스케줄링을, 리프트 하나를 놓고 들어오는 차의 순서를 정비반장이 정해주는 이야기로 풀어봤어요.
이 정비공장이 곧 컴퓨터 시스템이에요.리프트(CPU)는 하나인데, 차(작업)는 계속 들어와요.
차 순서를 아무렇게나 정하면, 먼저 온 느린 차가 다른 차를 다 막아요.짧은 일도 긴 일 뒤에서 하염없이 기다려요.
CPU 스케줄링 = 반장이 순서판에 규칙을 적어 차 순서를 정하는 것이에요.어떤 규칙을 쓰느냐에 따라 누가 먼저 리프트에 오르는지가 달라져요.
FCFS온 순서 그대로, 제일 단순해요
SJF짧은 일부터 끝내요
Round Robin조금씩 돌아가며 나눠줘요
Priority급한 차가 새치기해요
FCFS는 단순하지만 긴 차가 뒤를 막고, SJF는 대기가 짧지만 긴 차가 밀려요.Round Robin 은 공평하지만 차를 바꿀 때마다 시간이 조금씩 들어요.
완벽한 순서 규칙은 없어요.공평함과 속도는 자주 부딪혀요.
한 줄로
CPU 스케줄링 = 하나뿐인 리프트(CPU)에 여러 차(작업)가 몰릴 때, 어떤 차를 먼저 올릴지 정하는 규칙.
운영체제는 프로세스에 CPU를 할당할 순서를 정하는데, FCFS(First-Come-First-Served)·SJF(Shortest Job First)·Round Robin(시분할)·Priority Scheduling 등이 대표적이에요. FCFS는 구현이 쉽지만 convoy effect(긴 작업이 뒤를 막음)가 생기고, SJF는 평균 대기시간은 최소화하지만 긴 작업이 starvation(기아) 될 수 있어요. Round Robin은 time quantum 단위로 공평하게 나누지만 context switch 비용이 들어요.
어른들은 이렇게 불러요
- FCFS
FCFS - 온 순서 그대로 태우는 규칙. 단순하지만 긴 차가 뒤를 막아요(convoy effect).
- SJF
SJF - 짧은 일을 먼저 끝내는 규칙. 평균 대기는 짧지만 긴 일은 기아 상태가 될 수 있어요.
- Round Robin
Round Robin - 조금씩 돌아가며 태우는 규칙. 공평하지만 차 바꿀 때마다 시간이 들어요(컨텍스트 스위치).
- 기아현상
Starvation - 순서판에서 계속 밀려나는 차. 자세한 원리는 교착상태 페이지에서 같이 다뤄요. → 서로의 열쇠를 기다리며 멈춘 정비공장
- 동기화
Synchronization - 리프트 열쇠를 나눠주는 규칙. 스케줄링이 '누가 먼저'라면, 이건 '동시에 건드리지 않기'예요. → 리프트 열쇠는 하나뿐
- 프로세스/스레드
Process/Thread - 차 한 대 vs 같은 차를 같이 고치는 손들. 스케줄링의 실제 단위는 스레드인 경우가 많아요. → 같은 차, 여러 손
- 복잡도(Big-O)
Time Complexity - 차가 늘어날 때 일이 얼마나 빨리 느는지 재는 자. 순서판을 매번 다시 정렬하는 비용도 이 자로 재요. → 차가 많아질 때 얼마나 느려질까
- 오케스트레이션
Orchestration - SRE 분야의 비슷한 '순서 정하기'. 더 높은 층위(서비스·컨테이너)에서도 비슷한 문제가 있어요. → SRE 분야의 오케스트레이션
다음 이야기
리프트 열쇠는 하나뿐 →