CPU 스케줄링 (CPU Scheduling)
💡CPU 스케줄링이란?
- 운영체제는 여러 프로세스와 스레드에 CPU 사용을 어떻게 배분할지 결정해야 한다.
- 이때 운영체제가 CPU를 효율적으로 할당하는 방법 바로 CPU 스케줄링이다.
- CPU 스케줄링의 절차를 CPU 스케줄링 알고리즘이라고 하며, 스케줄링 동작을 수행하는 운영체제 내부 소프트웨어를 CPU 스케줄러(CPU scheduler)라고 부른다.
모든 프로세스와 스레드는 CPU의 자원을 필요로 하기 때문에 운영체제는 공정하고 합리적인 방식으로 CPU의 자원을 각 프로세스와 스레드에 할당해야한다. 이때 작업마다 중요도, 시급성 등이 다를 수 있기 때문에, 운영체제는 프로세스와 스레드별 우선순위(Priority)를 판단하여 PCB에 명시하고, 우선순위가 높은 프로세스와 스레드에 CPU의 자원을 더 빨리, 많이 할당한다.
우선순위 (Priority)
💡우선순위 (Priority)
- 우선순위는 운영체제 정책에 따라 자동으로 정해질 수도, 사용자가 직접 조절할 수도 있다.
- 유닉스, 리눅스, 맥OS 등의 유닉스 운영체제에서는 ps 명령어를 통해 프로세스/스레드의 우선순위를 확인할 수 있다.
$ ps -l
- 윈도우에서는 Process Explorer 소프트웨어를 통해 확인할 수 있다.
그렇다면, 운영체제가 프로세스/스레드의 우선순위를 할당하는 기준은 뭘까? 가장 대표적인 고려 요소는 CPU 활용률(CPU Utilization)이다.
CPU 활용률 (CPU Utilization)
💡CPU 활용률(CPU Utilization)
- CPU 활용률이란, CPU의 가동 시간 중 실제로 작업을 수행하는 시간의 비율을 의미한다.
- 운영체제는 단순히 공정하게 자원을 나눠주는 것이 아니라, 시스템 전체의 CPU 활용률을 최대화하는 것을 목표로 한다.
- 따라서, 기본적으로 입출력의 작업이 많은 프로세스/스레드의 우선순위를 높게 유지한다.
자원이 제한적이기 때문에, 각 프로세스/스레드는 CPU를 집중적으로 사용하는 구간과 입출력 장치를 기다리는 대기 구간을 번갈아가며 반복한다. 이때, 다음 4가지 개념을 통해 이러한 프로세스/스레드의 특성과 운영체제의 효율적인 자원 관리 방식을 더 자세히 이해할 수 있다.
💡CPU 버스트(CPU Burst)
- CPU가 집중적으로 사용되는 시간
💡입출력 버스트(I/O Burst)
- 입출력(I/O)을 기다리거나 수행하는 시간
💡CPU 집중 프로세스(CPU Bound Process)
- 긴 CPU 버스트, 짧은 I/O 버스트
- 대기 상태보다 실행 상태에 더 많이 머무른다.
- 대부분의 시간 동안 CPU에서 연산 작업을 실행(실행 상태에 오래 머무름)
💡입출력 집중 프로세스(I/O Bound Process)
- 짧은 CPU 버스트, 긴 I/O 버스트
- 실행 상태보다 입출력을 위한 대기 상태에 더 많이 머무른다.
- 실행보다는 입출력(ex. 파일 읽기/쓰기, 네트워크 등) 때문에 대기 상태에 더 오래 머무름
모든 프로세스가 CPU를 사용하는 시간이 다르기 때문에, 단순하게 순서대로 CPU를 할당하면 비효율적 자원 사용이 발생한다. 따라서 운영체제는 다음과 같은 전략을 사용한다.
➡️ 운영체제가 CPU를 할당하는 전략
1. 입출력 집중 프로세스를 우선 실행
- CPU를 짧게 사용하고 빠르게 입출력 장치로 이동
- 입출력 장치 작업이 병렬로 처리되는 동안 CPU는 다른 프로세스에게 할당 가능
- CPU와 I/O 장치 모두의 병렬적 활용이 가능해져 전체 시스템 성능 향상
2. 입출력 집중 프로세스를 빠르게 실행 후, CPU 집중 프로세스에 CPU 집중 할당
- 입출력 작업이 병렬적으로 돌아가며 CPU 집중 프로세스도 효율적으로 실행
이렇듯 운영체제는 시스템 내 여러 프로세스/스레드에게 CPU 자원을 번갈아가며 할당한다. 이 과정에서 각 작업(프로세스/스레드)은 필요한 자원을 기다리는 동안 스케줄링 큐에 들어가 자신의 차례를 기다리게 된다.
스케줄링 큐(Scheduling Queue)
💡스케줄링 큐(Scheduling Queue)
- 운영체제는 각 자원을 사용하고 싶어 하는 프로세스/스레드들이 기다릴 수 있도록 여러 종류의 큐(Queue)를 관리한다.
- 다음과 같이 CPU를 쓰고 싶은 프로세스/스레드의 PCB, 하드디스크를 쓰고 싶은 프로세스/스레드의 PCB, 프린터를 쓰고 싶은 프로세스/스레드의 PCB를 큐에 삽입하여 줄 세운다.

자료구조 관점에서의 큐는 본래 선입선출 구조를 따르지만, 스케줄링에 사용되는 큐가 반드시 선입선출일 필요는 없다.
이렇게 운영체제가 관리하는 큐는 다양한 종류가 있지만, 대표적으로 준비 큐(Ready Queue)와 대기 큐(Wait Queue)가 있다.

💡준비 큐(Ready Queue)
- CPU를 사용하고 싶어하는 프로세스/스레드들의 PCB가 들어있는 큐
- CPU를 할당받기 전, 대기 상태로 있다가 디스패처(dispatcher)에 의해 CPU를 받아 실행 상태로 전환됨
💡대기 큐(Wait Queue)
- 입출력 장치 사용을 원하는 프로세스/스레드들이 입출력 완료를 기다리는 큐
- 대기 큐에서 대기 상태로 입출력 완료 인터럽트(작업이 완료되었음을 알리는 신호)를 기다린다.
- 인터럽트 신호를 받으면, 운영체제는 대기중이었던 PCB를 찾아 준비 큐로 이동시킨다.

운영체제는 큐에 삽입된 순서대로 실행하되, 우선순위가 높은 프로세스/스레드부터 먼저 실행한다. 실행 중인 프로세스/스레드가 할당받은 시간(타임 슬라이스, Time Slice)을 모두 사용한 경우, 타이머 인터럽트가 발생하여 다시 준비 큐로 다시 이동해 차례를 기다린다.
실행 도중 입출력 작업을 수행하는 등 대기 상태로 접어들어야 할 경우 대기 큐로 이동하여 입출력 작업이 끝날 때까지 입출력 완료 인터럽트를 기다린다.
운영체제는 이런 방식으로 CPU와 입출력 장치가 쉬지 않고 동작하도록 각 프로세스의 상태(실행, 대기, 준비)를 효율적으로 관리한다. 여기서, 프로세스/스레드들이 CPU를 사용하는 방식에 차이가 있다.
어떤 프로세스/스레드는 할당된 CPU를 다 쓸때까지 쭉 점유하기도 하고, 어떤 경우에는 운영체제가 강제로 중단시키고 다른 프로레스/스레드에게 CPU를 넘기기도한다.
이처럼 CPU 사용 중 프로세스의 상태 전이가 '스스로 끝날 때까지 계속 점유'할지, '운영체제가 강제로 뺏어갈 수 있는지'에 따라 두 가지로 나뉘는데, 바로 이것이 선점형(Preemptive)과 비선점형(Non-preemptive) 스케줄링이다.
선점형/비선점형 스케줄링
💡선점형(Preemptive)

- 운영체제가 실행 중인 프로세스/스레드의 CPU 사용을 강제로 중단(선점, preempt)시키고 다른 프로세스/스레드에게 CPU를 할당할 수 있는 방식
💡비선점형(Non-preemptive)

- 한 번 CPU를 할당받은 프로세스가 스스로 작업을 끝낼 때까지 CPU를 계속 점유하는 방식
💡선점형 VS 비선점형
| 구분 | 선점형 스케줄링 (Preemptive) | 비선점형 스케줄링 (Non-preemptive) |
| 정의 | 운영체제가 실행 중인 프로세스를강제로 중단(선점)시키고 다른 프로세스에게 CPU 할당 | 프로세스가 스스로 CPU를 반납할 때까지계속 점유, 운영체제는 강제로 중단하지 않음 |
| 장점 | - CPU 독점 방지- 응답성/공정성 우수- 여러 프로세스가 번갈아 빠르게 실행됨- 긴 작업 때문에 전체가 지연되는 현상(Convoy Effect) 감소 | - 구현이 단순- 문맥 교환(Context Switch) 적어오버헤드(부하) 작음- 예측 가능한 실행 흐름 |
| 단점 | - 문맥 교환이 자주 발생 → 오버헤드 증가- 구현 복잡- 실시간성 요구 환경에서는 오히려 불리할 수 있음 | - CPU 독점 현상(Starvation) 발생 가능- 응답 시간 예측 어려움- 긴 작업이 앞에 있으면 전체 지연(Convoy Effect) 발생 |
| 대표 예시 | 라운드 로빈(RR), 선점형 SJF(SRT),선점형 우선순위 스케줄링 등 | FCFS, 비선점형 SJF, 비선점형 우선순위 등 |
출처
https://www.hanbit.co.kr/store/books/look.php?p_code=B3079890360
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!
www.hanbit.co.kr
이미지 출처
'CS > [도서] 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 카테고리의 다른 글
| [운영체제] 3-5. (1) 가상 메모리 (Virtual Memory) (1) | 2025.07.29 |
|---|---|
| [운영체제] 3-4. (2) CPU 스케줄링 (CPU Scheduling) (3) | 2025.07.28 |
| [운영체제] 3-3. (2) 동기화와 교착 상태 (2) | 2025.07.22 |
| [운영체제] 3-3. (1) 동기화와 교착 상태 (6) | 2025.07.10 |
| [운영체제] 3-2. (3) 프로세스 간 통신 (업데이트 중..) (1) | 2025.07.09 |