こんにちは、ナナです。
組み込み開発ではOSを搭載していない機器と搭載している機器があります。OSを搭載していない機器の開発とはマイコン入門編で実施した開発形態ですね。
リアルタイムOSはソフトウェアシステムに対していったいどのようなメリットとデメリットをもたらすのでしょうか。本記事ではそのあたりを解説していきます。
本記事では次の疑問点を解消する内容となっています。
ではリアルタイムOSを搭載するメリットとデメリットを語っていきましょう。
リアルタイムOSのシステムの位置づけ
リアルタイムOSは主にCPU・メモリ・割り込みに関するハードウェアを制御するモジュールの位置づけとなります。
特にCPUというハードウェアに対しては、アプリケーションから見てCPUを多重化しているように見せかける機能を持っているのが特徴です。
![位置づけ](https://monozukuri-c.com/wp-content/uploads/2019/06/0bfaaa04f52cb5b3c00b3365b00a8a94-1.png)
アプリケーションソフトやデバイスドライバは適宜リアルタイムOSを利用しながら役割を果たします。リアルタイムOSはこのような位置に配置されるソフトウェアになります。
リアルタイムOSを搭載するメリット
リアルタイムOSを搭載している機器は山ほどあるのですから、もちろんメリットがあります。
開発規模を大きくできる
OSを搭載したシステムと搭載していないシステムでは開発できる規模が断然変わってきます。
私はITRONのOS上で動作する数百万ステップ程度のシステム開発を見てきました。リアルタイムOSの仕組みとモジュール分割手法を組み合わせることで相当な規模のシステム開発が可能となります。
![縁の下の力持ち](https://monozukuri-c.com/wp-content/uploads/2019/06/1560441fe8e2ef65698a267531b835f3-1.png)
それくらいの規模でも開発ができるのはOSという下支えがあるからであり、OSは縁の下の力持ち的な存在となってくれるのです。
様々な機能をOSが提供してくれる
ソフトウェアシステムを作ろうとすると、いろいろなプログラムが必要となりますね。
リアルタイムOSはシステムにおいて必要となるであろう様々な機能を提供してくれるため、皆さんはそのサービスを自由に利用することができるようになります。
![願いを叶えるOS](https://monozukuri-c.com/wp-content/uploads/2019/06/ea9716635bd6eec992409f2d8288edff.png)
これにより無駄なプログラムを作る必要が減り、作業効率が上がります。
多くのミッションを同時にこなすことができる
あの程度の規模感であればOSを搭載していなくても、それほど開発は難しくありません。
しかし、システム規模が大きくなるにつれてシステムのミッションが多くなっていくと、どんどん開発が難しくなっていきます。
そんな時にリアルタイムOSが様々なミッションを同時並行で作業できる環境を提供してくれます。これこそがマルチタスクと呼ばれるリアルタイムOSにおける最強の機能です。
![マルチタスク](https://monozukuri-c.com/wp-content/uploads/2019/06/3014640696153ba402417fe0eb5b92f7-1.png)
マルチタスクに関しては別途専用の記事にて紹介いたします。
リアルタイムOSを搭載するデメリット
リアルタイムOSを搭載すること全てがハッピーになるわけではありません。捧げるものがあって初めて便利さという対価を得ることができるのです。
![対価](https://monozukuri-c.com/wp-content/uploads/2019/06/3ff9e3c5ec91338d8f60898b98c0b384.png)
一体、何を支払うべきなのでしょうか?
CPU・メモリ資源を使用する
リアルタイムOSはもちろんソフトウェアですので、プログラムとして記述されています。ということは関数や変数なども多量に使用することになります。
そのため、動作させるためのメモリやCPU資源を提供する必要があります。
ただし、汎用OSなどに比べればリアルタイムOSは小型のためそれほど多くの資源を使用するわけではありません。さらに昨今のマイコンは高性能・大容量化もしているため、このデメリットはそれほど大きなものではないでしょう。
リアルタイムOSを扱うためのスキルが必要
リアルタイムOSが搭載されたシステム上でソフトウェアを作成するということは、そのお作法を守った上でプログラミングをする必要があります。
経験のある方はよいのですが、リアルタイムOSを扱ったことがない方は、この技術の習得を余儀なくされます。
![技術格差](https://monozukuri-c.com/wp-content/uploads/2019/06/8b7a25339fc2374382865cc547b4a00b-1.png)
本カリキュラムでは主にこのデメリットを解消するのが目的です。
対象のボードで動作させるための移植が大変
リアルタイムOSを扱う上で最も大きなデメリットがこの移植作業の大変さです。
組み込み機器というのは様々なマイコン環境があります。リアルタイムOSはマイコンに直結したソフトウェアのためマイコンの違いの影響をもろに受けます。
そのため、リアルタイムOSを対象の機器で動作させる移植作業こそが最大の難関なのです。実際の開発現場ではこの移植作業はかなりの経験を積んだ開発者が対応することになります。
![ポーティングの難しさ](https://monozukuri-c.com/wp-content/uploads/2019/06/bad4d3f1a29c8b4427b57e59c848ea22-1.png)
個人で開発を行っているような方は、この移植作業でつまづくと動かすまでに数日を持っていかれたり、相談相手もおらず移植作業自体をあきらめるなんてことも珍しくありません。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/bfc1cf65d1130f875793b49176917183-1.png)
ITRONを基礎から体系的に学びたい方はこちらからどうぞ~