리얼타임 운영체제(Real-Time OS, RTOS)는
주어진 작업을 정해진 시간 안에 반드시 수행해야 하는 시스템을 지원하는 운영체제를 말한다.
시간 제한이 있는 작업을 우선적으로 처리하여,
항공우주, 자동차, 의료 등과 같은 분야에서 많이 사용된다.
RTOS에서는 작업에 시간에 관련된 우선순위를 설정한다.
대표적으로는 고정 우선순위 기반인 Rate Monotonic Scheduling(RMS)와
동적 우선순위 기반인 Earliest Deadline First(EDF)가 있다.
물론 일반 OS에서도 우선순위 기반 스케줄링이 있지만
여기에는 약간의 차이가 있다.
일반 OS에서는 우선순위가 높다고 해서 반드시 정해진 시간 안에 완료돼야 하는 것은 아니다.
또한 스케줄링 알고리즘이 대부분 응답 시간 최적화와 효율성을 중점으로 설계되어 있다.
그에 반해 RTOS에서는 실시간성을 보장하기 위해 스케줄링이 핵심적이다.
RTOS에선 우선순위가 절대적으로,
높은 우선순위의 작업은 무조건 먼저 실행되어야 한다.
이를 지원하기 위해 선점형으로 높은 우선순위의 작업이 준비되면
현재 작업을 멈추고 높은 우선순위를 먼저 실행한다.
RTOS에서의 스케줄링은 결정론적 특성을 가진다.
이는 주어진 작업들이 데드라인을 만족할 수 있는지를 사전에 분석하여,
시스템이 예측 가능한 방식으로 동작하도록 보장하는 것을 의미한다.
이를 위해 RTOS에서는 작업의 실행 순서를 미리 계획하고,
일정한 규칙에 따라 스케줄링을 수행한다.
RTOS는 외부 이벤트에 신속하게 반응해야 하므로,
인터럽트의 처리 지연을 최소화하여 제공한다.
RTOS에서는 인터럽트의 빠른 처리를 위해
ISR에서 필수적인 작업만 수행하여 속도를 높인다.
나머지 부수적인 작업들은 일반 작업들에 위임한다.
RTOS는 인터럽트에도 우선순위를 설정하여,
더 중요한 인터럽트가 덜 중요한 인터럽트의 처리를 중단시키고 실행될 수 있다.
이처럼 RTOS는 여러 기법들을 통해 주어진 작업이 시간 안에 끝날 수 있게 지원해준다.
따라서 실시간성이 중요한 시스템,
항공기의 비행 제어 시스템, 인공호흡기, 라우터, 스위치 등
주로 임베디드 시스템에서 많이 사용된다.