高機能化する組み込みシステムは、メモリ保護やフィルシステムの機能をOSに要求するようになってきている。しかし、組み込みシステムは実にさまざまであり、すべてのシステムがこれらの機能を要求するわけではない。T-Kernelにこれらの機能を直接組み込むことはOSの肥大化につながり、ITRONの長所であった軽量性を失うことになる。そこで考案されたのが「Extension」である。
ファイルシステムなどの高度な機能はExtensionとしてT-Kernelに提供される。必要なければExtensionを使用せず、ITRONと同レベルの軽量なOSとして使うこともできる。また、Extension自体を交換することにより、異なるシステムを構築することも可能である。
Extensionは、T-Kernelをマイクロカーネルとしてより高機能なOSを構築する仕組みと見ることもできる。ただし、一般的なマイクロカーネルと異なり、Extensionはユーザーモードではなく、T-Kernelと同じシステムモードで動作することにより、実行効率を維持している。
T-Engineフォーラムにおいて標準のExtensionとして開発されているのが、「T-Kernel/Standard Extension」(以下T-Kernel/SE)である。
T-Kernel/SEは、高機能な情報端末、情報家電、次世代携帯電話など、組み込みシステムの中でも大規模・高機能なシステムでの使用を想定して設計された。この分野は、いままでのITRONでは力不足とされており、T-Kernelが期待される分野である。
T-Kernel/SEはさまざまな機能を持つが、その中でも重要なものを以下に示す。
T-Kernel/SEは現在、T-Engineフォーラム内でβ版がリリースされ、評価検討が行われている。正式版が完成次第、T-Kernel同様に一般に無償公開される予定である。
T-Kernelは「タスク」をプログラムの実行単位としているが、T-Kernel/SEではこれが「プロセス」となる。プロセスは独立した論理メモリ空間で動作する。つまり、あるプロセスのメモリ空間は、ほかのプロセスのアクセスから物理的に保護される。プロセス間でデータのやりとりを行うには、メッセージによる通信機能やデータの共有機能を使用する。
プロセスのスケジューリングは、T-Kernel同様の「絶対優先度スケジューリング」のほかに、「ラウンドロビン・スケジューリング」も選択できる。リアルタイム性の高い処理は絶対優先度、比較的リアルタイム性が要求されない上位のアプリケーションなどはラウンドロビンで、といった使い分けが可能である。
このように、T-Kernel/SEのプロセス・ベースのプログラムでは、LinuxやWindowsなどの情報系OSに近いプログラムモデルを構築することができる。
ただし、T-Kernel/SEのプログラムがT-Kernel単体のタスク・ベースのプログラムと懸け離れているかというと、必ずしもそうではない。セマフォやイベントフラグ、メッセージバッファといったT-Kernelの同期・通信の機能は、T-Kernel/SEでもそのほとんどが使用可能である。
実は、プロセスの実体は、T-Kernelのタスクに固有の論理メモリ空間と資源を与えたものである。プロセスを生成すると、1つの論理メモリ空間とそれに属する1つのタスクが生成される。この段階ではプロセスとタスクは1対1で対応しており、特に違いを意識する必要はない。ただし、同一のプロセス内に複数のタスクを作ることができる。つまり1つの論理メモリ空間上に複数のタスクが存在できるのである。T-Kernel/SEにおけるプロセスとタスクの関係は、WindowsやUNIX系OSなどにおけるプロセスとスレッドの関係と理解してもよいだろう。
T-Kernel/SEは、プロセスやファイルシステム、仮想記憶など、情報系OSに近い機能をT-Kernelに提供するが、同時にT-Kernel単体のプログラムとも強い親和性を持ち、T-Kernelのリアルタイム性能を損なうことはない。
デバイスドライバやサブシステムは、T-Kernelのものがそのまま使用されるし、多くのミドルウェアはどちらの環境でも使用できる。そもそもT-Kernel/SE自体がT-Kernel上で動いているのであり、T-Kernel/SEの動作環境であっても、T-Kernel単体用のソフトウェアは動作可能である。やろうと思えば、T-Kernelのタスク・ベースのプログラムと、T-Kernel/SEのプロセス・ベースのプログラムを混在させることも可能である。
タスク・ベースのプログラムをプロセス・ベースに移植することも容易である。最も手っ取り早い移植方法は、「データを共有する」など関連性の高いタスク群を1つのプロセスとすることである。個々のタスクの独立性が高ければ、そのまま別々にプロセスとすることもできる。
このようにT-KernelとT-Kernel/SEでは、ソフトウェア資産やノウハウを共有できる。この辺りが、単なるハイブリッド型のOSとの違いでもある。比較的小規模な組み込みシステムはT-Kernelのみで、規模の大きなシステムはT-Kernel/SEを使う、といったスケーラビリティのある対応が可能となる。
Copyright © ITmedia, Inc. All Rights Reserved.