組み込みOSとは?

ここでは、そもそもOSとは何であるかという基本から紐解き、
「汎用OS」と「組み込みOS」の違い、そして、組み込みOSの「リアルタイム性」などについて解説!
組み込み開発を志す初心者必読の、組み込みOS入門コラムです。

組み込みOSとは?

オペレーティングシステムとは

オペレーティングシステム(OS)と聞いて、この単語を知っている方がどの程度いるのでしょうか。Windows95、Windows98、WindowsXPの流れで発売が開始された、パソコンソフト(pcソフト)を始めとして、OSという言葉は馴染み深くなってきていると思います。Androidの携帯に搭載されているAndoird OS(オープンソース)、Apple社iPhoneなどに搭載されるiOS、MACOS、Linuxなども発表され、具体的な組み込みOSの名称も広がってきています。また、日本のテレビやWEBのニュース(2014年3月)などで、WindowsXPのサポートが終了すると報道されていることもあり、オペレーティングシステム(OS)という言葉が説明される場面も増えてきました。しかし、その多くが「自作入門コンピュータの基本ソフトウェアです」と紹介されており、実際にどのような、どういった役割なのかが、はっきりとしないような説明がなされています。

筆者がニュース以上に簡単に説明できるかは微妙なのですが、私なりに分かりやすく言うと、オペレーティングシステム(OS)とはある機能を開発するのに、必要となりそうな小さな機能を持ったソフトウエアーというのが分かりやすいと思います。例えば、Windowsを例に挙げると、Windows上で文字を出力する場合には、Windowsの持つ文字出力関数を呼び出せば文字出力が行えます。データをネットワーク経由で送るときには、TCP/IPの送信関数を呼び出せば、ネットワーク通信でデータを転送することができるのです。また、ネットワークでデータを送っている時に、マウスで文字を出力するプログラムを起動させても、同時に作動します。これらはオペレーティングシステムが、ネットワーク接続、ネットワーク経由送信、文字出力、プログラム(pg)の同時実行などの、基本的な性能などを持っているからこそ可能になっているのです。このように基本的な性能が集まったソフトのことを、基本ソフトウェア、オペレーティングシステム(OS)と呼んでいます。

プログラマー、技術者、ソフトウェアエンジニアなどはOSが提供する、これらの機能を使用することで、作るべき処理部分に絞った開発が行えます。それによって、複雑な組み込みシステム(エンベデッドシステム)製品を設計したり、コンピュアータシステム、webシステム、情報システム、コンピューターソフトウェア、業務ソフト、パソコンソフト作成を行うことができるのです。

オペレーティングシステムの役割

オペレーティングシステム(OS)は「基本的な機能が集まったコンピュータソフトの事を言います」とお話ししましたが、次のステップとして基本的な組み込みOSの機能とはどのようなモノなのかを説明していきます。

まず1つめの重要な機能としては、プログラムの同時実行機能です。オペレーティングシステム(OS)を搭載する理由の一番大きい部分がこの機能なのではと思います。ここ最近では、4つのコアが導入されているCPUなども珍しくありませんが、少し前までは1つのCPUに1つのコアが導入されることがほとんどでした。

このコアでCPUのメインとなる演算処理を行うわけですので、CPUが1つであれば基本的に動くプログラムも1つになります。先ほどの例でいえば、言語を出力するプログラムとネットワーク経由でデータを送る機能が、Windowsでは同時に動作します。よって、通常の1コアCPUで文字出力プログラムを動かしている間は、CPUが文字出力プログラムに利用されているため、ネットワーク経由でデータ送信をする機能は動かせません。

実際には、プログラムを同時に動かしているのではなく、2つのプログラムを細かい時間で切り替えるといった手順で動かし、同時にタスクを行っているように見せています。スケジューラーがこのプログラムの切り替えを実現しているのですが、多くの場合このスケジューラを利用したいがためにOSを搭載します。近年の4コアを搭載したCPUなどの場合には、どのプログラムをどのコアで動かすかといったことも、CPUが自動で管理しスケジュールします。
2つ目の機能としては、先ほどの例でも挙げたようにネットワーク接続、ネットワーク経由でのデータ送信、文字を出力などの標準入力機能と標準出力機能が挙げられます。
ソフトウェア技術者、ソフトウエアエンジニア、システムエンジニア(se)などは、このようなOS機能があるからこそ、web系システム、組み込み系ソフトウェア、業務ソフトウェア、ITソフト、パソコンのソフト、システムソフトウエアのプログラミングや作成が短期間で行えるのです。

組込システム用OSと汎用OSとの違い

ここまででオペレーティングシステム(OS)の概要はある程度理解いただけたのではとおもいます。ここからはエンベデッドPCなどに搭載されるWindowsやMACOSなどの汎用OSと組込システム(エンベデットシステム)用OSであるTOPPERS、μiTRONの比較を行いながら説明していきます。

これまでに組み込み(エンベデット)関係のコラムでも複数回記載を行っていますが、組み込みシステムと汎用PCの違いは、ある目的に限定した機能を持ったシステムか、汎用的にさまざまな目的に利用できる機能をもったシステムかといった違いです。汎用システムでは汎用性を持たせる意味で、様々な利用法でも困らないように必要以上の能力を持ったハードウェアを実装します。一方、組み込みシステムでは、基礎的、基本的な機能が限定されるため、必要とされる最小限の能力を持ったハードウェアにて構成されます。組み込みOSと汎用OSとでは、組み込まれるハードウェアの性質が違う事によりOSとしても違いが出てきているのです。

細かい部分で言ってしまうとさまざまな違いがありますが、わかりやすい違いとしては、組み込み(エンデベット)OSは必要がない機能を削除する事が容易にできるOSになっています。逆に、汎用OSは使われそうな機能はすべて盛り込んでおいて、必要な機能を削るというよりは、ダウンロードやインストール、修正や追加をすることが、容易にできるようにと考えられています。これらはハードウェアの違いから発生した違いです。その他にも「リアルタイム処理」、「スケジューラ」、「制御」が大きな違いになります。しかし、これらの分野や仕組は少々込み入った説明が必要になりますので、別の場で公開するコラムにて細かく紹介していきます。そちらのコーナーを参照にしてみて下さい。

近年の組み込みOSの流行

このように組み込みOSと汎用OSは、目的の違いから明確に位置づけが異なっていました。しかし、近年では技術が高まり汎用OSが動作するぐらいのパワーを持ったハードウェアが、安価な値段で利用することが可能になっています。パソコンのハードディスク(記憶領域)を例にすると、Windows98などのパソコンが盛り上がり始めたころには、パソコンに搭載されているハードディスクは600MBぐらいの容量で、CD1枚にも満たないメモリ容量でした。それが今となっては、2GBのハードディスクが1万円で買える世の中になっています。

ハードディスク以外も例外ではありません。CPUも「200MHz!」と騒いでいた頃の面影はどこへ行ったのやらで、最近では「3GHz(3000MHz)のクアッドコア!」などというCPUが普通に買えます。この低価格化の波により、組み込み機器でも性能の高いハードウェアを搭載できるようになっており、汎用OSを搭載することが可能となっています。

組み込み機器に汎用OS搭載されている他の要因としては、求められる働きが高度化したことが挙げられます。今となっては電子ネットワークやサーバに接続する、他の機器と連携するのが当たり前の時代になっています。このネットワークに接続したり他の機器と連携したりする場合には、組み込みOSでは機能が不足してしまい勝ちです。そのため汎用OSで開発・運用した方が、簡単に実現可能となる場合が数多くあります。もちろん、温度計などの汎用OSが全く必要ない純粋な組み込み機械は、まだまだ世の中にたくさんあります。一方で、汎用OSを組み込み機械に搭載する流れというのも確実に存在するのです。

近年の組み込み機器開発におけるOS選定をミスすると、ソフトウェアの開発規模、開発環境、開発難易度が膨大に膨れ上がるといった問題があります。利用するハードウェア性能、必要とする機能を見極めながら最適なOSを選択することが、今日の組み込み機器開発では重要な要素の1つであると言えます。

さらに組み込みOSについて知りたい人へ

ここまで筆者が組み込みOSについて語ってきましたが、もっと組み込みOSについて詳しく知りたいという方は、『日経ソフトウエア』という書籍を読んでみて下さい。日経ソフトウエアは、株式会社日経BP社が連載している、 ソフト開発技術者やプログラミング技術者に向けたソフトウェア情報の雑誌です。
SEになるためには、読むことをお勧めします。また、ソフトウェア業界(ソフト業界)、ソフトウェア産業(ソフト産業)についても記述されているので、これらの業界に転職しようと考えている人も読んでみてはいかがでしょうか?組み込みエンジニアとしての資格や求人に関しての知識も得られるかもしれません。

日経ソフトウエアでは、c言語、ツール、プラットフォーム などの動向解説に加え、コンピュータシステムの基礎、情報システムエンジニアリング、ソフトウエアエンジニアリング、新着のプロジェクトやイベント・技術展情報が載っています。具体的には、マイコンボード、アプリケーション(アプリ)、モジュール、ブートローダーといったテーマの情報も得ることができます。是非、バックナンバーまで読み返してみて下さい。
私の友人の制御系SEも書籍中に開発ヒントを見つけたと言っていたので、システムエンジニアになるためには、絶対にオススメ本です。