エッジコンピューティングの逆襲 特集

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

» 2020年07月29日 10時00分 公開
[大原雄介MONOist]

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.