🗓️ 스케줄링 (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를 사용하는 프로세스의 전환이 발생할 떄 하는 작업