HOME会社概況業務内容開発分野開発事例CANモジュールソフテックだよりお問い合わせ
HOME > ソフテックだより > 第11号(2006年2月1日発行) 技術レポート「RTOSについて」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより(技術分野別)のページへ
ソフテックだより(シーン別)のページへ


ソフテックだより 第11号(2006年2月1日発行)

技術レポート

「RTOSについて」

数年前までは、組み込みソフトに求められる機能は多くありませんでしたが、CPUの高性能化、メモリの大容量化によりソフトに求められる機能が大規模化、複雑化してきています。このような要件に対応する手法として“RTOS(Real Time Operating System)”を用いることがあります。
今回はRTOSの概要から機能についてのレポートです。

1.RTOSについて

RTOSとはReal Time Operating Systemの略で、リアルタイム性を持ったOSのことです。 リアルタイムOSと呼ばれるものは、応答時間が一定の範囲内であることが保証されているという特徴があります。
RTOSもOSであるため、Windows等のPC用OSと同様にマルチタスク機能(タスクのスケジューリング)、タスク間同期・通信機能、メモリ管理等の機能を有しています。

RTOSの代表的なものとして、ITRON仕様準拠OSがあります。(株式会社MISPOのNortiやルネサステクノロジのHIシリーズ等)
ITRON以外として、Wind River社のVxWORKs、組み込み用Linux、Microsoft社のWindows CE、Windows Embeddedなどがあります。

今回のレポートでは、ITRON仕様準拠OSを例に説明します。

2.タスクについて

タスクとは、OSがCPU時間を割り当てる単位(実行処理単位)になります。OSは決められたスケジューリング方法に基づいて、タスクの実行を管理(スケジューリング)します。

スケジューリング方法としては、以下の2つがあります。

  1. 優先度ベースのプリエンプティブスケジューリング
  2. ラウンドロビンスケジューリング
2.1.優先度ベースのプリエンプティブスケジューリング

“プリエンプティブ”とは、CPU時間をOSが管理する方式のことです。
この方式では、OSはタスクに設定された優先度を元に、実行管理を行います。

2.2.ラウンドロビンスケジューリング

この方式では、同優先度のタスクに対して均一にCPU時間を割り当てます。
それだけではシステムとしてリアルタイム性が低くなってしまうため、優先度ベースのプリエンプティブと絡めて実装されます。

3.タスク間同期

マルチタスク環境で1つのシステム(機能)を実現する場合、他タスクの処理を待つことや、排他制御を行う必要が出てきます。
このような場合に、イベントフラグ、セマフォなどの同期オブジェクトが使用されます。

○ イベントフラグ

1つの事象を1ビットに割り当てておき、タスクはその事象を待つことができます。

○ セマフォ

セマフォとはタスク同期に用いられるオブジェクトのことで、和訳は手旗信号、信号機の意味です。
セマフォに設定されたカウンタ数までのアクセスが可能であるため、マルチタスク環境でリソース(I/Oやメモリなどの資源)の排他制御を行うことができます。

アプリケーション実装時には、タスク間で同期オブジェクトを用いて処理順の制御や、リソースの使用管理を行います。

タスク間同期で注意する点として“デッドロック”があります。
これは複数タスクがリソース獲得待ちなどで永久に待ち状態になる状態のことです。

デッドロックは組み込みシステムではシステム停止という致命的な問題になるため、発生させない設計、実装を行うことや復帰手段を持たせることになります。
実際の開発時には資源の排他制御用オブジェクトへアクセスするタスクが複数になる場合や繰り返し処理を行うような場合には注意して設計、実装を行うようにしています。

4.タスク間通信

タスク間同期と同様に、システム実現には複数タスク間でのデータ受け渡しや実行指示を行う必要があります。
このような場合にメールボックス、メッセージバッファなどの通信機能が使用されます。

○ メールボックス

タスク間通信の処理で、データアドレスの受け渡しを行う方式であり、処理データサイズが固定長になるため、OSの処理時間を予測することができます。

○ メッセージバッファ

メールボックスと同様の通信機能ですが、データそのものを受け渡す方式のため、処理データサイズが可変になり処理時間を予測することが難しくなります。

RTOSを使用したソフトウェア開発では、これらのOS機能を組み合わせることによりソフトウェアに要求される機能を実現することになります。

5.RTOSあり/なしの選択

RTOSは一概に載せたほうがよいというものでもありません。
対象となるシステム(ソフトウェア)により、RTOSあり/なしの選択を行うことになります。

例1 多機能並列実行型ソフトウェア

さまざまな通信,入出力を並列で動作させる必要があり、それに対する処理も行うようなソフトウェアを開発しようとした場合、以下のような状態が想定されます。

  • 開発システム案
  • 想定される状態
    • ハードウェアリソース(CPU性能、メモリ容量)に余裕がある。
    • 多人数で一つのソフトウェア開発を行う。
    • 開発後の変更、機能追加がある。

このようなソフトウェアでは、RTOSを使用することにより、開発効率のアップや、メンテナンス性を保つことができるようになります。

例2 単機能実行型ソフトウェア

例1とは反対に単一機能のみで、その機能だけを行うようなソフトウェアの場合、以下の状態が想定されます。

  • 開発システム案
  • 想定される状態
    • ハードウェアの制約が厳しい。
    • 開発コストの問題がある。

このようなソフトウェアでは、RTOSを使用する利点が無い(もしくは利用できない)ことになり、使用しないで開発を行うことになります。

例3 時間制約のあるソフトウェア

上記2例とは別に、RTOSを使用できるような構成でもマイクロ秒での処理が必要なソフトウェアではRTOSを使用することで、タスク切り替え時間などのOS処理時間が入りソフト要件を満たせない場合も出てきます。
このような場合はRTOSを使用しない(使用できない)ことになります。

6.RTOSメリット/デメリット

RTOSあり/なしの選択とも関連しますが、RTOSを使用することによるメリット/デメリットは以下のようになります。

メリット
  • 大規模ソフトウェアの階層化、構造化、コンポーネント化ができる。
  • タスクごとの設計/製造により開発効率アップが期待できる。
  • メンテナンス性向上の効果が期待できる。
デメリット
  • OSの概念や機能の理解する時間が必要になる。
  • マルチタスク動作のため、処理タイミングが見えにくい。(デバッグ効率低下)
  • OS起因による問題の場合、原因がわかりにくい。

システム設計段階では、ソフトウェアへの要求、ハード構成、開発規模と上記のメリット/デメリットを考慮してRTOS使用の有無を判断することになります。

(Y.S.)

[参考文献]
CQ出版社
リアルタイムOSと組み込み技術の基礎
翔泳社
リアルタイム組み込みOS

関連ページへのリンク

関連するソフテックだより