컴퓨터 과학

[운영체제] CPU 스케줄링 - CPU 활용률

Data Jun 2025. 11. 30. 08:24

운영체제의 핵심 기능 중 하나는 **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 프로세스를 자주 실행해
👉 전체 시스템을 빠르고 효율적으로 만드는 구조죠.