
1. CPU 스케줄링이란?
CPU 스케줄링은 운영 체제가 프로세스나 스레드에 CPU를 효율적으로 할당하는 과정을 의미합니다. 시스템의 성능과 효율성을 극대화하기 위해 CPU는 가능한 한 유휴 상태로 남지 않도록 설계되어야 합니다.
2. CPU 스케줄링의 필요성
- 다중 프로그래밍 지원: 하나의 CPU를 여러 프로세스가 사용해야 하는 환경에서 CPU 자원의 최적 분배가 필요합니다.
- 공정성: 모든 프로세스가 공정하게 CPU를 사용할 수 있도록 보장해야 합니다.
- 응답 시간 최소화: 사용자 요청에 대한 빠른 응답을 제공하기 위해 필요합니다.
- 시스템 성능 최적화: CPU 활용도를 극대화하고 문맥 전환 오버헤드를 줄여야 합니다.
3. CPU 스케줄링 기준
- CPU 사용률(CPU Utilization)
- CPU가 유휴 상태로 있는 시간을 최소화하여 최대한 활용되도록 보장.
- 처리량(Throughput)
- 단위 시간당 완료된 프로세스의 수를 최대화.
- 응답 시간(Response Time)
- 사용자 요청에 대해 첫 번째 응답이 이루어지기까지의 시간을 최소화.
- 대기 시간(Waiting Time)
- 프로세스가 준비 상태로 CPU를 기다리는 시간을 최소화.
- 턴어라운드 시간(Turnaround Time)
- 프로세스가 생성되어 완료되기까지의 전체 소요 시간.
4. CPU 스케줄링 알고리즘
4.1. 비선점 스케줄링(Non-Preemptive Scheduling)
- 프로세스가 CPU를 점유하면 실행이 완료될 때까지 강제로 중단되지 않음.
- 예시: FCFS, SJF
(1) FCFS (First-Come, First-Served)
- 프로세스가 도착한 순서대로 CPU를 할당.
- 장점: 구현이 간단함.
- 단점: 긴 프로세스가 먼저 실행되면 대기 시간이 증가하는 컨보이 효과 발생.
(2) SJF (Shortest Job First)
- 실행 시간이 가장 짧은 프로세스에 CPU를 할당.
- 장점: 평균 대기 시간이 최소화.
- 단점: 실행 시간을 예측하기 어려움.
4.2. 선점 스케줄링(Preemptive Scheduling)
- 프로세스가 실행 중이라도 우선순위가 높은 프로세스가 도착하면 CPU를 양보.
- 예시: SRTF, Round Robin, Priority Scheduling
(1) SRTF (Shortest Remaining Time First)
- 남은 실행 시간이 가장 짧은 프로세스에 CPU를 할당.
- 장점: 짧은 작업이 빠르게 처리됨.
- 단점: 긴 작업이 무한정 대기할 수 있음.
(2) Round Robin (RR)
- 프로세스가 일정 시간(Time Quantum) 동안만 CPU를 사용하고, 시간이 초과되면 대기열로 이동.
- 장점: 공정성 보장.
- 단점: Time Quantum 설정에 따라 성능이 크게 좌우됨.
(3) Priority Scheduling
- 프로세스의 우선순위에 따라 CPU를 할당.
- 장점: 중요한 작업을 먼저 처리 가능.
- 단점: 낮은 우선순위 프로세스가 무한 대기하는 기아 현상 발생 가능.
- 해결 방법: 에이징(Aging)을 통해 시간이 지날수록 우선순위를 높임.
5. 멀티코어 환경에서의 CPU 스케줄링
현대의 멀티코어 프로세서에서는 CPU 스케줄링이 더욱 복잡해집니다. 다중 스레드와 다중 프로세스를 효율적으로 분배하려면 다음과 같은 전략이 필요합니다.
5.1. 부하 분산(Load Balancing)
- 각 코어에 작업을 균등하게 분배하여 과부하를 방지.
5.2. NUMA(Node Uniform Memory Access) 최적화
- 프로세스가 자신에게 가까운 메모리 노드를 사용할 수 있도록 조정.
5.3. 스레드 간 협력(Thread Affinity)
- 특정 스레드가 특정 코어에서만 실행되도록 설정하여 캐시 효율성을 극대화.
6. CPU 스케줄링의 예시
- 운영 체제
- Windows: 선점 스케줄링 기반의 다단계 큐(Multi-Level Queue)를 사용.
- Linux: CFS(Completely Fair Scheduler) 기반으로 공정한 스케줄링 제공.
- 실시간 시스템
- 우선순위 기반 스케줄링 사용.
- 예: 임베디드 시스템, 항공기 제어 시스템.

'CS' 카테고리의 다른 글
멀티스레드(Multi-threading)란? (1) | 2025.03.11 |
---|---|
해시 테이블(Hash Table) 이란? (0) | 2025.01.23 |
프로세스(Process)와 스레드(Thread) (1) | 2025.01.21 |
Redis란? (고성능 인메모리 데이터 스토어) (0) | 2024.12.27 |
Blocking vs Non-Blocking (0) | 2024.12.26 |