組み込み制御はリアルタイムOSで
リアルタイムOS利用のメリット
「タスク」とは、リアルタイムOSの環境下で、CPUの時分割によって並行実行されるプログラムの単位です。「タスク」は、UNIXの「スレッド」に近い意味を持ちますが、両者の機能には異なる点もあります。例えば、リアルタイムOSの「タスク」において、優先度は強い意味を持っています。優先度の高いタスクが動いている限り、それよりも優先度の低いタスクは全く実行されません。このような動作上の概念を「絶対優先度ベースのスケジューリング」と呼び、組み込み制御用リアルタイムOSを特徴づける点の1つです。
ほかの組み込み機器の例として、FAX(ファクス)を考えてみます。プリント速度の遅いFAXでは、データの受信が終わっても、プリント出力がすべて終わるまでに時間がかかります。しかし、データの受信が終われば電話回線は空きますので、FAXの送信は可能になります。
FAXの場合、スキャナから入力したデータを電話回線に送信する処理と、電話回線からデータを受信してプリント出力を行う処理は、電話回線を共用するという点を除き、ほとんど独立しています。また、受信時にはデータの到着やプリンタの動作を待つ必要がありますし、送信時にはスキャナ入力や電話回線へのデータ送信完了を待つ必要があります。すなわち、受信と送信は並行してほぼ独立に動作する場合があり、しかも受信と送信のそれぞれに時間待ちやシーケンスを伴う複雑な処理があります。
こういったケースでは、受信の処理と送信の処理を別々のタスクにするのが自然です。さらに言えば、データ通信の処理と、スキャナ入力、プリント出力などの処理を別々のタスクに分ける方法も考えられます。いずれにしても、これと同じ処理を割り込みハンドラだけでプログラミングするのは困難です。組み込み機器の機能や複雑さがFAX程度になってくると、「タスク」の機能が必須、すなわちリアルタイムOSの利用も不可欠になるのです。
図2: FAX機の制御用ソフトウエアの例(クリックで拡大) |
送信と受信の処理はほとんど独立しており、それぞれを並行して進める必要があります。そのため、送信と受信を別のタスクで処理します。 |
長い実績を持つリアルタイムOS「ITRON」
高機能な組み込み機器では、リアルタイムOSの利用が不可欠です。組み込み機器におけるリアルタイムOSの重要性を30年近く前から認識し、OSの仕様の標準化と実際の開発を行ってきたのがTRONプロジェクトです。
TRONプロジェクトでは、身の回りのいろいろな機器がマイクロコンピュータを内蔵してインテリジェント化し、これらの機器同士の通信によって協調動作を行うことを想定しました。このような状況の中で、組み込み機器に搭載する制御用ソフトウエアの開発効率を上げるためには、これらの機器に搭載するリアルタイムOSの標準化が重要であるとして、ITRONと呼ぶ標準リアルタイムOSの仕様書をまとめ、これを公開しました。
身の回りのいろいろな機器にコンピュータが内蔵され、それらの機器同士が通信して協調動作するというのは、今日の「ユビキタス」(Ubiquitous)の概念そのものです。TRONプロジェクトでは、ユビキタスを効率よく実現するために、ITRONと呼ぶリアルタイムOSの仕様を標準化したわけです。
ITRONには、日本国内の各半導体メーカーや海外を含むソフトウエア・ベンダーが開発したものも含めて、多くの実装例があり、1980年代後半以降の家電製品やAV機器、OA機器、自動車などの工業製品に数多く採用されてきました。現在でもITRONの採用製品は多く、最近話題の事例としては、先日帰還した小惑星探査機「はやぶさ」のコンピュータの制御にもITRONが使われていました。
ところで、ITRONが登場した1980年代当時のマイクロ・コンピュータは、現在よりもはるかに性能が低いものでした。したがって、その上にリアルタイムOSを実装して実用的に動かすためには、OSによるオーバーヘッドを最小限とし、ハードウエアの性能を最大限に引き出す必要がありました。
このため、ITRONは、タスクやセマフォといったリアルタイムOSの基本機能に対するAPI(Application Program Interface)を中心に、必要最小限の仕様に限って標準化し、実装の自由度を大きく残す方針で設計されました。CPUを含めた実行用ハードウエアに関しても特に規定しておらず、CPUも8ビットから32ビットまで幅がありました。また、デバイス・ドライバ、ミドルウエア、開発環境、ライブラリなどの周辺環境も、標準化の対象とはなっていませんでした。