운영체제의 핵심 역할 중 하나는 바로 CPU 자원을 어떻게 나눠 쓸지 결정하는 것입니다. 이 작업을 우리는 **CPU 스케줄링(CPU Scheduling)**이라고 부르며, 성능과 효율, 사용자 경험에 모두 큰 영향을 줍니다.
본 내용은 <혼자 공부하는 컴퓨터 구조 + 운영체제>를 바탕으로 만들어졌습니다.
✅ CPU 스케줄링이란?
운영체제는 여러 개의 프로세스가 동시에 실행되기를 원할 때, 누구에게 CPU를 먼저 줄지, 누구는 기다리게 할지를 결정해야 합니다.
💡 이처럼 CPU 자원을 공정하고 효율적으로 배분하는 과정을 "CPU 스케줄링"이라고 합니다.
만약 이 과정을 제대로 하지 못하면,
- 꼭 실행되어야 할 프로세스가 무시되거나,
- 덜 중요한 작업만 반복적으로 실행되어
- 시스템이 무질서하고 비효율적인 상태가 될 수 있어요.
🧠 프로세스마다 우선순위가 다르다?
“CPU 써볼게요!” 하고 요청한 순서대로 줄을 서게 하면 공정할 것 같지만, 현실은 그렇게 단순하지 않습니다.
왜냐하면...
프로세스마다 "급함의 정도"가 다르기 때문입니다.
🔸 예시: 입출력 작업이 많은 프로세스
- 입출력(I/O)을 많이 사용하는 프로세스는 자주 대기 상태로 들어가기 때문에, 빠르게 실행시키는 게 전체 시스템에 더 이롭습니다.
이처럼, 작업에 따라 아래처럼 구분할 수 있어요:
구분 | 설명 | 예시 |
I/O 집중 프로세스 | 입출력을 오래 기다리는 경우가 많음 | 디스크 백업, 영상 재생 등 |
CPU 집중 프로세스 | 계산/연산을 주로 수행 | 수학 연산, 컴파일 등 |
🌀 CPU 버스트 & I/O 버스트
프로세스는 실행되는 동안 아래처럼 반복됩니다.
CPU 버스트 ↔ I/O 버스트 ↔ CPU 버스트 ↔ ...
- CPU 버스트: CPU가 연산을 수행하는 시간
- I/O 버스트: 입출력 장치 사용을 기다리는 시간
🔍 그래서 효율적인 방법은?
CPU 집중 프로세스보다 입출력 집중 프로세스를 먼저 실행해서 I/O를 일찍 시작하게 하면, 그 사이 CPU는 다른 작업을 수행할 수 있어요!
📌 “모두 차례로” 보다는 “각 상황에 맞게 배분”하는 것이 훨씬 효율적입니다.
🏷️ 프로세스 우선순위 (Priority)
운영체제는 프로세스마다 우선순위를 부여해서 상황에 맞는 실행 순서를 정합니다.
- 이 우선순위는 각 프로세스의 PCB(Process Control Block) 안에 기록됩니다.
- 이를 바탕으로 운영체제는 어떤 프로세스를 먼저 실행할지 판단합니다.
🔍 우선순위 확인하는 법 (유닉스 계열 기준)
- ps -ei : 프로세스 목록과 우선순위 확인
- nice, renice : 우선순위 조절
📋 스케줄링 큐 (Scheduling Queue)
모든 프로세스의 PCB를 일일이 검사하면서 순서를 정한다면 너무 느리겠죠?
그래서 운영체제는 ‘줄 세우기’를 합니다.
🪜 CPU, 메모리, 입출력 장치 등 모든 자원은 큐(queue) 로 관리됩니다.

📌 대표적인 스케줄링 큐 종류
준비 큐(Ready Queue) | CPU를 사용하길 기다리는 프로세스들이 서 있는 줄 |
대기 큐(Waiting Queue) | I/O 장치 사용을 기다리는 프로세스들이 서 있는 줄 |
- 우선순위가 높은 프로세스는 중간에 줄을 새치기할 수 있습니다.
마치 VIP처럼요!

🔄 입출력 완료 시 동작
- I/O 작업 완료 → 인터럽트 발생
- 운영체제는 해당 프로세스를 준비 큐로 이동시켜 다시 CPU를 사용할 준비를 시킵니다.

🔁 선점형 vs 비선점형 스케줄링
“지금 CPU 쓰는 프로세스가 있는데, 더 급한 애가 나타났다?”
이럴 때는 두 가지 방식이 있어요.
1. 🟦 선점형 스케줄링 (Preemptive Scheduling)
- 운영체제가 CPU를 강제로 빼앗아 더 중요한 프로세스에 할당
- **시간 할당량(Time Quantum)**이 끝나면 타이머 인터럽트로 CPU를 회수
✔️ 장점
: 자원 독점 방지, 빠른 반응
❌ 단점
: 문맥 교환(context switch) 때문에 오버헤드 발생
2. 🟨 비선점형 스케줄링 (Non-Preemptive Scheduling)
- 한 번 CPU를 얻은 프로세스는 스스로 종료하거나 대기 상태가 되기 전까지 계속 사용
✔️ 장점
: 문맥 교환 횟수 적음 → 오버헤드 감소
❌ 단점
: 급한 프로세스가 와도 기다릴 수밖에 없음 → 응답성 낮아짐
✅ 정리 요약
항목 | 선점형 | 비선점형 |
CPU 회수 방식 | 타이머 등으로 강제 회수 | 자발적 종료 전까지 유지 |
반응 속도 | 빠름 | 느릴 수 있음 |
문맥 교환 오버헤드 | 큼 | 작음 |
장점 | 공정한 자원 분배 | 처리 안정성 |
단점 | 오버헤드 존재 | 자원 독점 가능 |
📎 마무리
CPU 스케줄링은 단순히 “누가 먼저 쓸래?”의 문제가 아닙니다.
전체 시스템의 효율과 성능, 그리고 사용자의 경험을 좌우하는 매우 중요한 개념입니다.
프로세스의 특성과 상황에 맞게 자원을 배분함으로써,
- 더 빠르게
- 더 공정하게
- 더 똑똑하게
컴퓨터가 일할 수 있게 만드는 것이 바로 CPU 스케줄링의 목표입니다.
'운영체제' 카테고리의 다른 글
💻 CPU 스케줄링 알고리즘 (0) | 2025.04.21 |
---|---|
🧵 스레드(Thread)와 프로세스(Process)의 이해 (0) | 2025.04.19 |
프로세스 : 상태 변화와 계층 구조 (0) | 2025.04.19 |
🖥 운영체제를 알아야 하는 이유와 큰 그림 (0) | 2025.04.19 |
운영체제(OS)란 무엇일까? 컴퓨터 시스템의 핵심 파헤치기 ✌️ (0) | 2025.04.17 |