정해진 시간 안에 반드시 응답하는 것을 보장하는 운영체제(Real-Time OS).
"빠른 OS"가 아니다 — 가장 중요한 오해
일반 OS(리눅스) : 평균 처리량이 좋다. 가끔 100ms 늦어도 괜찮다
- RTOS — : 평균은 느려도 된다. 대신 "최악에도 1ms 안에"를 보장한다
핵심은 속도가 아니라 예측 가능성(determinism) 이다. "평균 1μs지만 최악 10ms"보다 "항상 100μs"가 실시간에서는 낫다.
하드 실시간 vs 소프트 실시간
| 데드라인을 놓치면 | 예 | |
|---|---|---|
| 하드 | 시스템 실패. 인명·재산 피해 | 에어백, ABS, 심박조율기, 모터 제어 |
| 펌(firm) | 결과가 무가치해짐 | 영상 프레임 (늦으면 버림) |
| 소프트 | 품질 저하 | 오디오 재생, UI 반응 |
하드 실시간에서는 "평균 99.99% 성공"이 실패다. 100%여야 한다.
무엇을 제공하나
- ① 태스크 관리 — — 여러 작업을 독립적인 스레드로
- ② 우선순위 스케줄링 — 급한 것부터 (선점형)
- ③ 동기화 — — 뮤텍스, 세마포어, 이벤트 플래그
- ④ 통신 — — 큐, 메일박스
- ⑤ 시간 관리 — — 지연, 주기 실행, 타임아웃
- ⑥ 메모리 관리 — — 고정 크기 풀
베어메탈과 무엇이 달라지나
// 베어메탈 — 슈퍼루프
while (1) {
read_sensor(); // 10ms
update_display(); // 50ms ← 이게 도는 동안 센서를 못 읽는다
handle_comm(); // 5ms
}
// 최악 응답 = 전체 루프 시간 (65ms)
// RTOS
xTaskCreate(sensor_task, …, priority 3); // 급한 것
xTaskCreate(comm_task, …, priority 2);
xTaskCreate(display_task, …, priority 1); // 느긋한 것
// 센서 태스크는 디스플레이를 중단시키고 즉시 실행된다
우선순위가 다른 작업을 섞을 때 RTOS의 가치가 나온다.
언제 도입하나 — 판단 기준
RTOS가 필요한 신호 ✅ 응답 시간 요구가 다른 작업이 여럿 섞여 있다 ✅ 슈퍼루프의 상태 머신이 감당 못 할 만큼 복잡해졌다 ✅ 여러 통신 프로토콜을 동시에 다뤄야 한다 ✅ 블로킹 대기가 많다 (RTOS면 대기 중 다른 태스크가 돈다)
베어메탈로 충분한 경우 ❌ 단순 반복 (센서 읽고 출력) ❌ RAM이 극도로 부족 (태스크마다 스택이 필요) ❌ 인증 부담 (검증할 코드가 늘어난다) ❌ 팀에 RTOS 경험이 없고 일정이 촉박
"복잡도를 감당하려고" 도입하는 것이지 "빨라지려고"가 아니다.
대표 RTOS
| 특징 | |
|---|---|
| FreeRTOS | 가장 널리 쓰임. MIT 라이선스. AWS가 관리 |
| Zephyr | 리눅스 재단. 디바이스 트리, 드라이버 모델이 풍부 |
| ThreadX | Microsoft. 안전 인증(SIL4) 획득 |
| RT-Thread | 중국권에서 강세 |
| μC/OS-III | 인증 문서가 잘 갖춰짐 |
도입 비용
-
RAM — : 커널 수 KB + 태스크마다 스택 (수백 B ~ 수 KB) 플래시: 커널 5~15KB
-
CPU — : 컨텍스트 스위칭 오버헤드, 틱 인터럽트 복잡도: 경쟁 조건, 데드락, 우선순위 역전이라는 새 문제군
RTOS는 새로운 문제를 가져온다. 베어메탈에서는 없던 데드락·우선순위 역전·스택 오버플로를 다뤄야 한다.
스케줄링 방식
- 선점형 우선순위 — : 높은 우선순위가 준비되면 즉시 전환 ← RTOS의 기본
- 협조형(cooperative) : 태스크가 자발적으로 양보할 때만 전환
- 라운드 로빈 — : 같은 우선순위끼리 시간 분할
FreeRTOS는 configUSE_PREEMPTION으로 선택하며,
같은 우선순위 태스크 간에는 configUSE_TIME_SLICING으로 라운드 로빈을 켠다.
면접 답변 골격
"RTOS는 빠른 OS가 아니라 최악 응답 시간을 보장하는 OS입니다. 응답 요구가 다른 작업이 섞여 슈퍼루프로는 급한 일을 제때 못 하게 될 때 도입합니다. 대신 경쟁 조건·우선순위 역전 같은 새 문제와 RAM 비용이 생기므로, 단순한 시스템에는 베어메탈이 낫습니다."