組込みソフトウェアに求められることを実現するための基盤
先に示した「処理時間」「処理効率」「リソース量」を考慮したプログラムを作成するには、動作するプログラムの時間管理や実行を制御する仕組みが必要です。この仕組みを提供してくれるのがRTOS注です。
一般的なOSにおけるカーネル部分の機能に該当するため「リアルタイムカーネル」と表現されることもありますが、ここでは「カーネル」と「OS」をひとくくりにして「OS」と記載します
RTOSは、「処理時間」「処理効率」「リソース量」について、それぞれ以下の機能を提供します。
処理時間
プログラムの実行時間そのものは、ソフトウェアが動作する機器(CPU、メモリ、動作クロック周波数など)によって決定されます。したがって、プログラム処理に必要な時間を変えることはできません。RTOSは、該当機器で動作するプログラムの処理時間を厳密に管理する機能を提供します。
- 処理の優先度を制御する機能
結果として処理全体の実行時関を予測することが可能になる
- 定められた処理時間が超過していないかを監視する機能
予定した処理完了時間のことを「デッドライン」、監視機能を「デッドラインモニタリング」と呼ぶ
RTOSを利用してもすべての処理が予定時間内で完了するわけではありません。短時間で処理が終わるようにプログラムを作成し、各処理の優先度を設定することで、さまざまな条件下でデッドラインを超えないようにするのは開発者の役割です。
処理効率
RTOSは、1つの処理を「タスク」という単位で扱います。タスクには優先度を付けることができ、それに応じて実行タスクを切り換える機能を提供します。
また、タスクよりも高い優先度で機器の手動操作や機器からの信号受信を処理することができます。このような処理のことを「割り込み処理」と呼び、割り込み処理をプログラムするための仕組みもRTOSは提供します。例えば、一定時間ごとに処理を繰り返す場合には、RTOSで提供されるタイマー割り込みを使って一定時間毎の処理を実現することができます。
リソース量
RTOSは直接的に機能を提供しません。しかし、タスクや割り込みを利用できるため、制御内容に注力してプログラムを作成することができます。このことは冗長な処理を少なくし消費リソースを軽減することにつながります。
RTOSと汎用OSの違い
RTOS(ここではハードタイム処理に適したRTOS)とPC向けの汎用OS(WindowsやLinuxなど)では、同じOSという名称がついていても役割や機能は大きく異なります。
OSの機能は、おおむね以下の図のように構成されています。
汎用OSとRTOSには、以下のような違いがあります。
機能 | 利用者が直接コンピュータを操作することを前提に必要な機能が提供されます。このため、プログラムを制御する機能の他に、画面を表示するための機能(ウィンドシステム)や、ファイル操作を行う機能(ファイルシステム)が標準的に提供されます。 |
制御 | 多くのプログラムを同時に実行できたほうが、利用者が操作するアプリケーション(Webブラウザ、メーラーなど)が快適に利用できます。このため、プログラムの実行制御も、一定時間ごとにタスクを処理していく方式が採用されています。しかし、1つのタスクの処理時間が予測できず、ハードリアルタイム処理に適しません。 |
提供 | インストーラにより共通的なパッケージとして提供されます。 |
機能 | 機器上で動作するプログラムの実行時間を厳密に管理することを前提に必要な機能提供しています。このため、提供される機能はプログラムを制御する機能(カーネル)が中心となります。機器によってはメモリ管理や通信管理を含むものもあります。 |
制御 | プログラムの実行制御は、実行時間を管理するため基本的に1つのタスクのみを動作させます。優先度による切り換えによって、動作するプログラムを切り換えます。割り込みは例外です。 |
提供 | 汎用OSとは異なり、動作する機器の特性(メモリ、動作させるプログラム)に合わせて提供します。組込みソフトに必要な小リソースを満たすためです。そのため、機器専用パッケージか、最適なOSを生成するためのツール(OSGenerator)の形式で提供されます。 |