최근 한 개발자가 C와 ARM 어셈블리어로 직접 작성한 베어메탈 실시간 운영체제(RTOS)인 'TamgaOS'를 공개했습니다. 이 프로젝트는 Cortex-M4 기반의 K64F 보드를 타겟으로 하며, 스케줄러, 태스크별 PSP(Process Stack Pointer) 격리, 뮤텍스(Mutex), 세마포어(Semaphore) 등 RTOS의 핵심 기능을 성공적으로 구현했습니다. 이는 임베디드 시스템의 저수준 동작 원리를 이해하고 직접 구현하려는 개발자들에게 귀감이 될 만한 성과입니다.
TamgaOS는 부트로더, 메모리 레이아웃, 컨텍스트 스위칭, 실행 파일 형식 등 OS의 기본적인 구성 요소를 학습하기 위한 프로젝트로 시작되었습니다. 특히 ARM Cortex-M4 포트에서는 수동으로 작성된 스타트업 파일과 링커 스크립트, 120MHz MCG 클럭 초기화 등을 포함합니다. 선점형 스케줄러는 PendSV를 통해 컨텍스트 스위칭을 처리하며, 뮤텍스와 세마포어는 LDREX/STREX 명령어를 활용하여 동기화 기능을 제공합니다. 드라이버로는 PIT 타이머와 UART가 구현되어 있으며, 현재는 Cortex-M7 기반 STM32H753ZI 보드 포팅 작업도 진행 중입니다. 또한, 실험적으로 Zig와 C를 사용한 x86 포트도 시도되었으나, 현재는 ARM 포트에 집중하고 있습니다.
이러한 베어메탈 RTOS의 직접 구현은 임베디드 시스템 개발 분야에서 중요한 의미를 가집니다. 상용 RTOS에 의존하지 않고 시스템의 가장 낮은 레벨부터 제어할 수 있는 능력은 개발자에게 깊은 이해와 유연성을 제공합니다. 특히, 1인 개발자가 이 정도 수준의 OS를 직접 구현했다는 점은 소규모 팀이나 개인 개발자도 특정 목적에 최적화된 경량 OS를 만들 수 있다는 가능성을 보여줍니다. 이는 IoT 장치나 특수 목적 임베디드 시스템처럼 자원 제약이 심한 환경에서 맞춤형 솔루션을 필요로 하는 경우, 새로운 접근 방식을 모색할 기회를 열어줄 수 있습니다.