PR

ITRONは機能を絞り高速化

図1●リアルタイムOSは二つに大別できる
汎用OS型にはWindowsCEや組み込みLinuxが分類される。リアルタイム・カーネル型の代表格はITRONである。

 リアルタイムOSというと読者の皆さんは,何を思い浮かべるだろうか。ITRON,組み込みLinux,リアルタイムUNIX,Windows CEといったところだろうか。ちょっと詳しい方なら,VxWorksや古くはpSOSやVRTXといった名前をご存知かもしれない。こうしたリアルタイムOSは大きく二つのタイプに分けられる。リアルタイム・カーネル型と汎用OS型である(図1[拡大表示])。

 リアルタイム・カーネル型には,極めて限られた機能しか備えさせない。具体的には,プロセッサやメモリ,タイマなど,どのような組み込みシステムにも共通するハード資源を扱う機能である。したがってOSのプログラム規模は,数K~数十Kバイト程度と非常に小さい。こうして高い応答性を実現する。リアルタイム・カーネルが「軽い」といわれるゆえんはここにある。筆者が標準化と普及に長らく携わってきたITRONは,リアルタイム・カーネル型である*3

 逆にリアルタイム・カーネル型には,周辺デバイスを扱うための機能(例えばストレージ・デバイスを扱うためのファイル・システムやネットワークを扱うためのプロトコル・スタックなど)は必要ない。こうした機能は,必要に応じて組み込めばよいという考え方である。リソースの制約が厳しいリアルタイム・システムでは,不要になりかねない機能を抱え込むことのデメリットのほうがはるかに大きい。

 汎用OS型のリアルタイムOSとしては,組み込みLinuxやWindowsCEなどがある*4。つまり汎用OSを組み込みシステム向けに改造したものが該当する。汎用OS型は,PDAやデジタル家電,携帯電話などで使われる例が多くなってきた。汎用OS型は,各種ネットワークに対応するプロトコル・スタックやファイル・システムを備えるなど,豊富な機能に特徴がある。当然,OSのサイズは数百K~数Mバイトと大きい。実装方法にもよるが,複雑な機能をOS内に備えているので,応答性はどうしても悪い。

 では今後,いずれかのタイプに収れんするのだろうか。筆者は共存すると見ている。すなわち,リソース制約・信頼性・リアルタイム性に対する要求が厳しく,それを満たすためにアプリケーションごとに作り込みが欠かせないシステムでは,リアルタイム・カーネル型のものが使われ続ける。一方,制約が緩やかで,汎用システムに近い性格を持った組み込みシステムの分野では,汎用OS型がシェアを伸ばすだろう。汎用OSとの親和性が良く,開発環境が優れている場合が多いからだ。

 ここにきて汎用OS型の採用例が増えてきたのは,組み込みソフトウェアのプログラム規模が拡大し,汎用システム向けのソフトウェア資産を組み込みシステムに転用したいという要求が増したことと無縁ではない。また,パソコン用の開発環境が使えるというのも,組み込みシステム技術者が不足している現状では,大きなメリットとなる。

組み込みではデバドラの開発が重要

 組み込みソフトウェアならではの特徴に,デバイス・ドライバ(デバドラ)の位置づけがある。デバイス・ドライバは地味な存在ではあるが,組み込みシステムを特徴づけているソフトウェアであるといっても過言ではない。

 組み込みシステムは,プロセッサがモーターやセンサー,スイッチといった周辺デバイスを制御するものである。つまり,周辺デバイスを制御するデバイス・ドライバは,アプリケーション・ソフトウェアの一部にほかならない。図1に示した,リアルタイム・カーネル型を使った場合のソフトウェア構造は,この特徴をよく表している。つまり,デバイス・ドライバもアプリケーション・ソフトウェアも,カーネルのAPIを同様に呼び出せる。

 デバイス・ドライバの開発が重要な位置を占めるのも,組み込みシステムの特徴である。組み込みシステムでは一般に,システムによって周辺デバイスが異なる。つまり,システムごとにデバイス・ドライバを開発しなければならない。結果として,デバイス・ドライバ開発に携わる技術者が多くなる。この点で,デバイス・ドライバ開発の技術者が一握りである汎用OSの世界とは異なっている。