[RTOS] 실시간 운영체제 개요

#Embedded#OS

RTOS의 필요성과 특징에 대해서


RTOS(Real Time Operation System, 실시간 운영체제)

실시간 운영체제(RTOS)란 정해진 작업을 정해진 시간 안에 처리하는 것을 보장하는 운영체제이다.

이를 위해 태스크의 우선순위와 실행 조건을 개발자가 명확히 정의하며 스케줄러가 이를 기반으로 동작한다.

평소에 많이 쓰는 Windows와 Linux의 경우에는 실시간성을 보장하지 않는다.

그러면 어떤 분야에서 실시간이 그렇게 필요할까?

  • 국방과 항공 분야 : 미사일과 비행기 궤도 변경을 위한 작업은 오차 없는 정확한 시간에 수행되어야 한다.
  • 자동차 분야 : 긴급 제동을 위한 브레이크 작업 역시 오차 없는 정확한 시간에 수행되어야 한다.

위 예시에서 작업이 제때 수행되지 못한다면 이는 단순 결함으로 끊나지 않고 큰 손실로 이어질 수 있다.

예를들어 자동차에서 에어백이 터져야 되는 상황에서 ECU가 다른 작업들을 처리하느라 에어백 작업을 늦게 처리한다면? 사람의 목숨과 직결되는 위협이다.

Soft(연성) vs Hard(경성)

RTOS는 실시간이 얼마나 중요한지에 따라 Soft RTHard RT로 구분할 수 있다.

우선 DeadLine 이란?

  • 테스크가 작업을 마춰야 되는 시간

Soft RT

  • 데드라인을 못 지킨다면?
  • 치명적이지 않다. 그저 Performance Degradation(성능 저하) 로 판단한다.
  • 평소에 즐겨보는 라이브 방송이 예시이다. (방송이 조금 지연되도 크게 문제가 되지 않는다.)

Hard RT

  • 데드라인을 못 지킨다면?
  • 치명적이다. 이는 System Failure로 간주한다.
  • 항공, 국방, 자동차 분야에 해당한다.

우선순위 기반 스케줄링

RTOS우선순위 기반 스케줄링을 사용하는데 이 스케줄링의 단점은 starvation의 존재이다.

범용OS에는 starvation을 해결하기 위해 Aging 개념을 도입하여 오랫동안 CPU의 할당을 받지 못한 태스크의 우선순위를 높여서 해결하지만

RTOS에서는 작업 도중 우선순위를 변경하지 않는다. starvation이 발생하지 않도록 태스크들의 우선순위를 사전에 신중하게 정해야 된다.

그냥 베어메탈(Baremetal)에서 개발하면 안되나?

베어메탈(Baremetal)은 운영체제가 없는 환경에서 MCU가 직접 프로그램을 실행하는 방식이다. 일반적으로 무한 루프 구조를 통해 정해진 순서로 작업을 반복하며 인터럽트를 통해 외부 이벤트에 즉시 대응한다.

태스크 간 Context Switch가 없어 오버헤드가 적기 때문에 구조가 단순한 시스템에서는 더 빠른 응답성을 가질 수 있다.

실제로 태스크의 수와 인터럽트 개수가 적고 복잡도가 낮은 경우에는 베어메탈 환경이 더 적합할 수 있다.

그러나 태스크 수가 증가하고 각 작업의 실행 시점과 우선순위를 정밀하게 관리해야 하거나 태스크 간 동기화(Mutex, Semaphore)가 필요한 경우에는 운영체제의 도움이 필요하다.

예를 들어 자동차 ECU와 같이 다양한 기능을 동시에 수행해야 하는 시스템에서는 멀티태스킹과 동기화를 위해 RTOS가 사용된다.

따라서 단순한 시스템에서는 베어메탈로 다수의 태스크와 정밀한 타이밍 관리가 필요한 경우에는 RTOS로 개발하는 것이 바람직하다.