운영체제
CPU 스케줄링
뭉크테크
2025. 1. 13. 05:23
1. CPU 스케줄링 개요
- 스케줄링(Scheduling) 이란, 여러 프로세스(그리고 그 내부의 스레드)에게 CPU라는 한정된 자원을 어떻게 분배할지를 결정하는 일련의 정책과 메커니즘을 의미합니다.
- 흔히 식당 비유를 들면,
- “프로세스” = 식당에 온 “손님 한 그룹”
- “스레드” = 그 그룹에 속한 “개인”
- “OS” = 식당의 “매니저(혹은 종업원)”
- OS가 손님(프로세스/스레드)에게 CPU라는 자원을 적절히 나눠주는 과정을 스케줄링이라고 볼 수 있습니다.
2. 스케줄링의 세 가지 단계(레벨)
- 고수준(장기) 스케줄링 (Level 1)
- Job 스케줄링이라고도 함.
- 어떤 프로세스(또는 Job)가 시스템에 들어올 수 있는가, 그리고 얼마나 많은 프로세스(= 식당 정원)를 동시에 활성화할 것인지를 결정합니다.
- 시스템 전체 부하(CPU, 메모리 등)를 고려하여, 너무 많은 프로세스가 동시에 활성화되지 않도록 제어(→ 과부하 방지).
- 중간수준(중기) 스케줄링 (Level 2)
- 활성화된 프로세스 중, 일시적으로 메모리(또는 CPU)에서 빼놓고 대기(보류) 상태로 돌릴 프로세스를 관리합니다.
- 식당 비유에서 “대기줄을 서 있는 손님 관리” 정도로 볼 수 있습니다.
- 스왑(swap) 등을 통해 프로세스를 메모리 밖으로 빼거나 다시 들이는 과정을 담당하기도 합니다.
- 저수준(단기) 스케줄링 (Level 3)
- 실제 CPU 스케줄러로서, 준비(Ready) 상태에 있는 스레드 중 다음에 CPU를 사용할 스레드를 선택합니다.
- 흔히 문맥 전환(Context Switch) 과정에서 “누가 CPU를 차지할 것인가”를 결정하는 단계입니다.
- 식당 비유로 하면, “이미 자리에 앉아 있는 손님들(준비 상태 스레드) 중 누구부터 서빙(실행)할까?”를 정하는 과정입니다.
3. 스케줄링의 목적
- 공평성(Fairness)
- 모든 프로세스(또는 스레드)가 공정하게 CPU를 사용할 기회를 가져야 함.
- 효율성(Efficiency)
- CPU가 가능한 한 쉬지 않고(유휴 시간 최소화) 계속 사용되도록 하여 시스템 자원 활용도를 높임.
- 안정성(Stability)
- 시스템이 급격히 오버로드(과부하)되지 않도록 하며, 전체적으로 안정적으로 동작하게 하는 것.
- 확장성(Scalability)
- 프로세스나 스레드 수가 늘어나도, 스케줄러가 급격히 성능 저하를 일으키지 않아야 함.
- 반응 시간 보장(Response Time)
- 사용자가 체감하는 응답 시간을 적절히 유지(특히 인터랙티브 작업에서 중요).
- 무한 연기 방지(Deadlock/Starvation Freedom)
- 특정 프로세스가 무한정 CPU 할당을 못 받고 기다리기만 하는 상황(Starvation)을 막아야 함.
4. 스케줄링 방식: 선점(Preemptive) vs 비선점(Non-preemptive)
선점형 스케줄링(Preemptive)
- OS가 임의 시점에 CPU를 강제로 빼앗아 다른 프로세스(스레드)에게 넘길 수 있음.
- 예: 프로세스 A가 CPU를 쓰고 있는데, 타임 슬라이스가 끝나거나 우선순위 높은 프로세스가 준비 상태가 되면, OS가 A를 중단(suspend)시키고 다른 프로세스에게 CPU를 넘김.
- 장점: CPU 자원을 좀 더 공정하게 분배, 시스템 응답성 향상.
- 단점: 잦은 문맥 전환(Overhead), 구현이 복잡.
선점형 스케줄링 알고리즘
- Round Robin (RR)
- 개념: 각 프로세스에 동일한 시간 단위(TQ, Time Quantum)를 할당하여 순환적으로 실행.
- 장점: 모든 프로세스가 공평하게 CPU 시간을 할당받아 응답성 향상.
- 단점: 타임 퀀텀 설정에 따라 오버헤드 발생 가능.
- SRTF (Shortest Remaining Time First)
- 개념: 실행 시간이 가장 짧은 프로세스가 먼저 실행되며, 새로운 프로세스가 도착하면 남은 실행 시간이 짧으면 CPU를 선점.
- 장점: 평균 대기 시간이 최소화됨.
- 단점: 프로세스의 실행 시간을 정확히 예측하기 어려움. Starvation 발생 가능.
- Multilevel Queue (다단계 큐)
- 개념: 프로세스를 여러 큐로 분류하여 각 큐마다 다른 스케줄링 알고리즘을 적용.
- 장점: 다양한 유형의 프로세스에 맞는 스케줄링 가능.
- 단점: 큐 간의 프로세스 이동이 제한적일 수 있음. Starvation 발생 가능.
- Multilevel Feedback Queue (다단계 피드백 큐)
- 개념: 프로세스의 행동에 따라 여러 큐 사이를 동적으로 이동시키며 스케줄링.
- 장점: 프로세스의 동작에 유연하게 대응, Starvation 최소화.
- 단점: 구현이 복잡함.
비선점형 스케줄링(Non-preemptive)
- 한 프로세스(스레드)가 CPU를 잡으면, 해당 프로세스가 스스로 CPU를 반환하거나(작업 완료), 블로킹 상태가 되기 전까지는 OS가 임의로 CPU 점유권을 중단시키지 않
- 예: FCFS(First-Come First-Served), SJF(Shortest Job First, 비선점 버전) 등.
- 장점: 구현이 단순, 문맥 전환 적음.
- 단점: 특정 프로세스가 너무 오래 CPU를 독점하면 다른 프로세스가 기다려야 해서 응답 지연이 발생할 수 있음.
비선점형 스케줄링 알고리즘
- FCFS (First-Come, First-Served)
- 개념: 먼저 도착한 프로세스가 먼저 실행됨.
- 장점: 구현이 간단하고, 공정함.
- 단점: 긴 작업이 먼저 오면 짧은 작업들이 대기하게 되어 Convoy Effect 발생 가능.
- SJF (Shortest Job First) - 비선점형
- 개념: 실행 시간이 가장 짧은 프로세스가 먼저 실행됨.
- 장점: 평균 대기 시간이 최소화됨.
- 단점: 프로세스의 실행 시간을 정확히 예측하기 어려움. Starvation 발생 가능.
- Priority Scheduling - 비선점형
- 개념: 우선순위가 높은 프로세스가 먼저 실행됨.
- 장점: 중요한 작업을 우선 처리할 수 있음.
- 단점: 낮은 우선순위의 프로세스는 오랫동안 대기할 수 있음 (Starvation).
5. 우선순위(Priority) 스케줄링
- 프로세스/스레드별 우선순위를 두어, 우선순위가 높은 작업에게 CPU를 더 자주/오래 배정하는 방식.
- 우선순위를 다단계로 표현하기도 하며, 예: “매우 낮음 < 약간 낮음 < 보통 < 약간 높음 < 매우 높음”
- 예시 시나리오
- GUI(전면) 작업: 사용자가 즉각적 반응을 기대하므로 우선순위를 높게 설정 (영상 재생, 게임 등)
- 백그라운드 작업: 사용자 체감이 낮으므로 우선순위를 낮추거나 CPU 점유를 늦게 가져가도 무방 (압축, 백업, 바이러스 검사 등)
- 서버 환경에서는 오히려 “백그라운드(서비스) 작업”이 매우 중요해, 그 우선순위를 높게 두는 경우도 있음.
- 실제로 Windows나 Linux 커널에서는 커널 스레드(I/O 처리 등)가 일반 프로세스보다 더 높은 우선순위를 가집니다.
- 예를 들어 IOCP(Windows의 비동기 I/O)는 커널 레벨 I/O를 효율적으로 처리하기 때문에 빠른 응답이 가능하다는 언급이 있습니다.
출처
곰책으로 쉽게 배우는 최소한의 운영체제론 강의 | 널널한 개발자 - 인프런
널널한 개발자 | '넓고 얕게 외워서 컴공 전공자 되기' 강의를 끝낸 분들이 운영체제에 대해 좀 더 깊이 있는 공부를 할 수 있도록 제공되는 강의입니다., 운영체제도 널널한 개발자와 함께! 👨
www.inflearn.com