지식이 늘었다/RTOS

RTOS란 무엇인가? (1)

PurpleGuy101 2025. 4. 7. 13:09

(0)

참고자료

Learn Running/Porting FreeRTOS Real Time Operating System on STM32F4x and ARM cortex M based Mircocontrollers

(https://www.udemy.com/course/mastering-rtos-hands-on-with-freertos-arduino-and-stm32fx/)

 

(1)

 

STM32, FreeRTOS를 이용하여 

RTOS에 대해서 배워보자.

 

(2)

 

- RTOS란 무엇인가?

RTOS란, Real-Time Operating System의 두문자어이다.

Real-time 이라는 단어 때문에 실시간으로 빠른 처리가 된다는 오해를 받으나, 

빠른 것(throughput)과는 크게 관련이 없다.

 

- Real time system의 핵심은

핵심은 실시간 성능의 보장하여 주어진 시간내에 작업이 수행되는 것을 보장하는 것에 있다.

- RTOS는 연산이 논리적으로 옳은 것을 검증할 뿐만 아니라,

결과물이 생성된 시간이 데드라인을 넘지 않았는지를 검증한다.

(넘으면 오류를 발생시킨다)

 

(3)

 

- OS수업을 듣다보면, 스케쥴링에 대해 배우고, Priority Queue를 배우면서

Starvation에 관한 내용을 배우게 된다.

 

- 일정 단위시간 동안 Task를 다 처리하지 못한 경우,

CPU자원을 Context Switch를 통해서 다른 Job에게 넘겨주게 되는데,

이 과정에서 응답시간Response Time이 지연되고

경우에 따라 CPU자원을 할당받지 못하는 Starvation 상태가 되기도 한다.

 

- 우리가 유튜브보고 게임하는 수준에서는 크게 문제가 없지만,

제시간 내에 빠르게 응답해야하는 시스템에서

이러한 예측불가능한 응답 시간은 큰 문제가 된다.

ex) 안전을 위한 제어시스템.

특히 군용, 차량안전, 산업용 기계, 금융시장 트레이딩, 의료용 등등

 

 

- 이렇듯이, RTOS는 이러한 예측불가능한 응답시간을 제어하고

비교적 일정한 작업의 완료를 보장하고 신뢰성을 높인 OS이다.

 

기존의 윈도우, Mac, 리눅스와 같은 General Purpose Operating System, GPOS, 범용OS에서

엄격하게 다루어졌던 인터럽트 관리, 내부 시스템 예외, Critical Section의 처리

스케쥴링 메커니즘 등이 

 

RTOS에서는 상당히 간략화된다.

 

(5)

 

현재 활발하게 사용되고 있는 RTOS로는

VxWorks, QNX, freeRTOS, Integrity 등이 있다.

 

VxWorks는 인텔에서 나온 10년이상의 역사가 있는 RTOS이고, 

유료라이센스를 필요로하며, 산업에서 가장 널리 사용된다.

 

QNX는 블랙베리에서 나온 로보틱스, 메디컬 쪽에서 사용되는 RTOS이다.

 

FreeRTOS는 이 코스에서 사용할 소프트웨어이다.

무료로 사용가능하다. 

 

(6)

 

GPOS(범용OS)는 High throughput, High Performance를 지향하도록 만들어졌다.

이들은 MLQ 혹은 MLFQ, Multi Level Feedback Queue를 사용하는데,

이 과정에서 우선순위 역전(Priority Inversion)이 일어나기도 한다.

 

우선순위가 높은 작업이 본래라면 더 빨리 실행되고 끝나야하지만

더 낮은 우선순위의 작업이 특정 Critical Section같은 자원을 점유하고 있어서

대기(*serve)해야하는 상황이 발생한다.

 

GPOS도 이러한 현상을 방지하기 위해 Priority Boosting을 하기도 한다.

 

(7)

 

다만 RTOS는 이러한 상황에 대해서

Higher Priority Task의 대기Serving가 없다.

Low priority thread execution을 바로 정지시키고, 바로 execute해버린다.

 

그리고 이러한 방식의 작업처리가 무조건적으로 GPOS에 비해서

Throughput, 성능이 떨어지는 것도 아니다. 상황에 따라 다르다.

 

그저 예측가능성Predictability, 시간결정적Time Deterministic 한 성질이 

탑재된 운영체제일뿐이다.