RTOS vs GPOS 비교: 프로젝트에 적합한 OS 선택 가이드
범용 운영체제 (GPOS)
GPOS는 많은 프로세스를 관리하고 단위 시간당 실행을 완료할 수 있는 운영체제입니다. 이를 처리량(throughput)이라고 부릅니다. 때로 범용 OS는 고우선순위 스레드 실행을 지연시키고 5~6개의 저우선순위 프로세스를 실행하기도 합니다.
컴퓨터 워크스테이션
필요한 높은 처리량을 달성하기 위해 고우선순위 프로세스 1개 실행 대신 저우선순위 태스크 5개를 먼저 수행합니다. 즉, 여러 저우선순위 태스크가 실행을 위해 큐에 대기 중이면 GPOS는 높은 처리량을 유지하기 위해 이 태스크들을 먼저 실행시킵니다.
대부분 범용 운영체제는 공정성 정책(fairness policy)을 사용해 프로세스와 스레드를 CPU로 보냅니다.
이 정책은 데스크톱과 서버 애플리케이션이 효율적으로 작동하는 데 필요한 전반적인 높은 출력을 GPOS가 제공하게 합니다.
하지만 고우선순위 태스크나 시간 임계적 스레드가 저우선순위 스레드보다 먼저 실행됨을 보장할 수 없습니다. 따라서 범용 운영체제는 동시에 여러 태스크를 수행하는 기기에 더 적합합니다.
개인용 컴퓨터(PC)
실시간 운영체제 (RTOS)
반면 RTOS는 시간 임계적 애플리케이션을 높은 정밀도로 처리하도록 설계되었습니다. 운영체제가 이 범주에 속하려면 수행하는 각 임계 연산에 대해 최대 시간 한계가 있어야 합니다. 즉, 시간 한계가 있는 시스템(time-bound system)입니다.
실시간 운영체제는 꽤 복잡합니다. 하지만 걱정 마세요, 알기 쉽게 풀어드리겠습니다. RTOS에는 세 가지 기본 기능이 있습니다: 스케줄러, RTOS 서비스, 동기화 및 메시징.
스케줄러 (The Scheduler)
스케줄러에는 세 가지 상태가 있습니다: 첫째는 실행 준비 상태(ready to run)로, 필요 시 실행 상태(running state)로 전환될 준비된 태스크에 적용됩니다. 둘째는 실행 상태(running state)로, 태스크가 실행 중일 때 적용됩니다. 셋째는 차단 상태(blocked state)로, 태스크가 실행될 수 없어 차단 상태로 보내질 때 적용됩니다.
또한 세 가지 스케줄링 기법이 있습니다:
선점형 태스크 스케줄링 / 우선순위 기반 스케줄링 (Pre-emptive Task Scheduling / Priority-Based Scheduling)
선점형 스케줄링 기법은 우선순위 의존적 시간 할당을 포함합니다. 여기서 각 태스크에 고유한 우선순위 레벨을 할당할 수 있습니다.
협조형 스케줄링 (Co-operative Scheduling)
여기서 각 태스크에 고정 시간 슬롯을 할당할 수 있습니다. 하지만 태스크가 실행을 완료하지 못하면 생성된 데이터를 잃고 다음 차례를 기다려야 합니다.
마지막으로 커널은 태스크 생성, 태스크 우선순위 변경, 태스크 상태 변경, 태스크 삭제를 관리합니다.
RTOS 서비스
모든 운영체제의 중심에는 커널(kernel)이 있습니다. 커널은 운영체제 자원 관리와 할당을 책임집니다. 하지만 태스크가 항상 CPU의 관심을 끌 수는 없으므로, 커널은 시간 서비스, 입출력 서비스, 인터럽트 처리 서비스, 메모리 관리 서비스, 장치 관리 서비스 같은 다른 서비스도 제공해야 합니다.
커널 다이어그램
메시징과 동기화
메시징 기능은 태스크 간 RTOS가 다른 시스템과 통신하는 방법을 제공합니다. 메시징 서비스에는 메일박스, 파이프, 메시지 큐, 이벤트 플래그, 세마포어가 포함됩니다.
메일박스, 메시지 큐, 파이프는 태스크 간 메시지를 전송할 수 있습니다. 이벤트 플래그는 태스크 간 모든 활동을 동기화할 수 있습니다. 또한 세마포어는 공유 자원에 대한 접근을 동기화할 수 있습니다.
RTOS (실시간 운영체제) vs GPOS (범용 운영체제)
RTOS와 GPOS의 기본 차이는 애플리케이션의 성격(시간 임계적인지 아닌지, 단일 목적인지 다중 목적인지)입니다. 시간 임계적 시스템의 좋은 예는 현금 자동 입출금기(ATM)입니다. 확인 버튼을 누른 후 돈을 받기까지 4~5초 기다립니다. 확인 버튼을 누른 후 5분을 기다리길 원하는 사람은 아무도 없습니다.
ATM
반면 PC는 다목적이라 시간 임계적이지 않은 시스템입니다. 다양한 애플리케이션을 동시에 실행할 수 있습니다. 게다가 PC나 스마트폰에서는 무엇을 하는 데 정해진 시간이 없습니다. 예를 들어 문서 저장은 경우에 따라 초 단위 또는 분 단위가 걸릴 수 있습니다. 이는 실행 중인 프로세스와 태스크 수에 따라 달라집니다.
스마트폰
따라서 범용 운영체제는 리눅스, 윈도우 등 비시간 임계적 애플리케이션과 시스템에 적합합니다.
리눅스 시스템
반면 실시간 운영체제는 빠르고 예측 가능한 응답이 필요한 시간 임계적 애플리케이션에 적합합니다. 예: UCOS, VxWorks 등.
두 운영체제 간 차이를 더 설명하는 카테고리들:
태스크 스케줄링
태스크 스케줄링 카테고리에서 GPOS는 우선순위에 초점을 두지 않습니다. 높은 처리량을 제공하는 방식으로 스케줄링을 처리합니다. 반면 RTOS에서는 스케줄링이 항상 우선순위 중심입니다. GPOS와 달리 모든 고우선순위 프로세스가 저우선순위 태스크보다 먼저 실행됩니다.
윈도우
레이턴시 문제
GPOS를 괴롭히는 주요 문제 중 하나입니다. 대부분 GPOS는 언바운드 디스패치 레이턴시(unbounded dispatch latency)를 가집니다. 즉, 스케줄할 스레드가 많을수록 레이턴시가 누적됩니다. RTOS는 모든 스레드와 프로세스가 바운디드 레이턴시(bounded latencies, 설정된 시간 제한 내 실행)를 가지므로 이런 문제가 없습니다.
경제적 및 하드웨어적 요인
RTOS는 자판기나 ATM 같은 독립형 저사양 시스템에 적합합니다. 게다가 GPOS에 비해 RTOS는 작고 가볍습니다. 또한 GPOS는 워크스테이션이나 개인용 컴퓨터 같은 범용 고사양 기기에 적합합니다.
고사양 기기
선점 가능 커널 (Preemptible Kernel)
고우선순위 프로세스 우선 실행과 관련해 주요 문제 중 하나는 선점 가능 커널입니다. 커널이 선점 불가능하면 이 커널의 요청이 즉시 다른 모든 실행 중인 프로세스를 덮어씁니다. RTOS의 커널은 선점 가능하지만 GPOS의 커널은 그렇지 않습니다.
즉, GPOS에서 고우선순위 프로세스 실행이 커널 콜을 선점할 수 없지만, RTOS에서는 고우선순위 프로세스가 필요시 항상 저우선순위 태스크를 선점하고 커널 콜 외부 태스크를 외부 프로세스로 취급합니다.
RTOS vs GPOS - 임베디드 제품 개발을 위한 RTOS 평가 및 선택
임베디드 시스템의 모든 요구사항에 부합하는 임베디드 RTOS를 평가하기 전, 예비 RTOS가 몇 가지 중요 기능을 지원하는지 확인하세요.
편의를 위해 이러한 핵심 기능의 개요를 정리했습니다:
RTOS vs GPOS - 스케줄러
운영체제 스케줄러는 OS가 각 태스크를 언제 실행할지 결정하는 임무를 맡습니다. 스케줄러는 가용 자원과 우선순위에 따라 태스크를 일시중단하고 재개할 수 있습니다. 따라서 임베디드 RTOS에는 내장 스케줄러가 있어야 합니다. 이는 RTOS가 태스크를 실시간으로 실행할 수 있게 합니다.
소프트웨어 타이머
이름에서 알 수 있듯 소프트웨어 타이머는 지정된 시간 윈도우 내 함수 실행을 가능하게 합니다. RTOS용 소프트웨어 타이머를 수동으로 만들기는 쉽지 않고 권장되지 않으므로, 내장 소프트웨어 타이머가 있는 RTOS를 선택하세요.
RTOS vs GPOS - 큐잉 메커니즘
큐는 태스크 간 정보 교환을 가능하게 합니다. 내장 큐잉 메커니즘이 있는 RTOS는 태스크 간 메시지 교환을 가능하게 합니다.
실행 추적 도구 (Execution Trace Tools)
추적 도구로 실시간 시스템의 실시간 동작을 쉽게 관찰할 수 있습니다. 따라서 개발팀이 오류와 태스크 실행을 추적하고 감지할 수 있습니다.
RTOS vs GPOS - 낮은 메모리 풋프린트 (Low Memory Footprint)
RTOS를 MCU 플랫폼에 통합해야 하므로, 예비 RTOS는 낮은 메모리 풋프린트를 가져야 합니다. 즉, 총 크기가 MCU 전체 크기의 10%를 넘지 않아야 합니다.
RTOS 아키텍처
마무리
요약하자면, RTOS와 GPOS 모두 각자 만들어진 애플리케이션에서 잘 작동합니다. RTOS가 GPOS보다 처리량이 적을 수 있지만, 그렇다고 처리량이 낮은 건 아닙니다.
GPOS가 많은 무거운 프로세스를 처리하는 동안, RTOS는 시스템 부하에 상대적인 처리량으로 더 적은 태스크를 처리합니다.
하지만 RTOS의 주요 관심사는 높은 처리량이 아니라 더 예측 가능한 실행 패턴과 적시 실행입니다. GPOS는 그 반대입니다. 자, GPOS vs RTOS에 대한 모든 것을 마무리합니다. 의견이나 질문이 있으시면 언제든 연락 주세요. 기꺼이 도와드리겠습니다.