[OS] Ch5. CPU 스케쥴링
기본 개념
- 단일 처리기에서는 오직 하나의 프로세스만이 실행 가능하다.
- 다중 프로그래밍의 목적은 CPU 사용률 최대화이다. => 스케쥴링 알고리즘이 중요해짐
CPU 입출력 버스트 사이클 (CPU I/O Burst Cycle)
- 프로세스 실행은 CPU버스트, I/O 버스트가 번갈아가면서 사이클을 이룬다.
CPU 스케쥴러
- 단기 스케쥴러라고도 한다.
- 메모리 내의 프로세스를 CPU에 할당한다.
선점 스케쥴링 (Preemptive Scheduling)
- 중간에 교체 가능 한 스케쥴링
- Race condition이 발생 할 수 있다
디스패처 (Dispatcher)
- CPU의 제어를 실행되는 프로세스에게 주는 모듈이다.
- 문맥 교환, 사용자 모드 전환, 사용자 프로그램의 적절한 위치로 이동(jump)의 기능이 있다.
- 모든 프로세스의 문맥 교환 시 실행된다.
- 이 때의 지연을 dispatch latency라고 한다.
스케쥴링 기준
- CPU 이용률 ↑
- 처리량 ↑
- 단위 시간 당 처리한 프로세스의 갯수
- 총 처리 시간 ↓
- 대기 시간 ↓
- 준비 완료 큐에서의 총 대기시간
- 응답 시간 ↓
스케쥴링 알고리즘
FCFS (First Come First Served)
- 가장 빨리 온 프로세스가 가장 먼저 처리됨
- convoy effect 발생 가능
- 가장 많은 시간이 소요되는 프로세스가 맨 먼저 오게 돼 대기 시간이 많아진다.
- 비선점형
SJF (Shortest Job First)
- 가장 짧은 프로세스가 먼저 수행된다.
- 장기 스케쥴링 시 주로 사용된다. (시간을 파악해야 하므로)
- 비선점
SRJF (Shortest Remaining Job First)
- SJF의 선점형
우선 순위
- 우선 순위를 부여 해 높은 우선순위부터 실행한다.
- 기아 상태, 무한 봉쇄의 가능성이 있다.
- 시간이 지날 수록 우선순위를 높이는 Aging으로 해결 할 수 있다.
- 선점형과 비선점형 둘 다 가능하다.
Round Robin
- 동일한 시간만큼 프로세스를 번갈아가면서 실행한다.
- 선점형
- Time Slice가 너무 크면 FCFS와 다를 바가 없고, 너무 작으면 오버헤드가 커진다.
다단계 큐
- Ready 큐를 여러 개 생성한다.
- ex) foreground 큐, background 큐를 생성 해 foreground를 우선적으로 처리한다.
- RR 사용 해 slice한다.
- 비선점
다단계 피드백 큐
- 프로세스가 CPU사이를 이동할 수 있다.
멀티 프로세서 스케쥴링
-
load sharing(부하 공유)가 중요하다.
- 비대칭 다중처리
- 주 서버와 보조서버를 둔다.
- 주 서버는 시스템적인 처리를 한다. (스케쥴링 결정, I/O)
- 보조 서버는 사용자 코드 처리를 한다.
- 대칭 다중처리 (SMP, Symmetric Multiprocessing)
- 각 처리기가 독자적으로 처리한다.
처리기 친화성 (Processor Affinity)
- 한 처리기에서 다른 처리기로의 이주를 피한다.
- Soft Affinity : 이주 가능
- Hard Affinity : 이주 불가능
Load Balancing
- SMP 시스템에서는 부하 분배가 균등해야 한다.
- push 이주, pull 이주
다중코어 프로세서
- 하나의 칩에 처리기가 여러 개 존재
- 스케쥴링이 복잡해짐
- 캐시 미스로 메모리 멈춤(stall) 발생 시 처리기 내부의 스레드를 통해 전환한다.
- 거친(coarse-grained) 다중스레딩
- 긴 지연 시간일 시 다중스레드 실행
- 세밀한(fine-grained) 다중스레딩
실시간 CPU 스케쥴링
- Soft 실시간 시스템
- 데드라인이 X
- Hard 실시간 시스템
- 데드라인 O
- 지연시간 최소화
- 인터럽트 지연
- 디스패치 지연
승인 제어(admission-control) 알고리즘
- 마감 시간 이내에 완수 가능하다면 승인, 아니라면 거절
Rate Monotonic 알고리즘
- 주기에 따라 우선순위 결정
- 주기가 짧은게 우선
- CPU 자원 최대화 불가능
Earliset Deadline First
- 우선 순위 동적 부여
- 마감 시간이 빠른게 우선