組み込みOSとは?

組み込みOSとは?

組み込みOSのリアルタイム性とは

組み込みOSのリアルタイム性とは、組み込みシステムがある入力を受けてから出力するといった処理に、時間的制約が設けられる性質のことです。組み込みOSにはリアルタイム性を持たないOSもありますが、ここではリアルタイム性を持った組み込みOSについて解説していきます。具体的には、組み込みOSの「リアルタイム性」・「リアルタイムOSの処理の種類」といったテーマを軸に、分かりやすく解説します。

  • Date: 2014年3月28日
  • Author: EIPC

リアルタイム性とは

組み込みOSにおけるリアルタイム(RT)性とは ソフトウェア(software)などの組み込みシステム(embedded system)がある入力を受けて、対応した出力を行う際に、出力内容だけではなく入力から出力までに時間的制約を求められるという性質の事です。これは単純な早い遅いといった作業速度の話ではない為、通常は0.001秒で対応できるという高速なwindowsなどのパソコン(PC)であっても、ウィルスチェック・ネットワークの通信・アプリケーション実行中などの場合には速度が変動します。その時間を見積もる事ができないような場合には、リアルタイム性があるとは言いません。逆に、0.5秒かかるような組み込みシステムでも、どんな状況でも1秒以内に作業を完了する必要があるという時間制約がある場合には、リアルタイム性がある組み込みシステムとなります。この時の組み込みリアルタイムシステム(realtime system)の時間制約の事を、デッドラインといいます。組み込みOSの基礎知識として、割り込みハンドラなども知っておいた方がいいと思いますが、割込ハンドラについては別の組み込みOSのコラムを参考にして下さい。

組み込みOSのリアルタイム性について例えを挙げて説明していきます。ボタンを押してLEDを点灯させるといった、簡単な組込機器の組込み制御(マイコン機能)の例で考えてみましょう。この時、ボタンを押してからLEDを点灯させるまでに必要な時間は、「LED点灯させる為の時間(以後①)」だけではなく、「ボタンを押してからOS作業が開始されるまでの時間(以後②)」も含まれます。又、実際の組み込み機器は、1つのボタンに1つのLEDといった構成ではなく、複数の入出力制御を並列で扱っていますので、さらに「①の処理中に他のOS作業が動作した場合の時間(以後③)」も考える必要があります。

ボタンを押してからLEDが点灯するまでの時間
= ② ボタンを押してから処理が開始されるまでの時間
+ ① LED点灯させる為の処理時間
+ ③ 他の処理が動作した場合に①の処理が遅れる時間

①は単純な作業時間ですので、比較的簡単に見積ったり測定したりする事が出来ますが、②や③は組み込みシステムの設計やボタンが押された時の組み込みシステムの状態によって都度変化します。この②と③のワーストケースを見積る事ができて、ボタンを押してからLEDを点灯するまでの時間(①+②+③)が、最悪でもXXXまでには完了できる事が見積れる組み込みシステムを、リアルタイムシステム(real time systems)と呼びます。

リアルタイム処理の種類

リアルタイム性を持ったコンピュータやデジタル機械の開発においては、目標時間内に処理が終了しなかった場合の結末を考慮して、組み込み開発を行う必要があります。組み込みリアルタイムOSは、優先度によって下記の3種類の特長を持った処理を選択し、プログラミングしなければなりません。

(1)OSのハードリアルタイム処理
規定時間内にOS作業が終わらない場合、システムの故障など致命的な結果が待っている様な組込みOS処理です。電車のATS(自動列車停止装置)の様な車載安全装置は基本的にハードリアルタイムシステム(ハードシステム)に該当します。規定時間内に停止を完遂できなければ電車は前の列車に衝突したり脱線するなど、致命的な結果が待っていますので、この組込処理のデッドラインを超える事は許されません。よってハードリアルタイムのプログラムが要求されるのです。
(2)OSのファームリアルタイム処理
規定時間内にOS作業が終わらなかった場合、価値が無くなるOS処理です。処理が遅れた場合は、結果を破棄します。携帯電話での通話などマルチメディア系のエンコードなどが該当します。携帯電話は音声データを受信するとデコードしてスピーカーから再生しますが、これが遅れた場合、遅れを引きずったまま再生を続けるのではなく、遅れた部分のデータは破棄して、正しい時間軸のデータから継続して再生します。結果、通話としては音飛びする事になりますが、携帯電話に致命的な故障などの問題が 発生するわけではありません。
(3)OSのソフトリアルタイム処理(ファームリアルタイム処理を含めてソフトリアルタイム処理と表現する事もあります)
規定時間内にOS作業が終わらなかった場合に、価値が減少するOS処理です。スマートフォンの画面表示で、ボタン押下から画面表示が0.5秒以内に出来る事という時間的制約が求められている状態などがこれに該当します。この時間制約を破り0.5秒以上かかった場合、情報表示を速やかに表示するという機能の価値は落ちますが、価値がなくなるわけではありません。

ハードリアルタイム>ファームリアルタイム>ソフトリアルタイムという順番でより厳しい時間制約が課された処理という事になります。自動車のECU(EngineControlUnit)制御、ロボットの関節制御など組み込みシステムにおいては、応答の遅れが故障に結びつく様なケースが多く、ハードリアルタイム処理を求められることが多いです。最近では、多くの組込みソフトウェア(組込ソフト)・組み込みミドルウェア・組み込みハードウェアで使用されるオペレーティングシステム(OS)も、メリットの高いリアルタイム性を実現する為に設計されています。
このように、組込みソフトウェア開発および、組込みシステム開発(システム開発)を行うエンジニアは、組み込みOSのリアルタイム性を考慮して、システムソフトウエアに制御プログラミング・システムプログラミングしていく必要があります。リアルタイムOSにおいて、汎用システムと組み込みシステムでは基本の組込み開発環境や組込み技術は多少違うかもしれませんが、デバイス・プロセッサ作成のプロセスは似ていると思います。

組み込み技術者も目指す方へ

組み込み開発の技術者を目指している人は、まず単行本などを読みc言語などの入門知識を得て下さい。「組込みシステムとは」「エンベデッドシステムとは」「オペレーティングシステムとは」「ソフトウェアとは(ソフトとは)」「rtとは」「オペレーティングとは」「組込みとは」「組み込み開発とは」「システムとは」などといった質問に、即答で意味の説明ができるようになれば、組み込みについての知識がついてきている証拠です。また、転職に有利な組み込み技術の資格を取ることもひとつの手ですし、富士通などの求人情報を逃さないことも大切です。自分で組み込み開発してみたい方は、開発支援・サポートソフトなどのサービスを使ってもいいかもしれません。いずれにしても、目的を持って組み込み開発の道を歩んでいってください。