話をLinuxの世界に移すと、組み込みLinux業界動向で述べたとおり、The Linux Kernel Archives(http://www.kernel.org/)で公開されているupstreamカーネル(オリジナルカーネル)では、組み込みシステムに必要なリアルタイム性能が不足している。これを克服するさまざまな取り組みが行われている。ここでは、各種の取り組みを以下の3種に分類して説明する。
マイクロカーネル方式は、Linuxとハードウェアの間に、Linuxから独立して動作するシンプルなカーネルを配置する手法である。提唱者により呼び方はさまざまではあるが、本連載では以降、このシンプルなカーネルを「マイクロカーネル」と呼ぶ。
マイクロカーネルの管理下では、Linuxおよびリアルタイムタスクが同格で動作する。マイクロカーネルの主な機能は以下のとおり。
この方式のメリットとしては、マイクロカーネル上にLinux以外のOSや複数のOSを同時に配置できるなど、柔軟性が高い点が挙げられる。また、リアルタイムタスクを開発する際のAPIもPOSIX規格に準拠したものが多く、UNIX系の開発者にとってなじみやすい。逆に、リアルタイムタスクが障害による異常終了や暴走などで設計どおりに動作しない場合、システム障害に直結するといったデメリットがある。
この方式の主な実装例は以下のとおり。
ハイブリッド方式はマイクロカーネル方式に構成は近いが、既存のリアルタイムOSを活用する点で異なる。
日本国内では、Linuxと組み合わせるリアルタイムOSとしてITRONまたはT-Engineを採用するケースが多い。これらは、「Linux on ITRON」と呼称されている。Linux on ITRONの場合、LinuxはITRONの1つのタスクとして最も低優先度で動作する。この方式の実装方法については、Emblix(日本エンベデッド・リナックス・コンソーシアム:http://www.emblix.org/)のハイブリッドアーキテクチャワーキング・グループで検討され、第1版の仕様が公開されている。
T-Engine(注)の場合、「T-Linux」というミドルウェアを用いてハイブリッド方式を実現することができる。これはモンタビスタソフトウェアによって開発され、パーソナルメディアから2005年第1四半期に販売が予定されている。
この方式のメリットとして、リアルタイムOS上でリアルタイム処理を従来方法で設計できる点が挙げられる。そのほかの処理については、追加する汎用OSのよく知られた方法で実現できる。ただし、1つのシステムを作り上げるのにリアルタイムOSと汎用OS双方の知識が必要となり、開発者の調達・育成にコストが掛かるというデメリットもある。
この方式の主な実装例を以下にまとめる。
upstreamカーネルでも、カーネル2.6でリアルタイム性能を向上させるさまざまな機能が統合された(注)が、より高性能なリアルタイム機能を求める声も多い。これを背景にして、前出の2方式とは異なりLinux単体でリアルタイム機能を向上させる取り組みもある。以降、これを「スタンドアロン方式」と呼ぶことにする。
この方式のメリットは、Linux単体での取り組みであることと、POSIX規格に準拠した機能拡張が多いことから、UNIX系の開発者にとってなじみやすいことである。また、比較的upstreamカーネルに統合されやすい点も大きい。一方、汎用OSであるが故にさまざまなオーバーヘッドがあることや、移植性が重視されてプロセッサに依存したハードウェア機構(割り込み処理など)を生かしにくいという面がある。これにより、ITRONなどのリアルタイムOSと比較して性能が発揮できないというデメリットとなる。
この方式での、主な取り組みを以下にまとめる。
カーネル2.6をベースにした取り組みのトレンドは、割り込みハンドラの処理をISR(Interrupt Service Routine:割り込み処理ルーチン)からIST(Interrupt Service Thread:割り込み処理スレッド)に移すことをベースにして、レイテンシを改善することである。これは、上記の(1)(2)(4)および(5)で実装されている。
これらとは別に、Linuxの割り込み管理機構の枠外で特定の割り込みを処理することで、割り込みレイテンシの改善を行う取り組みもある。例えば、割り込みレイテンシの最悪ケース時間を10マイクロ秒以下に抑える実装(注)が、富士通からCE Linux Forumに寄与されている。
以上、今回はリアルタイム機能と組み込みLinuxでの取り組みの概要を説明した。後半の実装方式については、本連載で詳しく紹介していく予定だ。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.