대표적인 시스템 성능지표 3가지는 다음과 같다. 목적에 맞는 지표를 고려해서 스케줄링 기법을 선택해야 한다.
응답시간(response time)
작업 요청(submission)으로부터 응답 받을 때 까지의 시간
작업처리량(throughput)
단위 시간 동안 완료된 작업의 수
자원활용도(resource utilization)
주어진 시간(Tc) 동안 자원이 활용된 시간(Tr)
Utilization = Tr / Tc
스케줄링 기준으로는 프로세스의 특성, 시스템의 특성, 프로세스의 긴급성, 프로세스 우선순위, 프로세스 총 실행 시간 등이 있다.
프로세스 수행은 CPU 사용과 I/O 대기의 반복이다. CPU burst는 CPU 사용 시간이고, I/O burst는 I/O 대기 시간이다. CPU burst가 I/O burst보다 긴 경우 CPU burst가 성능을 결정한다는 의미에서 compute-bounded process라고 한다. 반면 I/O burst의 시간이 더 긴 경우 I/O-bounded process라고 한다. Burst time은 스케줄링의 중요한 기준 중 하나이다.
스케줄링 단계는 발생하는 빈도 및 할당 자원에 따른 구분이다.
Long-term Scheduling
긴 시간에 한번씩 일어나는 스케줄링이다. Job Scheduling이 여기에 해당된다. Job Scheduling은 대기하고 있는job들 중 어떠한 것을 시스템(kernel)에 등록시킬 지 결정하는 일을 한다. 다중프로그래밍 정도(degree) 또한 조절하는데, 이는 시스템 내에 프로세스의 수를 조절한다.
I/O-bounded와 compuete-bounded 프로세스들을 잘 섞어서 선택해야 한다. 그런데 시분할 시스템에서는 모든 작업을 시스템에 등록한다. 때문에 Long-term scheduling이 덜 중요하다.
Mid-term Scheduling
메모리 할당을 결정한다(memory allocation)
short-term Scheduling
Prodcess scheduling이다. 프로세서를 할당할 프로세스를 결정하기 때문에 가장 빈번하게 발생한다. 이 스케줄링의 속도를 빠르게 하는 것이 성능에 중요한 영향을 미친다.
ex)
averate CPU burst = 100ms
scheduling decision = 10ms
100 + 10 = 110
이 경우에 10 만큼, 즉 약 9%는 오버헤드가 발생한 것이다.
스케줄링의 단계 다이어그램
선점(preemptive scheduling) vs 비선정(Non-preemptive-scheduling)
선점은 타의에 의해 자원을 때앗길 수 있다. 예를 들어 할당 시간이 종료되거나 우선순위가 높은 프로세스가 등장할 때 발생한다. 응답성이 높은 것이 장점이지만 그만큼 Context switch overhead가 크다. 시분할(Time-sharing system)이나 real-time system 등에 적합하다.
비선점은 할당받은 자원을 스스로 반납할 때까지 사용한다(뺏을 수 없다). Context switch overhead가 적지만, 잦은 우선순위의 역전이나 평균 응답 시간이 증가한다.
우선순위
우선순위는 프로세스의 중요도다. 정적 우선순위와 동적 우선순위로 구분할 수 있다.
정적 우선순위(Static Priority)는 프로세스 생성 시 결정된 우선순위가 유지된다. 때문에 구현이 쉽고, overhead가 적다. 하지만 시스템 환경 변화에 대한 대응이 어렵다.
동적 우선순위(Dynamic Priority)는 프로세스의 상태 변화에 따라 우선순위가 변한다. 때문에 시스템 환경 변화에 유연하게 대응할 수 있다는 장점이 있다. 하지만 구현이 복잡하고, 우선순위를 재계산하면서 overhead가 발생한다.