他のリアルタイムOSとの比較
一口にリアルタイムOSと言っても、携帯電話やデジタル家電等の比較的小規模のシステムに使われるiTRONのような、リアルタイムOSというよりもリアルタイムモニターのようなものから、工作機械や製造装置、プラント制御等のような比較的大規模なシステムに使われるINtime®やVxWorksのような本格的リアルタイムOSまで多様です。
現在一般のユーザーによく使われているリアルタイムOSとその特徴を表にまとめてみました。
|
INtime® |
RTX |
VxWorks |
QNX |
RT-Linux |
WindowsCE |
iTRON |
対象CPU |
x86 |
x86 |
多数 |
x86 |
x86 |
多数 |
多数 |
ビット数 |
32 |
32 |
8,16,32 |
32 |
32 |
16,32 |
8,16,32 |
GUI |
有り |
無し |
有り,無し |
有り |
有り |
有り |
無し |
Disk |
WindowsXP |
WindowsXP |
独自 |
特殊 |
Linux |
WinCE |
無し |
日本語対応 |
○ |
○ |
○ |
× |
○ |
○ |
- |
よく雑誌等で他のリアルタイムOSも含めて紹介している場合がありますが、それらの多くは特定の企業やアプリケーションで使われることはあっても、一般のユーザーには極端に情報が少なかったりサポートが限定されていたりして実際に導入することはそれほど容易ではありません。
例えば携帯電話でよく使われているシンビアンなどはライセンス量は多いのですが、主に携帯電話機メーカーが採用しており、ライセンス数が数百とか数千では相手にもしてくれないと思います。
また、その技術は携帯電話機メーカ内で閉じており公開されていませんので汎用のリアルタイムOSとは言えず、一般のユーザーが選定の対象となるリアルタイムOSではありません。
これらの「特殊」リアルタイムOSに携わるエンジニアも少なからず居るのですが、ほとんどは派遣型のソフト会社から派遣されたエンジニアが単に「特殊な」アプリケーションのプログラマとして開発に携わっているだけで、他のシステムへの応用できる状況でもありません。
産業用システムではこのことが極めて大事なことで、この時間がばらつくと精度の高い制御を行うことができなかったり、時には装置や機械を壊してしまうこともあります。
これを実現するためにリアルタイムOSではそれぞれのアプリケーションプログラム(スレッド、タスク等という言い方をします)に優先順位(プライオリティ)を付けることにより、プログラムの実行順位を決めます。
複数のプログラムが同時に動作可能状態になったときにはリアルタイムOSは優先度の高いプログラムを先に実行させます。
いくら高速のCPUを使っても、Windowsですと本当のリアルタイム(ハードリアルタイム)を実現できないことはしばしば体験されていることでしょう。
リアルタイムOSを比較する上でよくタスクの切り替え時間や割り込みの応答性などのリアルタイム性能に関心を持たれている方がおられますが、WindowsCEを除いてそれらの性能差はほとんどありません。
もともと性能比較をするためにはCPUや周波数などの条件をそろえた議論が必要ですが、仮にそういうハードウェアの条件を同じにするとほぼ同じ性能が得られるということです。その理由はどのリアルタイムOSも大雑把に言えば、それらの性能を実現する仕組みはほぼ同じだからです。
従って最近では雑誌や論文などでもそういう性能比較をすることはほとんどなくなりました。むしろ、開発ツールや、GUI機能(マンマシンシステム)、利用できる周辺機器やドライバの種類、それにデバッグツールの機能の良し悪しが関心の的になっています。
- 【INtime®から見た他のリアルタイムOSの評価】 ・・・誤解と批判を恐れずに・・・
- 1. iTRON
-
iTRONは比較的小規模なワンボードマイコンなどに組み込まれて使われるリアルタイムカーネルで、通常ライセンスフリーです。
標準ではDisk I/OシステムやGUIライブラリ、TCP/IPは提供されませんから、そういう使い方には向きません。但しTCP/IPについては提供しているベンダーがあるようです。
一般にiTRONを走らせる標準のハードウェアはありませんから通常はアプリケーションソフトウェアの開発に先立ってCPUボードの開発を行うか、iTRONに対応したボードを選定する必要があります。
雑誌や技術書ではよくこのOS(モニター)が取り上げられますが、INtime®が対象としているような規模のシステムでは検討の対象にはなりません。
- 2. WindowsCE
-
当初よりリアルタイムOSと銘打って登場したWindowsCEはマイクロソフトの意図とは別に(あるいはもしかしたら意図どおりに)PDAなどの小型情報端末に使われることはあってもリアルタイムOSとしての機能を生かした使われ方はされてこなかったと言えます。
その理由はいくつかありますが、他のリアルタイムOSほどのリアルタイム性能が出ないことも理由の一つです。 1msよりも速いリアルタイム性は実現できないようです。
このことは最近マイクロソフトがWindowsCEとiTRONを組み合わせたダブルOSを提案していることからもわかります。
また、WindowsCEは他のWindows製品のように市中でパッケージとして販売されていません。
それはWindowsCEがOEM製品であって、ハードウェアを特定しないとWindowsCEソフトウェアの構成が決まらないからです。
すなわちPDAのカシオペアで使われているWindowsCEはカシオペア専用のWindowsCEであって、他のWindowsCE機で使うことはできません。
WindowsCEを組み込み用OSとして使うためにはiTRONなどと同じようにハードウェアの開発から行わなければなりません。
- 3.QNX
-
QNXは北米を中心に予想以上に普及してしまったリアルタイムOSです。日本でも強力な販売体制のせいもあって多く普及しています。
比較的規模の大きな汎用のリアルタイムOSとしてはる累積ライセンスではVxWorksに次ぐ2番手でしょう。
QNXのすばらしさは豊富なライブラリと多様なドライバ群です。特にGUIライブラリはWindowsの画面表示をしのぐかもしれません。QNXが動作するハードウェアプラットフォームはx86CPUのPCアーキテクチャですが、QNXではGUIにQNX独自の方式を採用したため、どのPCでも動作すると言うわけではありません。
PCで使われているグラフィックチップもしくはグラフィックボードはCPU以上に技術革新の激しい分野で新製品のPCが市場に出るたびにハードウェアが変更になっているといっても過言ではありません。
通常これらのグラフィックハードウェアのドライバソフトはハードウェアメーカが準備をして提供するのですが、それは主にWindows用のドライバです。
QNX用のグラフィックドライバはQNXベンダーが開発するかユーザー自身が準備するしかありません。
しかしながらこのグラフィックドライバの開発には多大な労力と費用が掛かりるので、実際はグラフィックハードウェアを固定してつかうことになり、結果としてどのPCでも動作するということが不可能なわけです。
また日本語の問題もあります。マンマシンソフトウェアで日本語を使うためにはかな漢字変換機能が必要ですが、この仮名漢字変換ソフトウェアも膨大な労力を必要とし、独自に開発することは困難です。QNXでは基本的に日本語の入力ができません。
- 4. VxWorks
-
一番売れているリアルタイムOSです。主要なCPUチップにも対応していて、iTRONのような比較的小規模の組み込みボードコンピュータ用のリアルタイムモニターレベルから、例えばINtime®のようなハードディスクやグラフィック機能をもつ比較的規模の大きなシステムまで対応しています。
ハードウェアプラットフォームとしてはPC以外にVMEボードコンピュータとかユーザー固有のボードコンピュータで使えるように構成できます。(どちらかというとPCアーキテクチャで使うケースよりもVMEボードコンピュータで使われるケースが多いようです)
VxWorksはGUI機能としてX-WindowsのようなUnix互換機能が使えますが、この場合もグラフィックドライバはVxWorksのベンダーもしくはユーザー自身で準備する必要があります。
グラフィックチップを変更すると新しいチップのドライバソフトを準備しなければシステムが動作しなくなります。
そのため長期安定供給を必要とする産業用システムでは、グラフィックチップやボードをはじめハードウェアの在庫管理をしたり、買いだめをしなくてはなりません。
技術革新の激しいコンピュータ部品はきわめて短い周期で新製品に置き換わっているため、市場から長期間安定に部品を入手することが困難だからです。
- 5. RTX
-
RTXはINtime®によく似たWindowsと協調動作をするリアルタイムカーネルです。RTXもINtime®もGUIサブシステムとしてWindows(2000/XP)が動作しますから、VxWorksやQNXのようなグラフィックチップのドライバの問題がありません。
細かい部分を除いてRTXとINtime®は仕様的によく似たOSですが、次のような違いがあります。
-
INtime®ではWindowsとINtime®カーネルの切り替えはx86CPUのハードウェア機能を使って行っていますが、RTXではHALレベルでソフトウェア的に行っています。
-
INtime®カーネルとINtime®アプリケーションはWindowsとは完全に独立した環境で動作しています。
そのためINtime®アプリケーションは動作が保護されたユーザーモード(リング3)で動作するためアプリケーションのバグなどに対してタフです。
一方、RTXの場合にはRTXカーネルとRTXアプリケーションはWindowsカーネルと同じ環境のカーネルモード(リング0)でWindowsのドライバとして動作しています。
このことはリアルタイムアプリケーションがOSと同じ特権モードで動作することを意味し、アプリケーションのバグなどでシステム全体をクラッシュさせる危険性があります。
-
上記はデバッガーに違いがでます。開発途中のまだバグを含んだ状態でアプリケーションをデバッグする場合、INtime®ではアプリケーションのバグによってシステムがクラッシュすることはありませんので、一つのアプリケーションとしてのデバッガーを使うことができます。
従ってWindowsも停止することはありません。INtime®には標準でダイナミックソースコードデバッガーが付属しています。
RTXの場合はアプリケーションのバグによってシステムが停止してしまう可能性がありますから、高度なデバッガーでもそれ自身が停止してしまう可能性があります。
RTXではこれを避けるために別のPCをターゲットに接続してリモートでデバッグを行うか、Windows及びRTXカーネルを停止させてスタティックなデバッグで対応します。
-
INtime®の開発と機能追加(バージョンアップ)には日本人のエンジニアも携わっています。従ってソフトウェア自体や膨大なヘルプファイル、マニュアルなどが完全に日本語化されています。
また、日本国内での技術サポートも迅速で高度なサービスを提供しています。
-
INtime®2.23以降ではリアルタイムアプリケーションは従来のINtime-API以外に、iWIN32APIやRTX-APIもサポートしています。
Windowsだけでソフトリアルタイムシステムを構築しているお客様や、RTXでシステムを実現されているお客様も容易にINtime®に移行できます。
(2006/12/26)