高根 英哉高根 英哉(たかね ひでや)
株式会社コムラッド代表取締役社長


 Windows VistaやWindows XPはパソコンで使用されるOSです。同じ「Windows」でも、Windows CEは組み込み機器で使用される「組み込みOS」です。組み込みOSという言葉をもう少し丁寧に表現するなら、「組み込み機器向けに特化したOS」と言えます。では、パソコン用のOSと組み込みOSは、どこがどのように違うのでしょうか。今回はそれを解説します。

組み込みOSは必要な機能だけを搭載する

 まず、パソコン上で稼働するアプリケーションを開発することを考えてみてください。このとき使用するWindows VistaなどのOSは、既にでき上がった完成品が提供されています。開発者が自分でOSを構築することはありません。たとえばパソコン上で「顧客管理システム」を開発する場合、その開発工程の中に「OSの構築」という作業は含まれません。ところが組み込み開発の場合は、開発者がOSを構築しなければなりません。そこがまず大きな違いです。

 パソコン用のOSは汎用性を重視するため、あらゆる需要に応えられるように必要十分な機能があらかじめ用意されています。言い換えると、不要な機能があっても使用しなければいいという発想で作られています。たとえば、データベースアクセスは必要でDirectXは不要なビジネスアプリケーション開発者も、逆にデータベースアクセスは不要でDirectXは必要不可欠なゲーム開発者も、同じWindows Vistaを使用して開発を行います。OSをカスタマイズすることなく、規格化された同一の環境を使用するのです。それゆえ、高速なCPUと大容量のストレージやメモリを常に必要とする宿命にあるわけです。

 それに対して組み込み機器は、必要な機能とそれを満たすハードウェアだけに特化されています。もしも組み込みOSがパソコン用OSと同じように汎用的に作られていたら、どんな小さな組み込み機器にも1GBのメインメモリと100GB以上のストレージを搭載しなければならず、インターネット接続、DirectX、データベースアクセスなどの機能まで組み込まれることになります。

 しかし、たとえば「炊飯ジャー」にはこれらのどの機能も不要です。また、メモリとストレージのために炊飯ジャーに数万円のコストをかけることなど考えられません。炊飯ジャーに必要なのはインターネット接続ではなく、火加減や炊き上がり時間を制御する機能だけであり、OSはそれらの機能に特化したコンパクトなものでなければなりません。そのため組み込み開発者は、必要な機能だけを搭載したOSを構築しなければならないのです(図1)。

図1●パソコン用OSと組み込みOSが用意する機能
図1●パソコン用OSと組み込みOSが用意する機能
[画像のクリックで拡大表示]

組み込みOSは複数のCPUをサポートする

 またサポートするCPUという観点からも、パソコン用OSと組み込みOSは大きく異なります。Windows VistaはIntelの高性能なCPUでのみ動作します。他のCPUでは動作しません。CPUとOSは深く関わっているため、容易に他のCPUに移植することはできません。

 それに対して、組み込みOSが単一のCPUでしか動作しないとなると、困ったことになります。なぜなら組み込み機器は、その用途によって消費電力を重視したCPUを使用することもあれば、コストを重視したCPU使用することもあるからです。そのため組み込みOSは、ソースコードを重複して持ったり、あるいはCPU依存部分を切り離すなどして、複数のCPUアーキテクチャで動作するように工夫されています。

 組み込み開発における「OSの構築」作業とは、ハードウェアの構成に最適なOSを作ることを意味します。CPUは何を採用するのか? どんなドライバやサービスを搭載するのか? これらを吟味して最適なOSを組み上げ、メモリやストレージの容量の制約と戦いながら不要な機能は削げ落とし、そうして組み上がったOSをターゲットとなる機器に流し込んで、初めて必要なOSが構築できるのです。OSの構築という作業は、パソコン用の開発にはない、組み込み開発特有の作業です。