운영체제의 핵심 기능 중 하나는 **CPU 스케줄링(CPU Scheduling)**입니다.
CPU 스케줄링은 여러 프로세스가 CPU를 효율적으로 사용하도록 관리하는 방식을 말합니다.
이번 글에서는
CPU가 어떤 프로세스에 먼저 CPU를 줄지 결정할 때 꼭 알아야 하는 개념인
- CPU 활용률(CPU Utilization)
- CPU Burst / I/O Burst
- I/O bound process
- CPU bound process
를 이미지와 함께 정리해보겠습니다.
1. CPU 활용률(CPU Utilization)
CPU 활용률 = 전체 CPU 시간 중 실제로 CPU가 일한 비율
운영체제는 가능한 한 CPU가 쉬지 않고 일하도록 유지하려고 합니다.
그래야 전체 시스템 성능이 좋아지기 때문이죠.
이를 위해 운영체제는 **입출력 작업이 많은 프로세스(I/O bound)**에게 빠르게 CPU를 잠시 주고,
입출력 장치를 기다리는 동안 CPU를 다른 프로세스에게 넘겨줍니다.
즉,
CPU가 빈 시간을 최대한 줄이는 방식으로 스케줄링하는 것이 핵심입니다.
2. CPU Burst & I/O Burst
프로세스는 계속 CPU만 쓰지 않습니다.
CPU → I/O → CPU → I/O … 이런 방식으로 반복합니다.
1️⃣ CPU Burst
프로세스가 CPU를 이용해 계산하는 시간
예: 수학 계산, 데이터 처리, 모델 계산 등
2️⃣ I/O Burst
입출력 장치를 기다리는 시간
예: 파일 읽기/쓰기, 네트워크 요청, 디스크 접근
3. I/O bound vs CPU bound 프로세스
프로세스는 성격에 따라 아래처럼 나뉩니다.
1️⃣ I/O bound process (입출력 집중 프로세스)
“짧은 CPU Burst + 긴 I/O 대기 시간”
- 디스크 백업, 영상 재생, 네트워크 통신 등
- CPU를 잠깐 사용한 후 오랫동안 I/O를 기다림
👉 CPU를 오래 붙잡지 않기 때문에 CPU를 자주 차지하지 않음
2️⃣ CPU bound process (CPU 집중 프로세스)
“긴 CPU Burst + 거의 없는 I/O 대기 시간”
- 대규모 수학 연산, 데이터 분석, 모델 트레이닝, 그래픽 렌더링 등
- CPU를 오래 사용하며 연산 중심
👉 한 번 CPU를 잡으면 꽤 오랫동안 계산함
4. 왜 I/O bound 프로세스를 먼저 실행시키는가?
운영체제는 CPU 활용률을 높이기 위해
I/O bound 프로세스를 최대한 빠르게 실행하려 합니다.
이유는 간단합니다:
1️⃣ I/O bound 프로세스는 CPU를 금방 놓기 때문이다
잠깐 CPU를 쓰고 바로 I/O 대기 상태로 넘어감
→ CPU는 다시 다음 프로세스를 실행할 수 있음
→ CPU가 쉬지 않고 계속 일함
2️⃣ 반대로 CPU bound 프로세스는 CPU를 오래 점유
CPU를 길게 쓰기 때문에
다른 프로세스가 CPU를 기다리는 시간이 많이 생길 수 있음
5. 운영체제의 스케줄링 전략
운영체제는 각 프로세스마다 우선순위를 부여하고,
프로세스 특성(I/O bound, CPU bound)에 따라 효율적으로 CPU를 배분합니다.
✔ 모든 프로세스가 CPU를 단순히 ‘차례대로’ 쓰는 것보다
✔ 상황에 맞춰 CPU를 잘 배분하는 것이 훨씬 효율적
6. 그림으로 보는 CPU Burst vs I/O Burst
아래 그림처럼

I/O bound 프로세스는 CPU를 잠깐만 사용하고 거의 I/O 대기 상태에 머무르고,
CPU bound 프로세스는 CPU Burst가 길게 이어지는 모습을 볼 수 있습니다.
이 차이 때문에
운영체제는 I/O bound 프로세스를 빠르게 처리하여
입출력 장치를 계속 동작시키고
CPU가 놀지 않도록 유지합니다.
정리하면
| 구분 | I/O bound process | CPU bound process |
| CPU 사용 시간 | 낮음 | 높음 |
| I/O 대기시간 | 높음 | 낮음 |
| 예시 | 디스크 백업, 스트리밍 | 연산, 그래픽, ML 훈련 |
| 스케줄링 우선순위 | 높음 | 상대적으로 낮음 |
| 이유 | CPU 활용률 낮음 | CPU를 오래 점유 |
CPU 스케줄링은 단순히 “누구 먼저 실행할까?” 문제가 아니라
전체 시스템 성능을 극대화하기 위한 전략적 판단입니다.
👉 CPU가 쉬지 않도록
👉 I/O bound 프로세스를 자주 실행해
👉 전체 시스템을 빠르고 효율적으로 만드는 구조죠.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 가상 메모리 - 외부 단편화 (0) | 2025.11.30 |
|---|---|
| [운영체제] 가상 메모리 - 물리 주소와 논리 주소 & 스와핑 (0) | 2025.11.30 |
| [운영체제] 동기화와 교착 상태 - 조건 변수와 모니터 (0) | 2025.11.29 |
| [운영체제] 동기화와 교착 상태 - 세마포 (0) | 2025.11.29 |
| [운영체제] 동기화와 교착 상태 - 동기화 기법 (0) | 2025.11.29 |