🗓️ 스케줄링 (Scheduling)
0. 스케줄링이란 무엇인가?
- 처리 해야 할 일(프로세스)들 사이에
순서를 정해서 CPU(중앙처리장치)를 사용할 수 있는 시간을 정해주는 것.
- 즉, 여러 프로세스 중 어느 것을
먼저 실행할지 결정하는 방법론
프로세스의 상태

1. 왜 운영체제에서 스케줄링이 중요한가?
다중 프로그래밍 환경에서는 여러 프로세스가 동시에 메모리에 있기 때문에, 효과적인 CPU 사용을 위해 어떤 프로세스를 언제 실행할지 결정하는 기능이 필요
스케줄링은 시스템 성능, 공정성, CPU 사용률, 응답 시간 등 다양한 요소를 최적화하는데 큰 역할
2. 스케줄링의 목적
- 시스템의
성능 향상 (오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓)
- 성능 지표
1. 자원 활용도 (resource utilization) : 주어진 시간동안 자원이 활용된 시간
2. 작업처리량 (throughput) : 단위 시간 동안 완료된 작업의 수
3. 응답시간 (respoinse time) : 작업 요청으로부터 응답을 받을때 까지의 시간

3. 스케줄링 알고리즘 소개
-
비선점(nonpreemeptive) : CPU 제어권을 뻇을 수 없음
FCFS (First Come, First Served)
- 가장
먼저 온 프로세스를 먼저 처리 (= Queue)
- 장점: 구현이 간단
- 단점: 짧은 작업이 긴 작업 뒤에 대기할 경우, 평균 대기 시간이 증가 (Convoy effect)
SJF (Shortest Job First)
- 원리: 실행 시간이
가장 짧은 프로세스부터 실행
- 장점: 평균 대기 시간이 가장 짧음
- 실제로는 알 수 없기 떄문에 과거의 실행했던 시간을 토대로 추측
- 단점: 실행 시간 예측이 어려움,
Starvation 문제 발생 가능
우선순위 (Priority)
- 원리: 각 프로세스에 우선순위를 부여하고
높은 우선순위를 가진 프로세스부터 실행
- 장점: 중요한 작업을 먼저 처리 가능
- 단점: 낮은 우선순위의 프로세스가 무한정 대기하는
Starvation 문제 발생 가능
-
선점(preemeptive) : CPU 제어권을 뻇을 수 있음 (현대 운영체제가 쓰는 방식)
-
라운드 로빈 (Round Robin)
- 원리: 각 프로세스에
동일한 시간 할당 (Time Quantum) 후 순환
- 장점:
공정하게 모든 프로세스에 CPU 시간 할당
- 단점:
Time Quantum 설정에 따라 성능이 크게 달라짐
-
SRF (Shortest Remaining Time First)
- 원리 : 실행 중인 프로세스의 남은 실행 시간과 새로 도착한 프로세스의
실행시간을 비교하여 짧은 것 부터 실행
- 장점 : 응답 시간 최적화, 대기 시간 최소화, Starvation 현상 감소
- 단점 : 잦은
Context Switching, 예측 가능성 감소, Starvation 여전히 발생 가능
-
다단계 큐(Multilevel Queue)
- 원리:
여러 개의 큐를 사용하고 각 큐마다 다른 스케줄링 전략 적용, 큐 끼리는 우선순위와 라운드 로빈 방식 적용
- 장점: 다양한 종류의 프로세스들을 효율적으로 관리 가능
- 단점: 큐 설정과 스케줄링 전략 결정이
복잡
4. 스케줄링과 현대 운영체제
- 현대 운영체제에서의 스케줄링 방식
- 현대의 운영체제, 특히
서버 환경에서는 여러 사용자와 태스크를 동시에 처리해야 하므로, 스케줄링의 중요성이 더욱 강조
- 클라우드 컴퓨팅, 가상화 기술과 스케줄링
- 클라우드 환경에서는 여러 클라이언트의 요청을
동시에 처리해야 하며, 가상화 기술을 사용하여 물리적 자원을 최대한 효율적으로 활용해야 함. 이러한 환경에서 스케줄링은 리소스 할당과 가상 머신간의 작업 분배에 큰 역할을 함
용어 정리
기아 현상(Starvation) : 특정 프로세스가 자원을 얻지 못하고 무한히 대기하는 상태
시간 할당량(Time Quantum) : 각 프로세스에 할당되는 고정된 시간 단위, 프로세스는 이시간동안만 CPU사용
문맥 교환(Context Switching) : CPU를 사용하는 프로세스의 전환이 발생할 떄 하는 작업