豪華絢爛な採用実績を持つRTOSの老舗「VxWorks」の行く先:リアルタイムOS列伝(3)(2/3 ページ)
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第3回は、現在流通しているRTOSの中で最も古くから使われている「VxWorks」を取り上げる。
ハイエンドプロセッサをターゲットに順調にシェアを伸ばす
そんなわけで、Wind Riverは1987年に最初のVxWorksを、VRTXベースで発表する。1987年といえば、Intelの「80386」、Motorolaの「MC68030」、MIPSの「R2000」、Zilogの「Z80000」などが出荷されていた時期であり、本格的な(=OSサポート機能の付いた)32ビットCPUが利用できる時代だった。もちろんそれ以前の、Intelなら「80286」や「80186」、Motorolaの「MC68000/68010/68020」、Zilogの「Z8000」などは組み込み分野で広範に使われており、特にMC68000系列は組み込みにおけるシェアが圧倒的に高かった。
こうした比較的ハイエンドのプロセッサをターゲットとしてVxWorksは順調にシェアを伸ばしてゆく。また、初期のVxWorksは(VRTXがモノリシックでの構築だったので当然)モノリシックカーネルでの提供であったが、途中からモジュール構造に切り替わっている。もっともこれ、VRTX側の対応なのか、Mentorで書き直したバージョンなのかはもう判断がつかなかった。
というのは、VRTXの方も、まずVME(Versa Module Eurocard)バックプレーンベースのマルチプロセッサシステムに対応したMPUやMCU向けに、フットプリントを最小にした「VRTX-mc」、パーソナルユース向けの「VRTX-oc」、Machカーネルを取り入れてスケーラビリティを取り入れた「VRTX-sa」などが後追いの形で投入されているからだが、調べた限りではこうした後追いのバージョンではなく当初のVRTX32をベースにVxWorksが構築されており、その後はフォグリン氏が書き直したカーネルを利用しているようなので、モジュラ構造も恐らくは独自のものと思われる。
ちなみに先ほどのウォールズ氏による追悼記事の中にあった、BSDのTCP/IPスタックうんぬんは、時間的にはもう少し後、1990年に入ってからだったと思われる。他にもマルチプロセッサ対応やメモリ保護/仮想メモリ対応などの機能を、バージョンを上げながらどんどん取り込むことになる。
どのバージョンで対応したのかという話はちょっと置いておいて、VxWorksを機能的に見れば以下のような特徴を列挙できる。
- マルチタスク対応:ラウンドロビンとプリエンプティブの両方をサポートする。また高速割込みをサポート
- モジュラカーネルの採用
- カーネルとユーザーの動作モード分離
- バイナリ/カウンター/プライオリティ付きセマフォ/メッセージキュー(メールボックス)など多彩なプロセス間同期/通信機能の提供
- SMP/AMP/Mixedの多彩なマルチプロセッサ対応
- エラーハンドリングフレームワークの提供
- セキュリティおよび暗号化のサポート(X.509とSHA-256)
- 複数のファイルシステム(HRFS/DOSFS/NFS/TFFS)のサポート
- POSIX互換
- 多彩な通信プロトコルのサポート(USB/CAN/Bluetooth/Bluetooth LE/L2CAPなど)。IPv6のサポート
- ネイティブ64ビットサポート(今のところx64のみ)
- GUI(OpenGL/OpenVG/Tilcon UI/フレームバッファードライバなど)のサポート
これらを全て搭載すると、LinuxやWindows並みに重くなる(フットプリントがかなりの量になる)のは間違いないが、逆に最小構成のカーネルだけだと20KB台と非常にコンパクトで、当然ながら必要なモジュールやコンポーネントを選択して構築できるため、組み込み向けの厳しいリソースでも問題なく動作させることができる。
Copyright © ITmedia, Inc. All Rights Reserved.