실시간 스케줄링과 데드라인 기반 태스크 관리
실시간 시스템의 태스크 모델과 RM·DM·EDF·LLF 스케줄링, 스케줄 가능성 분석 및 Linux·RTOS 적용 방식을 정리한다.
2026-08-14 · 최초 발행 2026-01-16
시간 안에 끝내는 일이 정확성의 일부가 되는 시스템
실시간 스케줄링은 태스크의 실행 시간 제약, 즉 데드라인을 만족시키기 위해 CPU 실행 순서를 결정하는 기법이다. 일반 운영체제가 공정성에 무게를 둔다면, 실시간 시스템에서는 태스크가 지정된 시점 안에 완료되는지가 핵심 요구사항이다. 항공기 제어, 의료 장비, 자동차 시스템처럼 시간 제약이 큰 분야에서 이를 사용한다.
실시간 시스템은 연산 결과가 맞는 것만으로 충분하지 않다. 그 결과가 언제 도착했는지도 정확성에 포함된다. 예측 가능한 응답 시간, 데드라인 준수, 중요한 태스크의 우선 처리, 낮은 지연 시간이 이 시스템의 성격을 이룬다.
실시간 요구의 강도는 다음처럼 나뉜다.
경성 실시간(Hard Real-Time)은 데드라인을 놓치면 시스템 실패나 치명적 결과로 이어진다. 항공기 제어 시스템과 원자력 발전소 제어가 여기에 해당하며, 100% 데드라인 보장이 필요하다.
연성 실시간(Soft Real-Time)은 데드라인 위반이 서비스 품질 저하로 나타난다. 비디오 스트리밍과 온라인 게임이 예이며, 대부분의 데드라인을 지키는 것을 목표로 한다.
준경성 실시간(Firm Real-Time)에서는 데드라인을 넘긴 결과가 더 이상 가치가 없다. 금융 거래 시스템이나 센서 데이터 처리처럼 지연된 태스크를 폐기하는 경우가 이에 속한다.
태스크의 도착 방식부터 구분한다
주기적 태스크(Periodic Task)는 일정한 간격으로 반복 실행된다. 스케줄링 분석에서는 주기, 실행 시간, 데드라인, 릴리즈 타임을 함께 본다.
| 파라미터 | 기호 | 설명 |
|---|---|---|
| 주기 | Ti | 태스크 실행 간격 |
| 실행 시간 | Ci | 태스크 완료에 필요한 CPU 시간 |
| 데드라인 | Di | 완료 시한 |
| 릴리즈 타임 | ri | 태스크 시작 가능 시점 |
이용률은 태스크가 주기 안에서 요구하는 CPU 비중으로 계산한다.
태스크 이용률: Ui = Ci / Ti
총 이용률: U = Σ(Ci / Ti)
비주기적 태스크(Aperiodic Task)는 불규칙하게 발생한다. 발생 시점을 예측할 수 없고 소프트 데드라인을 적용하며, 주기적 태스크 사이의 여유 시간에서 처리한다.
스포라딕 태스크(Sporadic Task)는 비주기적이지만 최소 도착 간격이 보장된다. 최소 간격(Minimum Inter-arrival Time)이 있고 하드 데드라인을 둘 수 있으며, 주기적 태스크로 모델링할 수도 있다.
고정 우선순위로 데드라인을 다루는 방법
Rate Monotonic(RM)은 주기가 짧은 태스크에 더 높은 우선순위를 주는 선점형 알고리즘이다. 주기에 따라 우선순위가 고정되므로 분석하기 쉽고, 고정 우선순위 방식 가운데 최적의 알고리즘으로 알려져 있다.
태스크 집합의 RM 스케줄 가능성은 이용률 조건으로 우선 확인할 수 있다.
n개의 태스크에서 스케줄 가능 조건:
U = Σ(Ci/Ti) ≤ n(2^(1/n) - 1)
n → ∞ 일 때: U ≤ ln(2) ≈ 0.693
| n | 이용률 한계 |
|---|---|
| 1 | 1.000 |
| 2 | 0.828 |
| 3 | 0.780 |
| 4 | 0.757 |
| ∞ | 0.693 |
Deadline Monotonic(DM)은 주기 대신 데드라인이 짧은 태스크에 높은 우선순위를 준다. 데드라인이 주기보다 짧거나 같은 제한된 데드라인 모델(Di ≤ Ti)에 맞으며, D ≤ T인 경우 RM보다 우수하다. D = T이면 RM과 동일하다.
이용률만으로 판단하기 어려운 경우에는 응답 시간 분석(RTA)을 사용한다. 각 태스크의 응답 시간이 데드라인을 넘지 않는지 계산하는 방식이다.
Ri = Ci + Σ(⌈Ri/Tj⌉ × Cj) (j는 i보다 높은 우선순위)
스케줄 가능 조건: Ri ≤ Di
계산은 다음 식이 수렴할 때까지 반복한다.
R(0) = Ci
R(n+1) = Ci + Σ(⌈R(n)/Tj⌉ × Cj)
수렴할 때까지 반복
실행 시점에 우선순위가 달라지는 방식
Earliest Deadline First(EDF)는 데드라인이 가장 가까운 태스크를 먼저 실행한다. 동적으로 우선순위를 배정하며, 이론적으로 최적의 알고리즘이다. 이용률 100%까지 스케줄 가능하지만 구현 복잡도는 높다.
U = Σ(Ci/Ti) ≤ 1
Least Laxity First(LLF)는 남은 여유 시간(Laxity)이 가장 작은 태스크를 실행한다. 여유 시간은 다음과 같이 구한다.
Laxity = 데드라인 - 현재시간 - 남은실행시간
LLF는 EDF와 같은 스케줄 가능성을 가지지만 컨텍스트 스위칭이 자주 발생할 수 있어 구현이 더 복잡하다.
| 항목 | Rate Monotonic | EDF |
|---|---|---|
| 우선순위 | 정적 | 동적 |
| 최대 이용률 | ~69.3% | 100% |
| 구현 복잡도 | 낮음 | 높음 |
| 오버헤드 | 낮음 | 높음 |
| 분석 용이성 | 높음 | 중간 |
| 과부하 시 | 예측 가능 | 연쇄 실패 가능 |
운영체제에서 실시간 정책을 적용할 때
POSIX는 실시간 스케줄링 정책을 정의한다.
| 정책 | 설명 |
|---|---|
| SCHED_FIFO | 선입선출, 선점 없음 |
| SCHED_RR | 라운드 로빈 |
| SCHED_OTHER | 일반 시분할 |
| SCHED_DEADLINE | EDF 기반 (Linux) |
Linux에서는 다음과 같이 정책과 우선순위를 설정할 수 있다.
#include <sched.h>
struct sched_param param;
param.sched_priority = 99; // 1-99, 높을수록 우선
// SCHED_FIFO 설정
sched_setscheduler(pid, SCHED_FIFO, ¶m);
// SCHED_DEADLINE 설정 (Linux 3.14+)
struct sched_attr attr;
attr.sched_policy = SCHED_DEADLINE;
attr.sched_runtime = 10000000; // 10ms
attr.sched_deadline = 30000000; // 30ms
attr.sched_period = 30000000; // 30ms
RTOS는 시간 제약을 다루도록 설계된 운영체제다. VxWorks는 항공우주와 국방, QNX는 자동차와 의료, FreeRTOS는 임베디드 환경에 사용된다. RT-Linux는 Linux 실시간 확장이고, RTEMS는 우주항공 분야에서 사용된다.
PREEMPT_RT는 Linux 커널을 실시간 시스템으로 만들기 위한 패치다. 거의 모든 코드에서 선점을 가능하게 하고, 스핀락을 뮤텍스로 대체한다. 인터럽트 핸들러의 스레드화와 고해상도 타이머도 주요 변경 사항이다.
# 실시간 커널 설치 (Ubuntu)
sudo apt install linux-image-rt-amd64
# 실시간 그룹 설정
sudo usermod -a -G realtime $USER
이용률과 요구량으로 검증하는 스케줄 가능성
단일 프로세서에서는 RM과 EDF에 대해 다음 기준을 적용할 수 있다.
RM 충분조건: U ≤ n(2^(1/n) - 1)
EDF 필요충분조건: U ≤ 1
Demand Bound Function(DBF)은 데드라인을 기준으로 요구량을 정밀하게 분석하는 방법이다.
dbf(t) = Σ(⌊(t - Di)/Ti⌋ + 1) × Ci
스케줄 가능: ∀t, dbf(t) ≤ t
멀티프로세서에서는 태스크를 큐와 프로세서에 배치하는 방식도 선택해야 한다. 글로벌 스케줄링은 모든 프로세서가 단일 큐를 사용하며 태스크 마이그레이션을 허용하지만 캐시 성능이 저하될 수 있다. 파티션 스케줄링은 각 프로세서에 태스크를 고정 할당하며 빈 패킹(Bin Packing) 문제와 이용률 손실이 발생한다. 하이브리드 방식은 클러스터 단위로 파티션을 나누고, 클러스터 내부에서는 글로벌 스케줄링을 적용한다.
자동차·항공·멀티미디어에서의 태스크 배치
AUTOSAR 기반 스케줄링은 정적 우선순위를 사용하며, 태스크 활성화 패턴을 정의하고 시간 보호(Time Protection) 기능을 제공한다.
| 태스크 | 주기 | 데드라인 | 우선순위 |
|---|---|---|---|
| 엔진 제어 | 10ms | 10ms | 최고 |
| ABS 제어 | 20ms | 20ms | 높음 |
| 공조 시스템 | 100ms | 100ms | 낮음 |
항공 시스템에서는 DO-178C 인증 요구사항에 따라 결정론적 스케줄링 증명, 최악 실행 시간(WCET) 분석, 스케줄 가능성 증명이 요구된다.
멀티미디어 시스템에서는 프레임 디코딩과 오디오 재생이 주기적 태스크가 되고, 사용자 입력은 비주기적 태스크가 된다.
비디오 30fps: 주기 = 33.3ms
오디오 48kHz: 버퍼 주기 = 10ms
실시간 시스템에서는 태스크의 도착 특성, 우선순위 정책, 이용률과 응답 시간 분석을 함께 다뤄야 한다. RM은 구현과 분석이 비교적 단순한 반면 이용률 한계가 있으며, EDF는 이론적으로 최적이지만 구현 복잡도와 과부하 시 특성을 고려해야 한다.