운영체제/CPU 스케줄링
선점형과 비선점형 스케줄링
iOS Developer
2025. 1. 28. 14:55
선점형과 비선점형 스케줄링
운영체제에서 프로세스에게 CPU 등 자원을 할당할 때, 이미 자원을 사용 중인 프로세스로부터 자원을 빼앗아 다른 프로세스에게 넘길 수 있는지 여부에 따라 스케줄링을 선점형(Preemptive) 과 비선점형(Non-Preemptive) 으로 구분한다. 이 장에서는 두 방식의 정의와 장단점을 살펴본다.
1. 선점형 스케줄링(Preemptive Scheduling)
1.1 정의
- 선점(Preemption) 이란 “남보다 앞서 차지한다”는 뜻이다.
- 선점형 스케줄링은 운영체제가 프로세스가 자원을 쓰는 중이라도, 언제든 해당 자원을 빼앗아(강제적으로 중단시키고) 다른 프로세스에게 배분할 수 있는 방식을 말한다.
예: 시분할(Time Quantum) 방식
- 프로세스가 정해진 시간만큼 CPU를 쓰고 나면, 타이머 인터럽트가 발생하여 운영체제가 해당 프로세스로부터 CPU를 회수하고 다른 프로세스에게 할당한다.
- 이로써 모든 프로세스가 골고루 CPU 시간을 얻을 수 있다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
1.2 장단점
장점
- 자원 독점 방지
- 하나의 프로세스가 자원을 오래 점유하지 못하게 하여, 긴급하거나 우선순위가 높은 프로세스에 빠른 대응이 가능하다.
- 다중 프로그래밍 효율 향상
- 여러 프로세스가 병행으로 자원을 나눠쓰며, 반응성이 좋아진다.
단점
- 문맥 교환(Context Switch) 오버헤드
- 프로세스를 중단하고 다른 프로세스를 재개하려면 레지스터, PCB, 메모리 맵 등을 변경해야 해 오버헤드가 증가한다.
- 연산의 일관성 문제
- 작업 도중 선점이 일어나면, 공유 자원의 상태가 불안정해질 수 있어 동기화(뮤텍스, 세마포어 등)가 필수적이다.
2. 비선점형 스케줄링(Non-Preemptive Scheduling)
2.1 정의
- 비선점형 스케줄링은 한 프로세스가 자원을 사용하기 시작하면, 프로세스가 종료되거나 대기(I/O 등)로 스스로 포기하기 전까지는 다른 프로세스가 개입할 수 없는 방식이다.
- 즉, CPU를 할당받은 프로세스가 스스로(또는 작업 완료) 자원을 놓을 때까지 독점할 수 있다.
(그림 출처: 혼자 공부하는 컴퓨터 구조 + 운영체제)
2.2 장단점
장점
- 문맥 교환 횟수 감소
- 프로세스가 자원을 연속적으로 사용하므로, 선점에 따른 빈번한 문맥 교환이 발생하지 않아 오버헤드가 적다.
- 작업 일관성 보장
- 프로세스가 자원을 독점하므로, 공유 자원 접근 시 동기화 문제를 완화할 수도 있다(단, 다른 프로세스 관점에서는 불리).
단점
- 긴급 대응 어려움
- 높은 우선순위의 프로세스가 급하게 자원을 필요로 해도, 이미 자원을 쓰고 있는 낮은 우선순위 프로세스가 끝낼 때까지 기다려야 한다.
- 자원 독점 가능
- 특정 프로세스가 자원을 오랫동안 점유하면, 시스템 응답성이 저하되고 공정성이 떨어질 수 있다.
3. 선점형 vs. 비선점형 비교
구분 | 선점형 스케줄링 | 비선점형 스케줄링 |
---|---|---|
개념 | 실행 중인 프로세스 자원을 빼앗을 수 있음 | 자원을 사용 중인 프로세스 독점 (스스로 놓을 때까지) |
문맥 교환 횟수 | 상대적으로 많음 | 상대적으로 적음 |
긴급 프로세스 대응 | 유리 (언제든 끼어들기 가능) | 불리 (현재 프로세스가 끝날 때까지 대기) |
공정성/반응성 | 높음 | 낮음 |
구현 복잡도 | 높음 (선점 시점, 동기화 고려 등) | 낮음 |
4. 현대 운영체제의 동향
대부분 시분할(Time-Sharing) 시스템이나 서버 환경을 포함해, 현대 운영체제(Windows, Linux, macOS 등)는 선점형 스케줄링을 채택하고 있다.
- 선점형 방식을 통해 인터랙티브(대화형) 응답성을 높이고, 다양한 우선순위 기반 스케줄링을 구현하기 용이하다.
- 다만, 특정 상황(예: 커널 임계 구역 또는 드라이버 작업 중)에서는 일시적으로 비선점 구간을 둘 수도 있다.
5. 결론
- 선점형 스케줄링은 CPU 등 자원을 사용하는 프로세스가 있더라도, 더 높은 우선순위 또는 긴급 상황이 발생하면 강제로 자원을 회수하여 다른 프로세스에 할당할 수 있는 방식이다.
- 비선점형 스케줄링은 이미 자원을 할당받은 프로세스가 작업을 모두 마치거나 스스로 대기로 들어가기 전까지 다른 프로세스가 끼어들지 못하는 방식이다.
- 현대 운영체제는 대부분 선점형을 사용하지만, 문맥 교환으로 인한 오버헤드나 임계 구역 보호 등을 고려해, 부분적으로 비선점 영역을 사용하기도 한다.
참고 자료
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- Operating System Concepts (A. Silberschatz, P.B. Galvin, G. Gagne)
- Modern Operating Systems (A.S. Tanenbaum, H. Bos)