실시간 스케줄링 (Real-Time Scheduling)주기 태스크 집합을 공유 자원(통상 단일 CPU)에 시간 도메인에서 할당하는 문제. 참조 모델의 세 번째 축으로, 알고리즘이 만든 Schedule이 모든 태스크의 데드라인을 만족하는지 판정한다. 세부 알고리즘 분류는 스케줄링 알고리즘 분류, FP 정책과 스케줄 가능성 판정은 고정 우선순위 스케줄링 / 응답 시간 분석 참고.

핵심 용어

용어정의
ScheduleJob들을 시간 도메인에서 자원에 할당한 결과
Scheduler스케줄링 알고리즘을 구현한 OS 모듈
Scheduling AlgorithmSchedule을 생성하는 규칙

Feasibility vs Schedulability

두 개념은 쉽게 혼동되지만 주체가 다르다.

개념판정 대상정의
FeasibilitySchedule (하나의 스케줄)모든 태스크가 데드라인 이전에 완료되는 스케줄이면 feasible
SchedulabilityTask Setfeasible schedule을 만들어내는 알고리즘이 적어도 하나 존재하면 schedulable
Schedulability (알고리즘 특정)Task Set + Algorithm특정 알고리즘이 해당 태스크 집합에 대해 feasible schedule을 생성하면 “그 알고리즘에 의해 schedulable”

즉 schedulability는 “알고리즘이 있느냐”의 존재 여부 문제, feasibility는 “이 구체적 스케줄이 되느냐”의 문제다.

선점 정책 (Preemption Policy)

태스크 수행 중 다른 태스크를 어떻게 할당할 수 있는지에 따라 구분.

정책특성
Preemptive실행 중인 태스크를 임의 시점에 중단 가능
Non-preemptive현재 태스크가 완료될 때까지 대기해야 새 태스크 시작 가능
Cooperative사전 정의된 시점에서만 선점 허용 (Preemptive와 Non-preemptive의 중간)

컨텍스트 스위치 (Context Switch)

선점 스케줄링은 CPU의 컨텍스트 저장/복원 메커니즘을 전제로 한다. 대부분의 CPU가 이 기능을 제공한다. 태스크 간 전환 시 레지스터·스택 포인터·프로그램 카운터 등을 저장·복원.

TASK(task_1ms) {
    A; B; C;
}
// ↕ Context Switch
TASK(task_10ms) {
    a; b; c;
}

VDX에서는 Task OIL의 SCHEDULE 속성(FULL=preemptable / NON=non-preemptable)으로 태스크별 선점 허용 여부를 설정한다. PreTaskHook/PostTaskHook도 컨텍스트 스위치 시점에 트리거된다 (OSEK Hook Routines 참고).

스케줄링의 목표

Real-Time 스케줄링의 핵심은 Deadline guarantee(데드라인 보장). 이 외에도 여러 목표(Fairness, Throughput, Latency, Predictability, Flexibility 등)가 있으며 서로 상충한다. Non-Real-Time 스케줄링(예: Linux CFS)은 공정 분배에 초점. 전체 목표 목록과 예시는 스케줄링 알고리즘 분류 참고.

같이 보기