GN⁺: 마이크로소프트, ThreadX(Azure RTOS) 오픈소스화 발표
(theregister.com)- Microsoft가 Express Logic 인수를 통해 획득한 실시간 운영 체제인 ThreadX를 오픈 소스로 공개함.
- ThreadX RTOS와 이를 포함하는 Azure RTOS 개발 스위트가 Eclipse Foundation에 기부되어 Eclipse ThreadX로 알려지게 되며, MIT 라이선스 하에 사용 가능해짐
- 실시간 운영 체제(RTOS)는 다양하지만, ThreadX는 12억 대 이상의 장치에서 사용되고 있으며, Raspberry Pi를 포함한 여러 장치에서 핵심적인 역할을 함
Raspberry Pi와 ThreadX의 관계
- ThreadX는 Intel의 칩 내 관리 엔진과 Raspberry Pi의 펌웨어를 구동하는 데 사용됨.
- Raspberry Pi 1, 2, 3에서는
bootcode.bin
으로, Pi 4와 400에서는start*.elf
로 불리며, 이는 GitHub과 Debian에 포함되어 있지만, 소스 코드가 공개되지 않은 프로프라이어터리 "blob"임 - Raspberry Pi의 VideoCore GPU에서 실행되며, Arm 코어는 GPU에 종속된 슬레이브 장치로 작동함
Microsoft의 ThreadX 인수와 오픈 소스화의 의미
- Microsoft는 2019년 ThreadX가 21주년이 되자 Express Logic을 인수하고 Azure RTOS로 리브랜딩함
- 이 인수는 AWS가 FreeRTOS의 관리권을 인수한 것에 대한 대응으로 보이며, 원 개발자 William Lamie는 새 회사를 설립하여 POSIX 호환 스레드를 가진 "다섯 번째 세대" RTOS인 PX5OS를 판매중
- ThreadX는 검증된 제품으로, 일부 버전은 TÜV Functional Safety 인증을 받았으며, 이는 일부 고객에게 매력적임
GN⁺의 의견
- 이 기사에서 가장 중요한 점은 Microsoft가 ThreadX RTOS를 오픈 소스로 공개했다는 것이며, 이는 개발자 커뮤니티에 더 많은 기회를 제공하고 기술 혁신을 촉진할 수 있는 중요한 변화임.
- 오픈 소스화는 Raspberry Pi와 같은 장치의 소프트웨어 스택이 완전히 오픈 소스가 될 가능성을 열어, 많은 사람들에게 더 매력적인 선택지가 될 수 있음을 의미함.
- 이러한 변화는 기술 애호가와 전문가 모두에게 흥미로운 소식이며, 오픈 소스 생태계의 성장과 혁신에 긍정적인 영향을 미칠 것으로 기대됨.
Hacker News 의견
- "Azure RTOS"는 Microsoft가 Amazon이 FreeRTOS를 인수한 후 서둘러 구입한 것이다. Bill Lamie는 PX5를 시작하고 새로운 경량 임베디드 RTOS 작업을 위해 대부분의 인재를 데려갔다. Microsoft가 이러한 조치를 취한다면 Azure RTOS와 IoT 노드에 대한 로드맵에서 벗어나는 것일 수 있다. ThreadX는 FreeRTOS보다 훨씬 더 많은 생태계를 가지고 있으며, Raspberry Pi 이외의 것들에서도 작동한다. Renesas는 자신들의 SoC를 구매하면 무료로 제공했다.
- 안전 인증은 특히 흥미롭다. "안전 소프트웨어"를 개발하는 것은 많은 작업을 필요로 한다. 오픈소스이면서 안전 인증을 받은 RTOS를 가지는 것은 꽤 좋은 일이다. 인증을 유지하려면 어딘가에서 투자가 이루어져야 할 것이다. 안전 표준을 이해하고, 올바른 개발 프로세스를 구축하고, 소프트웨어가 변경됨에 따라 이를 유지하는 것은 단순한 코드 작성과 실행만큼 간단하지 않다. 취미로 할 수 있는 소프트웨어 개발 종류는 아니다. Microsoft가 그 개발 노력에 자금을 지원하기를 바란다. FreeRTOS는 안전 인증을 받지 않았지만, SAFERTOS는 같은 API를 가진 상업적 구현으로 안전 인증을 받았다.
- ThreadX를 사용했을 때 매우 마음에 들었다. "운영 체제"라고 부르는 것은 인터럽트 서비스 루틴과 스레드 생성, 메모리 할당 관리 등의 기능을 제공하는 함수들로 구성되어 있다는 점에서 관대한 표현이다. ThreadX는 매우 가볍고 작업을 수행하기에 좋았다. tx_thread_create, tx_malloc 등의 함수를 호출하고, 큐, 세마포어, 뮤텍스 등을 사용했다. ThreadX가 여전히 살아있는 것을 보니 반갑다. 실시간 전력/팬/열 제어 루프를 수행해야 했기 때문에 특정 작업이 언제 발생하는지 제어할 수 있어야 했고, 문제를 감지한 후 일정 시간 내에 명령을 내려 대응하거나 시스템을 안전하게 유지해야 했다.
- Azure가 RTOS를 가지고 있는 이유에 대해 궁금해하는 사람들을 위해, Microsoft는 2019년에 Express Logic과 그들의 ThreadX RTOS를 인수했다. ThreadX는 많은 리소스 제약이 있는 마이크로컨트롤러에서 사용되고 있다. Azure 브랜딩은 IoT 기기가 클라우드와 통신한다는 점 외에는 별로 의미가 없어 보인다.
- 현재 버전만 GitHub에 올라와 있으며, VideoCore 버전의 흔적은 보이지 않는다. Raspberry Pi Foundation이 자체 버전의 소스 코드를 공개할 수 있는 허가를 받을 수 있을지도 모른다는 희망이 있다.
- 이 코드는 좋지만, 휴대성을 높이고 프로그래머 친화적으로 만들 수 있는 여러 방법이 있다고 생각한다. 특히 포팅된 어셈블리 코드 부분이 그렇다. 데이터 구조체에 대한 인덱스를 수정하기 어려우므로 구조체 변경이 쉽지 않다. C 구조체와 어셈블리 코드 인덱스가 동기화되어 있지 않으면 시스템이 충돌할 수 있다. 어셈블리 코드에 있는 인덱스를 매크로로 만들면 수정하기 쉬울 것이다. 어셈블리용 헤더와 C 코드용 헤더를 만들고 매크로로 구조체를 정의하면 된다. 이렇게 하면 C 코드와 어셈블리 코드가 동기화될 것이다. 단점은 이 매크로로 구조체를 정의해야 한다는 것이지만, 이는 어셈블리와 C 또는 더 높은 수준에서 사용되는 구조체에만 해당된다.
- ThreadX에 대해 들어본 지 오래되었다. 약 20년 전에 ThreadX 기반 제품에서 작업했다. 실시간 스케줄링이나 빠른 부팅이 필요하지 않은 애플리케이션 장치였지만, ThreadX를 선택한 결정은 내가 관여할 수 있는 수준을 넘어섰다. 심지어 별도의 "고급" 제품이 있었는데, 그것은 임베디드 리눅스를 실행했고 작업하기에 즐거웠다. ThreadX를 사용하여 개발, 디버그, 테스트하는 데 2배에서 3배 더 오래 걸렸다. 커널에서 의존하게 되는 많은 편의 기능들이 ThreadX에는 존재하지 않았기 때문이다. 매우 단순한 안전-중요 장치에만 사용할 것을 권장한다.
- 이것은 실제로 큰 거래이며, Eclipse Foundation이 이를 관리하는 것은 멋진 일이다. Microsoft는 이에 대한 칭찬과 찬사를 받을 만하다. 그들은 좋은 기록을 가지고 있으므로 매우 낙관적이지만, 이 프로젝트는 많은 지속적인 지원이 필요할 것이다. 이제 Microsoft 혼자만의 책임은 아니지만, 일이 움직이는 동안 더 큰 부담을 짊어질 수도 있다.
- Deskjet 펌웨어 작업을 할 때 ThreadX는 괜찮은 RTOS였다. 당시 오픈소스 OS와 특히 도구는 작업에 적합하지 않았다. 하지만 지금은 상황이 많이 달라졌고, 대안이 있다.
- ThreadX는 오픈소스가 아니다. 소스 코드는 공개되어 있지만 평가판, 즉 독점 라이선스로 제공된다.