リアルタイムOSとは何か?
リアルタイムOSは決してアプリケーションを高速で動作させるためのOSではありませんし、CPUアクセラレータでもありません。
アプリケーションを高速に処理させるには高速クロックのCPUを使って実現します。
リアルタイムOSの役割はアプリケーションシステムの開発者やプログラマが実行タイミングや実行時間を計算した“通り"に実行させることができることです。
別の言い方をすれば、動作するたびにそれらのタイミングや時間がばらつかないようにすることができるOSともいえます。
英語表現ではDeterministic(確定論的な)タスクスケジューラといいます。
産業用システムではこのことが極めて大事なことで、この時間がばらつくと精度の高い制御を行うことができなかったり、時には装置や機械を壊してしまうこともあります。
これを実現するためにリアルタイムOSではそれぞれのアプリケーションプログラム(スレッド、タスク等という言い方をします)に優先順位(プライオリティ)を付けることにより、プログラムの実行順位を決めます。
複数のプログラムが同時に動作可能状態になったときにはリアルタイムOSは優先度の高いプログラムを先に実行させます。
いくら高速のCPUを使っても、Windowsですと本当のリアルタイム(ハードリアルタイム)を実現できないことはしばしば体験されていることでしょう。
一方、CPUとしては低速の8ビットマイコンを使ってもリアルタイムシステムを作ることはできます。
高速なCPUとリアルタイムOSの組み合わせが高性能のリアルタイムシステムではあります。
もう一つのリアルタイムOSとしての要件は、割り込み処理がアプリケーションプログラムレベルでプログラミングできることです。
リアルタイムシステムでは複数のプログラムを効率的に動作させるために、あるプログラムがイベントとか事象待ちの間はCPU能力を他のプログラムを実行させるために割り振ります。
そして再び処理をすべき状況になったら優先順位の判断をして先ほどのプログラムを再開するわけです。
このとき事象をチェックするために定期的にプログラムがスキャンするようにすると、その分CPUパワーを無駄に消費することになります。
リアルタイムOSではこういう場合に割り込みの機能を使って最適なプログラムをするのですが、そのためにはアプリケーションとして割り込みプログラムが記述できなければなりません。
Windowsシステムの場合、割り込みプログラムは一般にカーネルモードのドライバプログラムとして記述し、一般に高度なプログラミング技術を必要とします。
INtime®では、ユーザーモードで実行させるようにでき、割り込みプログラムが容易です。ドライバソフトウェアを容易に作成できることになります。