不確定特異点

広く深く、ところどころ超深く

なぜ RTOS を使うのか?

複数のコンテキストの独立性(保守性)と応答性を保つため、というのが現状の個人的な見解です。いま組み込み向けの OS のプロトタイプを実験的に作っているのですが、そもそもどういうときに OS が必要になるのか?という視点を忘れがちになりそうなので、最近なんとなく考えてました。

よくある説明として、マルチタスキングにより複数のコンテキストを共存させる、というのが理由としてあげられることが多いのですが、それだけでは理由として十分ではない気がします。例えば、無限ループで回るメインタスクの中に、通信や表示などの入出力処理を入れる場合であっても、割り込み処理ですべて賄うことも可能であり、わざわざ RTOS を入れてタスク分割する必要はありません。しかし、共存するコンテキストの数が多くなり、さらに割り込み処理が重くなってくると、割り込み禁止期間が長くなり、その間、他のコンテキストが割り込みに応答できなくなる事態が発生します。そのため、割り込み処理を少なくし、割り込み禁止期間を短縮してこの事態に対応することは可能ですが、そうなると多くの場合、今度は割り込み処理の続きをどこか別の場所で続行する必要があり、実行中のコンテキスト中で他のコンテキストに割り込みが起きたかを定期的にポーリングすることになると思われます。結果として、コンテキスト間の結合度が上がり保守性の悪化につながります。

以上のように、複数のコンテキストをできるだけ独立させることと、割り込み禁止期間を短くして、応答性をあげること、の 2 点が大きな理由になるだろうと思います。リアルタイム性云々は、これらの RTOS を使う必要性を満足した上で、問題となる応答性の性能を計ろうとした場合に活きてくるのだと思います。たぶん。