2006年、T-Kernelはこうなる!T-Kernelロードマップで見る最新事情(2/3 ページ)

» 2006年03月10日 00時00分 公開
[豊山 祐一 YRPユビキタス・ネットワーキング研究所 基盤システム研究室 室長,@IT MONOist]

T-Kernelを機能拡張するExtension

 高機能化する組み込みシステムは、メモリ保護やフィルシステムの機能を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とは

 T-Kernel/SEは、高機能な情報端末、情報家電、次世代携帯電話など、組み込みシステムの中でも大規模・高機能なシステムでの使用を想定して設計された。この分野は、いままでのITRONでは力不足とされており、T-Kernelが期待される分野である。

 T-Kernel/SEはさまざまな機能を持つが、その中でも重要なものを以下に示す。

  • 独立した論理メモリ空間を持つプロセスの管理
  • FATやCD-ROMに対応したファイルシステム
  • 仮想記憶を含むMMUに対応したメモリの管理
  • TCP/IPネットワークへの対応

 T-Kernel/SEは現在、T-Engineフォーラム内でβ版がリリースされ、評価検討が行われている。正式版が完成次第、T-Kernel同様に一般に無償公開される予定である。

T-Kernel/SEを用いたシステム構成図 図2 T-Kernel/SEを用いたシステム構成図

T-Kernel/SEのプログラムモデル

 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におけるプロセスとタスク 図3 T-Kernel/SEにおけるプロセスとタスク。注:プロセス内のタスクの数は任意

T-KernelとT-Kernel/SE

 T-Kernel/SEは、プロセスやファイルシステム、仮想記憶など、情報系OSに近い機能をT-Kernelに提供するが、同時にT-Kernel単体のプログラムとも強い親和性を持ち、T-Kernelのリアルタイム性能を損なうことはない。

※コラム:ハイブリッド型の組み込みOS
情報系OSを組み込みシステムで使用する際に、リアルタイムOSと組み合わせるハイブリッド型OSという手法がある。よくある例では、LinuxとITRONのハイブリッドなどがある。リアルタイム性が必要な部分はITRONで、さほどリアルタイム性が重要でない部分はLinuxを使用するわけである。
このハイブリッド型OSは、ある面ではとても実用的といえる。既存のLinuxのソフトウェアを使用したいが、Linuxだけではリアルタイム制御ができない場合にはうってつけではある。
しかし、ハイブリッド型OSはまったく異なる2つのOSを動かすことによるデメリットもある。各OSは、APIもプログラムモデルもちょっとした作法まで異なる。1つのシステムを作り上げるには両方のOSの知識が必要であり、プログラム開発の負荷を増大させる可能性がある。また長期的に見れば、2つのOSをメンテし続けなければならないデメリットも小さくはない。


 デバイスドライバやサブシステムは、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.