組み込みOSが必要とされる機器とその理由
組み込みOSの必要性は割り込み処理の複雑さによって決まる
さて、ではより複雑な携帯電話で考えてみると分かりやすいと思います。
いまどきの携帯電話は、常に以下のことを処理できることを想定して設計される必要があります。
- 基地局との通信(音声通話の着発信、メールやSMSの送受信)
- Bluetoothでの接続(PCやカーナビなど)
- キーボードからの割り込み(メニューの呼び出しなど、ユーザーの処理)
- 現在動作しているアプリケーションが必要とする処理
- その他の割り込み(SDカードの抜き差し、バッテリーの状態変化、USBケーブルの抜き差しなど)
これらは並列で割り込み処理が行われる必要がありますが、OSを使わないと、割り込み処理をすべてプログラミングする必要があります。
つまり、OSが必要かどうかは、どの程度複雑な割り込み処理が発生するかによって決まるといってもよいでしょう。
図2:携帯電話のソフトウエア構成(クリックで拡大) |
カーナビに求められる高度なグラフィックス処理
もうひとつOSを必要としている家電の代表としてカーナビを例にとります。ここでは別の要素が見えてきます。
携帯電話と同じように複雑な割り込みを扱うことが求められますが、もうひとつ大事なのは「2次元や3次元のグラフィックス」を扱うということです。カーナビですから、地図をグラフィックスとして画面に表示させる必要がありますが、このとき、OSとグラフィックスを表示するためのミドルウエア(WindowsではDirect Xなどいくつか存在する)の組み合わせなしではプログラマーはハードウエアが分かる言語で、いちいち描画させなくてはなりません。
例えば、GPU(グラフィックスを描画する専用の半導体)のコマンドを使ってこれらのアプリケーションを開発するとしたら大変な量のソースコードが必要になります。これを楽にしてくれるのもOSの仕事です(厳密にはOSとグラフィックス描画用のミドルウエア・ライブラリの組み合わせ)。
例えば、DirectShowなどのグラフィックスライブラリを使ってC++で実装するのと、Windows Presentation Foundation を使ってC#で実装するのとでは、同じアプリケーションを開発するのに、場合によっては100倍ものコード量の違いになります。
コード量の増大はすなわちバグ率の増加となりますので、いかにコードを書かずに作り上げるかというのは、ITの世界だけでなく、組み込みの世界ではもっと重要なのです。ただし、基となるOSやこれらのミドルウエアの性能や品質をどのように保証していくのかは非常に難しい問題ではあります。そのため、マイクロソフトでは,Windows Embedded CEのソースコードの多くがアクセス可能となっており、OSのカーネル部分に関しては100%ソースコードが開示されています。