検索
連載

マイクロソフトが買収した「ThreadX」あらため「Azure RTOS」はまだ実体がないリアルタイムOS列伝(4)(2/3 ページ)

IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第3回は、マイクロソフトが2019年4月に買収し、名称を「Azure RTOS」に変更した「ThreadX」を取り上げる。

Share
Tweet
LINE
Hatena

Threadそのものの管理もシンプル

図3
図3 当たり前だが、1CPUの場合はExecute Stateにあるのは常に1つだけで、他のThreadはReadyないしSuspendedに置かれる。SMPの場合、CPUの数だけExecute Stateでの実行できる(これはThreadX/SMPの導入で可能となる)(クリックで拡大)

 Thread(スレッド)そのものの管理もシンプルである(図3)。通常のThreadは、Ready State(レディ状態)に置かれ、CPUの割り当てを待っている。そして、イベント待ちなどの待機中には、Suspended State(サスペンド状態)に置かれ、イベントが来るとReady Stateに推移するという形だ。

 さて、最小で2KBというだけのことはあり、ThreadXのカーネルそのものはThreadの制御に加えてBlock MemoryやByte Memory、Event Flag、Interrupt Control、Mutex、Queue、Semaphore、Time、Timerなどの各サービスが提供される「だけ」である。

 ところでThreadXでは、いわゆるTask/Processに当たるものが存在しない。名前の通りThreadが実行単位となっている。このため、ThreadXで動く全てのプログラム(カーネル含む)は同一のメモリ空間を共有して動作することになる。これは、本格的な組み込みシステム(1つのプロセッサ上で多数のアプリケーションが共同して動くようなもの)では安全性やセキュリティの観点で物足りないものとなるが、ThreadXは省メモリのMCU上で動かすことを志向しているので、Threadのみの実装で十分と割り切られている。

 ちなみに、Taskに相当する概念(要するに処理分割の際の名前をどうするかという話)に対応するものとして「Name Thread」というものが提供される。また、いわゆるTask的なものをどうしても利用したい、というケースに向けて「ThreadX Modules」という技術も提供している(図4)。

図4
図4 何というか、メモリオーバーレイ的な感じである。といっても昨今の開発者はそもそもメモリオーバーレイの技法そのものを知らないかもしれないが……(クリックで拡大)

 これを利用して、以下の機能が標準で利用可能となっている。

  • FileX(FAT互換のFile System)
  • GUIX(GUIおよびGUI開発ツールのGUIX Studioのセット)
  • NetX(IPv4のTCP/IP Stack)
  • NetX Duo(IPv4/v6のDual Stack)
  • USBX(USB Host/Device/OTG機能の提供)
  • TraceX(Trace機能の提供)

 ちなみにこの他のもの、例えばUARTに関してはMCUベンダーがThreadX用のドライバを作成し、これ経由でアクセスすることになる。図5はThreadXを標準サポートする「Renesas Synergy」向けの場合の模式図だが、MCUごとに搭載される標準デバイスが異なるので、これらは個々のデバイス向けのBSPでのサポートという形になっている。

図5
図5 こう見ると「ThreadX」のカーネルとは別の所でドライバ/フレームワークが動いているように思えるが、個々のドライバはThreadXのデバイスドライバとして作成されており、ただこれらをたたくためのAPIはThreadXの標準サービスと別に提供される、という意味である(クリックで拡大) 出典:Renesas Synergy Platform UART Communications Framework Module Guide

 他にも、APIとしてOSEKやPOSIX、μITRON互換のものが提供されるとか、さまざまな開発ツールに対応している、あるいは多彩なプラットフォームのサポート(これは先述したTechFactoryの記事でも書いたので繰り返さない)などの特徴がある。

 気になる料金体系だが、ThreadXは組み込むデバイスごとに一定の使用料が発生するロイヤリティーが存在せず、ライセンス料を支払うだけで利用できる。そのライセンス料としては以下の6種類がある。

  • Single Product License
  • Single Product - Extended Branding
  • Product Family License
  • Microprocessor License
  • OEM License
  • Custom License

 ちなみに、一番安いSingle Product Licenseの価格は“price close to one month's salary of a single software engineer(1人のソフトウェアエンジニアの月収程度の金額)”とのことだ。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る