CPU 스케줄링 선점형 vs. 비선점형
1. 개요
CPU 스케줄링은 운영체제가 프로세스에 CPU 자원을 할당하는 정책이다. 여러 프로세스가 동시에 실행될 때, CPU를 어떤 순서로, 얼마나 사용할지를 결정하는 중요한 역할을 한다. 이러한 스케줄링 방식은 크게 선점형(Preemptive)과 비선점형(Non-preemptive)으로 나뉜다.
2. 선점형 스케줄링 (Preemptive Scheduling)
선점형 스케줄링은 실행 중인 프로세스로부터 CPU 자원을 강제로 빼앗아 다른 프로세스에 할당하는 방식이다. 우선순위가 높은 프로세스가 준비 상태에 들어오거나, 할당된 시간이 만료되면 현재 실행 중인 프로세스를 중단시키고 CPU를 빼앗는다.
- 특징:
- 응답성 보장: 우선순위가 높은 프로세스가 즉시 실행될 수 있어 실시간 시스템에 적합하다.
- 공정성: 모든 프로세스에 공평하게 CPU 시간을 분배하여 특정 프로세스의 무한 대기(starvation)를 방지한다.
- 높은 오버헤드: 문맥 교환(Context Switching)이 자주 발생하여 시스템에 부하를 줄 수 있다.
- 주요 알고리즘:
- 라운드 로빈(Round Robin): 각 프로세스에 동일한 시간 할당량(Time Slice)을 부여하고, 할당 시간이 끝나면 다음 프로세스로 CPU를 넘긴다.
- SRT(Shortest Remaining Time First): 남은 실행 시간이 가장 짧은 프로세스를 우선으로 실행한다. 새로운 프로세스가 들어올 때마다 남은 시간을 비교하여 우선순위를 재조정한다.
3. 비선점형 스케줄링 (Non-preemptive Scheduling)
비선점형 스케줄링은 이미 CPU를 할당받아 실행 중인 프로세스가 스스로 자원을 반납하거나(예: I/O 대기), 작업이 완료될 때까지 CPU를 다른 프로세스에 빼앗기지 않는 방식이다.
- 특징:
- 낮은 오버헤드: 문맥 교환이 적어 오버헤드가 낮고, 처리율이 높다.
- 응답 시간 예측 어려움: CPU 사용 시간이 긴 프로세스가 CPU를 독점할 경우, 다른 프로세스가 오랜 시간 대기할 수 있다.
- 무한 대기(Starvation) 발생 가능성: 우선순위가 낮은 프로세스는 영원히 실행되지 못할 수 있다.
- 주요 알고리즘:
- FCFS(First-Come, First-Served): 먼저 도착한 프로세스에게 CPU를 먼저 할당한다.
- SJF(Shortest Job First): 실행 시간이 가장 짧은 프로세스를 우선으로 실행한다. 일단 시작하면 작업이 끝날 때까지 CPU를 점유한다.
4. 선점형 vs 비선점형 비교
| 구분 | 선점형 스케줄링 | 비선점형 스케줄링 |
| CPU 회수 | 실행 중에도 강제로 회수 가능 | 프로세스가 자발적으로 종료/대기 시 반납 |
| 오버헤드 | 문맥 교환 잦아 높음 | 문맥 교환 적어 낮음 |
| 적합 환경 | 실시간/대화형 시스템 | 일괄처리(Batch) 시스템 |
| 예시 | 라운드 로빈, SRT | FCFS, SJF |
5. 결론
선점형과 비선점형 스케줄링은 각각의 장단점을 가진다. 선점형은 높은 우선순위와 실시간 처리가 중요한 환경에 적합하며, 비선점형은 배치 처리와 같이 응답성이 덜 중요하고 효율적인 처리가 필요한 환경에 적합하다. 현대의 대부분의 운영체제는 두 방식의 장점을 결합한 혼합형 스케줄링을 사용하며, 시스템의 목적에 따라 유연하게 정책을 적용한다.
'IT Tech.' 카테고리의 다른 글
| (AI) 서포트 벡터 머신 (0) | 2025.09.20 |
|---|---|
| (AI) 정밀도 vs. 재현율 (0) | 2025.09.20 |
| (컴퓨터시스템) 버퍼링, 스풀링, 버퍼오버플로우 (0) | 2025.09.15 |
| (컴퓨터시스템) 운영체제와 컴퓨터 시스템의 구성 요소 (1) | 2025.09.15 |
| (DB) 키(Key) 개념 및 종류 (2) | 2025.09.15 |