Real Time OS의 줄임말 (실시간 운영체제)
real time의 뜻은 현재 시간과 정확하게 동기화되어 작동하는 것이 아니라, 주어진 작업을 정해놓은 시간 안에 작업을 완료하는 것
임의의 정보나 데이터가 입력되었을때 주어진 시간 안에 작업을 완료하고 결과를 출력하는 것
(결과값이 예측 가능하고 일정한 시간을 요구하는 곳에 쓰이는 운영체제)
RTOS는 다른 리눅스나 윈도우처럼 효율성을 중요시하기보다는 시간 안에 작업을 끝내는 것을 더 중요시 여김 (우선순위를 신경써야함)
특히 임베디드 시스템에서 자주 사용된다. 주로 특정 작업만 하도록 설계된 경우가 많고, 시간 안에 처리하는 것이 중요한 일에 많이 사용되기 때문이다. 자동차나 항공기에 들어가는 임베디드 시스템
범용적으로 사용되는 컴퓨터의 OS는 General Purpose OS인 GPOS가 사용된다.
RTOS 기반의 코딩은 스레드 프로그래밍과 흡사하다. main 함수는 중요하지 않고 어떤 함수를 등록하면 알아서 잘 돌아간다.
RTOS는 크게 hard, soft로 나뉜다.
Hard RTOS는 어떤 작업을 일정한 시간 안에 반드시 수행, 처리해야하며 그 시간이 지난 경우에는 결과값이 아무리 정확해도 소용이 없는 것 (군사 장비나, 비행기)
Soft RTOS는 주어진 시간 안에 처리하면 좋지만, 그렇지 못한 경우에 그 시간에서 약간 경과한 후의 값도 인정하는 경우 (스마트폰 gps, 타이머 기능)
프로세서가 resource가 되서 workload(task)를 해결
RTOS 스케줄러는 CPU를 잘 활용해서 TASK n개를 어떻게 잘 실행시킬지 결정
RTOS의 task는 static이다. 미리 무슨 프로그램을 실행시킬지 결정되어 있다.
정해진 일을 반복하고 새로운 프로그램이 올라가진 않는다.
RTOS 스케줄러의 목적은 모든 task의 요구 사항을 시간 안에 끝내는 것임
job은 박스 하나 하나를 뜻하고, task는 job의 묶음을 뜻한다.
OS가 해당 task를 실행하려고 task를 release를 하게 된다.
어떤 job이 release가 되면, 다른 job도 동시에 release가 될 수 있다.
이떄 cpu가 1개라면 둘 중 하나는 실행이 미뤄줘야 한다.
job이 미뤄지지만 RTOS에서는 시간 안에 작업을 끝내는 것이 중요해서 deadline이라하는 job이 밀려도 되는 line이 있다.
당연히 deadline 이상 밀리면 위험하고, task는 deadline 이전, release time 이후에 실행되면 된다.
Zephyr OS도 RTOS의 한 종류로 리소스가 제한적인 장치 및 IOT를 타겟으로하며, 리눅스와 매우 가까운 OS이다.
많은 수의 하드웨어 장치를 지원
안전하고, 오픈소스, 성능이 좋고, 모듈식, 다양한 하드웨어도 지원함
Zephyr OS의 contribution
aws의 FreeRTOS의 contribution
CMake는 빌드 파일을 생성해주는 프로그램
CMake를 통해서 프로젝트를 빌드하는 것이 아닌, CMake를 통해서 빌드 파일을 생성하면, 빌드 프로그램을 통해서 프로젝트를 빌드 하는 것
CMake를 사용하는 모든 프로젝트에는 반드시 프로젝트 최상위 디렉토리에 CMakeList.txt파일이 있어야 한다.
빌드 시스템 CMake는 제퍼 커널과 함께 애플리케이션을 빌드하는데 사용된다.