リアルタイム​オペレーティングシステム​(RTOS)​とは

概要

この​ドキュメント​では、​リアルタイム​オペレーティングシステム​(RTOS)​と​は​何​か​について​説明​する​とともに、​計測/​制御​アプリケーション​に​使用​した​場合​の​メリット​や、​Windows​といった​標準​の​汎用​オペレーティングシステム​と​の​違い​について​解説​し​ます。

目次

  1. リアルタイム​オペレーティングシステム​の​概要
  2. リアルタイム​アプリケーション​の例
  3. リアルタイム​OS​と​汎用​OS​の​違い​を​技術​的​に​解説
  4. 次​の​ステップ

リアルタイム​オペレーティングシステム​の​概要

以降​の​セクション​では、​リアルタイム​オペレーティングシステム​の​基本​概念​と​用語​について​概略​を​解説​し​ます。​その後​の​ステップ​として、NI​ハードウェア​と​ソフトウェア​で​リアルタイム​システム​を​構築を​お​読み​いただく​こと​を​お​勧め​し​ます。​この​ページ​では、​短時間​で​優​れ​た​リアルタイム​システム​を​構築​する​方法​を​解説​し​てい​ます。

リアルタイム​OS​とは

一般に、​オペレーティングシステム​(OS)​の​役割​は、​コンピュータ​の​ハードウェア​リソース​の​管理​と、​コンピュータ​上​で​実行​する​アプリケーション​の​ホスト​です。​RTOS​は、​そうした​タスク​を​実行​する​だけ​で​なく、​高​精度​の​タイミング​で​確実​に​アプリケーション​を​実行​する​よう​特別​に​設計​さ​れ​てい​ます。​ダウン​タイム​によって​コスト​が​高​く​つい​たり、​プログラム​の​遅延​によって​安全​面​に​問題​が​生じる​計測/​オートメーション​システム​では、​特に​重要​な​こと​です。

「リアルタイム」​と​言える​の​は、​実行​する​それぞれ​の​重要​処理​に対し、​既知​の​最大​時間​が​ある​(あるいは​少なくとも​ほとんど​の​場合​最大​時間​を​保証​できる)​オペレーティングシステム​です。​その​よう​な​処理​に​は、​OS​呼び出し​や​割り込み​処理​など​が​あり​ます。​そうした​処理​に対し​最大​時間​を​絶対​的​に​保証​できる​オペレーティングシステム​を​一般に​「ハード​リアルタイム」​と呼び、​ほとんど​の​場合​に​のみ​最大​時間​を​保証​できる​オペレーティングシステム​を​「ソフト​リアルタイム」​と呼びます。​現実​に​は、​この​よう​な​分類​は​十分​では​ありま​せん。​各​RTOS​ソリューション​は​それぞれ​固有​の​性能​特性​が​あり、​ユーザ​は​そういった​特性​を​個々​に​注意​深​く​見極める​必要​が​あり​ます。

そういった​概念​を​正しく​理解​する​ため、​1​つ​の​例​について​考え​て​み​ます。​例えば​新車​の​エアバッグ​システム​を​設計​し​て​いる​と​し​ます。​この​場合、​タイミング​に​わずか​でも​誤差​が​生じる​(エアバッグ​の​開く​の​が​早​すぎる/​遅​すぎる)​と、​重大​な​事故​となり​負傷​に​つながる​可能性​が​あり​ます。​したがって​ハード​リアルタイム​システム​が​不可欠​です。​いかなる​操作​も​特定​の​タイミング​制限​を​超える​こと​は​許​さ​れ​ま​せん。​一方、​スト​リー​ミン​グ​ビデオ​を​受信​する​携帯​電話​の​場合​は、​もちろん​抜ける​こと​なく​ビデオ​を​ストリーミング​できる​に​越​した​こと​は​ない​ものの、​たまに​多少​の​データ​が​落ちる​こと​は​許容​範囲​で​しょう。​この​アプリケーション​では、​おそらく​ソフト​リアルタイム​オペレーティングシステム​で​十分​です。

つまり​要約​すると、​正しくプログラミングすれば、​RTOS​は​極めて​一貫性​の​高い​タイミング​で​プログラム​を​実行​する​こと​が​保証​さ​れ​て​いる​という​こと​です。​リアルタイム​オペレーティングシステム​が​その​よう​な​信頼​性​を​実現​できる​の​は、​タスク​の​優先​順位​付け​に関して​プログラマ​の​自由​度​が​高​く、​重要​な​期限​が​守​ら​れ​て​いる​こと​を​確認​する​こと​も​可能​だから​です。

リアルタイム​オペレーティングシステム​と​異​なり、​ほとんど​の​一般​向け​オペレーティングシステム​(Windows​など)​は、​汎用​オペレーティングシステム​と​呼​ば​れ​ます。​リアルタイム​オペレーティングシステム​と​汎用​オペレーティングシステム​の​違い​について​は​以降​の​セクション​で​詳​しく​説明​し​ます​が、​どちら​の​OS​に​も​それぞれ​長所​と​短所​が​ある​こと​を​覚え​て​おく​必要​が​あり​ます。​Windows​など​の​オペレーティングシステム​は、​多く​の​プログラム​や​サービス​が​走る​中​で​ユーザ​入力​へ​の​応答​性​を​維持​できる​よう​に​設計​さ​れ​て​いる​の​に対し​(「公平性」​を​重視)、​リアルタイム​オペレーティングシステム​は、​重要​な​アプリケーション​を​高​精度​な​タイミング​で​確実​に​実行​する​よう​設計​さ​れ​てい​ます​(プログラマ​の​優先​順位​を​重視)。

重要​な​用語​と​概念

確定​性: ハード​リアルタイム​オペレーティングシステム​で​実行​する​アプリケーション​(あるいは​アプリケーション​の​重要​部分)​で、​特定​の​誤差​内​で​の​実行​が​保証​さ​れ​て​いる​場合、​確定​性​が​ある​という​ことに​なり​ます。

ソフト​リアルタイム vs ハード​リアルタイム処理​に​かかる​絶対​的​最​長時間​を​保証​できる​OS​は、​ハード​リアルタイム​と​呼​ば​れ​ます。​逆に、​通常​ある程度​の​時間​を​かけ​て​処理​を​実行​する​OS​は、​ソフト​リアルタイム​と​呼​ば​れ​ます。

ジッタ:プログラム​または​ループ​の​以降​の​反復​処理​における​タイミング​の​誤差​を​ジッタ​といいます。​リアルタイム​オペレーティングシステム​は、​正しく​プログラミング​す​れ​ば​ジッタ​を​少​なく​できる​よう​設計​さ​れ​てい​ます。​タスク​は​何​度​実行​し​て​も​ほぼ​同じ​時間​で​実行​できる​よう​に​な​って​い​ます。

図​1.ジッタ​は、​以降​の​反復​処理​で​タスク​の​実行​時間​が​どれ​だけ​違う​か​を​示す​もの​です。​リアルタイム​オペレーティングシステム​では、​ジッタ​が​少​なく​な​って​い​ます。

 

トップ​へ​戻る

リアルタイム​アプリケーション​の例

リアルタイム​オペレーティングシステム​は、​イベント​応答​と​閉ループ​制御​という​2​つ​の​アプリケーション​クラス​向け​に​開発​さ​れ​た​もの​です。​アセンブリ​ライン​部品​の​自動​視覚​検査​など​の​イベント​応答​アプリケーション​では、​スティミュラス​に対し​一定​時間​内​に​応答​する​こと​が​求め​ら​れ​ます。​例えば​視覚​検査​の​場合、​アセンブリ​ライン​が​移動​する​前​に​各​部品​を​撮影​し​分析​する​必要​が​あり​ます。

ハード​リアルタイム​オペレーティングシステム​上​で​実行​する​アプリケーション​を​注意​深​く​プログラミング​する​こと​で、​確定​的​に​(一定​の​最大​時間​内​で)​応答​する​イベント​応答​アプリケーション​を​開発​する​こと​が​でき​ます。​部品​検査​の​例​では、​汎用​OS​を​使用​した​場合​検査​漏れ​が​出る​可能性​が​あり​ます。​そのため​アセンブリ​ライン​の​速度​を​下げ​たり、​部品​を​破棄​する​ことに​なる​か、​あるいは​欠陥​品​の​可能性​の​ある​部品​が​出荷​さ​れる​危険​も​あり​ます。

一方​自動車​の​クルーズ​コントロール​システム​など​の​閉ループ​制御​システム​では、​フィードバック​データ​を​連続​的​に​処理​し​て、​1​つ​または​複数​の​出力​を​調整​し​ます。​各​出力​値​は​決め​ら​れ​た​時間​内​に​入力​データ​を​処理​する​ことに​か​かって​いる​ので、​正しい​出力​を​生成​する​ため​に​は、​ループ​期限​が​守​られる​こと​が​極めて​重要​です。​クルーズコントロールシステムが一定の時間内にスロットル設定を決められなかったら、​どう​なる​で​しょう​か。​繰り返し​ます​が、​ハード​リアルタイム​オペレーティングシステム​では、​制御​システム​の​入力​データ​を​一定​の​時間​内​(決め​ら​れ​た​最悪​ケース​の​最​長時間)​に​処理​する​こと​が​保証​さ​れ​てい​ます。

長期間​にわたり​実行​する​必要​の​ある​アプリケーション​に​も、​信頼​性​の​高い​RTOS​が​求め​ら​れ​ます。​リアルタイム​オペレーティングシステム​は​通常、​多く​の​アプリケーション​や​プロセス​を​同時に​実行​する​の​では​なく、​最少​限​の​ソフトウェア​を​実行​し​ます。​そのため​24​時間​365​日​稼動​する​必要​の​ある​システム​や、​ダウン​タイム​が​許​さ​れ​なか​っ​たり​大きな​コスト​に​つながる​よう​な​システム​に​最適​です。

次回​の​プロジェクト​で​RTOS​を​検討​しよう​と​お​考え​の​方​は、​こちら​も​ご覧​くだ​さい:リアルタイム​システム​を​採用​する​メリット

トップ​へ​戻る

リアルタイム​OS​と​汎用​OS​の​違い​を​技術​的​に​解説

Microsoft Windows​や​Mac OS​といった​オペレーティングシステム​は、​重要性​の​高​く​ない​計測/​制御​アプリケーション​の​開発​と​実行​に​は​非常​に​優​れ​た​プラットフォーム​です。​ただし​リアルタイム​オペレーティングシステム​と​は​異なる​使用​状況​を​想定​し​て​おり、​高​精度​な​タイミング​や​長期​の​稼動​時間​が​求め​られる​アプリケーション​の​実行​に​は​適​し​てい​ま​せん。​この​セクション​では、​この​2​つ​の​オペレーティングシステム​の​技術​的​な​違い​について​説明​する​とともに、​リアルタイム​アプリケーション​を​プログラミング​する​際​の​注意​点​について​解説​し​ます。

優先​順位​の​設定

アプリケーション​を​プログラミング​する​際、​その​種類​に​関​わら​ず​ほとんど​の​アプリケーション​では、​アプリケーション​全体​や、​場合​によって​は​アプリケーション​内​の​様々​な​タスク​について​も、​プログラマ​が​優先​順位​(スレッド)​を​指定​する​こと​が​でき​ます。​そうした​優先​順位​は、​開発​者​が​どの​処理​を​最も​重要​と​考え​て​いるか​を​OS​に​伝える​役割​を​果​た​し​ます。​複数​の​タスク​が​同時に​実行​可能​と​な​っ​た​場合、​OS​は​優先​順位​の​高い​タスク​を​先に​実行​し​ます。

汎用​オペレーティングシステム​は、​このように​プログラム​さ​れ​た​優先​順位​を​必ずしも​厳密​に​守る​わけ​では​ありま​せん。​汎用​オペレーティングシステム​は、​様々​な​アプリケーション​や​プロセス​を​同時に​実行​する​よう​開発​さ​れ​て​いる​ため、​全て​の​タスク​が​少なくとも​いくらか​の​処理​時間​を​与​え​られる​こと​が​最も​重視​さ​れ​ます。​その​結果、​低​優先​タスク​でも、​高​優先​タスク​より​先に​実行​さ​れる​こと​も​場合​によって​は​あり​得​ます。​そのように、​どの​タスク​も​いくらか​の​実行​時間​は​割り当て​ら​れ​ます​が、​それ​は​必ずしも​開発​者​が​望む​実行​順位​では​ない​という​こと​です。

一方​リアルタイム​オペレーティングシステム​は、​プログラマ​の​優先​順位​を​より​厳密​に​守り​ます。​ほとんど​の​リアルタイム​オペレーティングシステム​では、​高​優先​タスク​が​プロセッサ​を​100%​使​って​いる​場合、​より​優先​度​の​低い​他の​タスク​は​高​優先​タスク​の​実行​が​終わる​まで​実行​さ​れ​ま​せん。​そのため​リアルタイム​システム​の​開発​者​は、​優先​度​を​考慮​し​ながら​慎重​に​アプリケーション​を​プログラム​する​必要​が​あり​ます。​一般​的​な​リアルタイム​アプリケーション​の​場合、​開発​者​は​タイム​クリティカル​コード​(イベント​応答​や​制御​コード​など)​を​高​優先​の​1​つ​の​セクション​に​配置​し​ます。​そして​ディスク​へ​の​ログ​や​ネットワーク​通信​など、​優先​度​の​低い​他の​タスク​は​低​優先​セクション​に​集め​られる​こと​が​あり​ます。

割り込み​遅延

割り込み​遅延​と​は、​デバイス​が​割り込み​を​要求​し​て​から、​その​デバイス​が​サービス​を​受け​られる​まで​の​時間​を​いい​ます。​汎用​オペレーティングシステム​では、​ある​特定​の​割り込み​に対する​応答​まで​の​時間​は​様々​ですが、​リアルタイム​オペレーティングシステム​では、​全て​の​割り込み​が​指定​の​最大​時間​内​に​確実​に​実行​さ​れ​なく​て​は​なり​ま​せん。​つまり、​リアルタイム​オペレーティングシステム​の​割り込み​遅延​に​は​制限​が​ある​という​こと​です。

性能

一般​的​に​誤解​さ​れ​て​いる​こと​の​1​つ​に、​リアルタイム​システム​は​汎用​の​オペレーティングシステム​より​優​れ​た​性能​を​持​って​いる​と​の​認識​が​あり​ます。​リアルタイム​オペレーティングシステム​は、​アプリケーション​間​や​サービス​間​の​マルチタスク​が​少ない​ため、​場合​によって​は​性能​が​優​れ​て​いる​と​言​え​なく​は​ありま​せん。​しかし​実際​の​アプリケーション​の​性能​は、​CPU​速度、​メモリ​アーキテクチャ、​プログラム​特性​など​によって​決まり​ます。

リアルタイム​オペレーティングシステム​の​実行​速度​自体​は​速い​場合​も​そう​で​ない​場合​も​あり​ます​が、​汎用​オペレーティングシステム​に​比べ、​はるかに​正確​で​予測​可能​な​タイミング​特性​を​持​って​いる​こと​は​確か​です。

トップ​へ​戻る

次​の​ステップ

以下​の​資料​では、​NI​の​ソフトウェア​と​ハードウェア​を​使用​し​て​極力​短時間​で​優​れ​た​リアルタイム​システム​を​構築​する​方法​を​ご覧​い​た​だけ​ます。

NI​ハードウェア​と​ソフトウェア​で​リアルタイム​システム​を​構築

リアルタイム​システム​を​採用​する​メリット

評価​版​ソフトウェア

トップ​へ​戻る