RTOSを使うことのメリット
RTOSを使うことで、以下のようなメリットを得ることができます。
- スループットの向上
- 制御(排他、タイマー)の実現
- 開発効率の向上
- 移植性の向上
それぞれについて、詳細に説明します。
スループットの向上
優先度の設定を行うことで、高優先度タスクが処理できる状態になった場合、低優先度タスクが処理中であっても、即座にコンテキスト切り換えを行い、高優先度タスクの処理を開始することができます。高優先度タスクが低優先度タスクの処理完了待ち合わせを行わないことで、余分な待ち時間を排除することができスループットが向上します。
制御(排他、タイマー)の実現
優先度の設定を行うことで、高優先度タスクの処理中に低優先度タスクが処理を開始することを抑止し、排他制御を実現することができます。また、高優先度タスクを定期的に起床し処理を開始させることで、タイマー制御を実現することもできます。
開発効率の向上
タスク切り換え制御はRTOS側で行ってくれるため、タスク切り換え時の状態保存処理や状態復元処理を独自にプログラミングする必要がなくなり、開発効率が向上します。
移植性の向上
優先度の設定を行うことで、動作環境に依存した処理完了監視時間のチューニング等を行うことなく、タスクの処理順序の最適化を行うことができます。また、タスク切り換え制御はRTOS側で行ってくれるため、動作環境の違いを意識したプログラムを行う必要がなくなります。これによりプログラムの移植性が向上します。
RTOSを使うことのデメリット
また、RTOSを使うことで、以下のようなデメリットも発生します。
- 優先度付けに対する考慮が必要
- 使用リソースの増加
それでは、これらについても詳細に説明していきましょう。
優先度付けに対する考慮が必要
優先度付けを行う場合は、基本的に、起動周期の短いものやデッドラインの短いものを高優先度とします。しかし、これに準じた優先度付けだけでは、「低優先度に設定した処理内容が重要なタスクの処理を、いつまでも開始できない」といった状況が発生する可能性があり、意図した制御を行えないことになります。
これを回避するためには、処理内容の重要度も加味した優先度付けが必要となります。この優先度付けを誤ると、正常にプログラムが動作しないというリスクがあります。
使用リソースの増加
RTOSでは、RTOSとして動作するための管理情報等のためにリソースを消費します。これが使用リソースの増加要因となります。
このようにRTOSにはメリットとデメリットがあり、それらを十分考慮して利用する必要があります。