汎用OSでは、複数の処理を同時並列で行う際に、時分割で処理を行うのが一般的です。従って、ある処理を行っている間に、別の処理の必要性が出ても、決められた時間が来るまで、処理は開始されません。
このように、一定時間ごとに処理を切り替える手法をタイムシェアリング方式、または、ラウンドロビン方式といいます。
WindowsやLinuxなど、PCに搭載のOSの多くは汎用OSです。
一方、RTOSでは、複数の処理(タスク)を同時並列で行う際に、汎用OSのように時分割で処理するのではなく、あらかじめ決められた優先度に従って処理します。そうすることで、それぞれのタスクを時間内に完了できるようになります。図2にあるように、同じ3種類のタスクでも、汎用OSとRTOSとでは、処理が完了するタスクの順番が異なることが分かります。RTOSはより優先度の高いタスクの方が早いタイミングで処理が完了していることが分かります。
マイコンの世界では、OSを実装する場合、RTOSが選択されるのが一般的です。その中でも代表的なものとして、uITRONが挙げられます。32bitマイコン STM32 (STマイクロエレクトロニクス製)などでも、複数の製品にてuITRONが動作します。STM32のようなフラッシュ内蔵マイコンに実装されるRTOSには、OS自体のフットプリント(必要なROM/RAMサイズ)が小さいことが求められます。
RTOSには、まず第1に「リアルタイム性」が必要であることはお分かりいただけたと思いますが、実はそれ以外にも以下に示すような機能が必要になります。
図2の例では、3つのタスクが出てきましたが、これらのタスクを同時並行的に処理するためには、それぞれのタスクの状態を把握し、状態に応じたタスクの切り替え(タスクスイッチング)やスケジューリング(タスクスケジューリング)を行う必要があります。この処理を担うRTOSの機能を並行処理機能またはタスク管理機能といいます。タスクの状態には、実行状態、休止状態、実行可能状態、待ち状態などがあります。
同期機能とは、あるタスクが終わらないと次のタスクが始められないなど、異なるタスク間で処理タイミングに相互関係がある場合にタスク間の同期を取る機能です。同期を取る方法には、セマフォやイベントフラグなどがあります。
通信機能とは、同期機能と似ているのですが、異なるタスク間の処理タイミングだけではなく、あるタスクで処理したデータを次のタスクで使用するなど、処理の内容にも相互関係がある場合にその内容のやり取りを行う機能です。通信の方法には、データキューやメールボックスなどがあります。
RTOSでは、あるタスクを一時的に止めたり、周期的に呼び出すなど、時間に関係した動作が必要になる場合があります。このような場合、時間管理機能を使用します。時間管理機能は、システムクロックの設定や参照、タスクの遅延処理、タイムアウト処理などを行います。
タスク間で割り込みが発生した場合、RTOSは現在処理中のタスクを一時的に中断し、割り込みに応じた処理に切り替える必要があります。このような場合、割り込み管理機能は、起動される割り込みハンドラ及びルーチンを管理します。具体的には、割り込みハンドラの定義、割り込みルーチンの生成および削除、割り込みルーチンの状態参照、割り込みの禁止/許可、割り込みのマスクなどの機能が含まれます。
限られた資源であるメモリをどのタスクがどれだけ使っているかを動的に管理するための機能です。管理の手法には、固定長メモリプール、可変長メモリプールなどがあります。
以上のように、OSには、さまざまな種類のものが存在し、リアルタイム性をもったRTOSと汎用OSに分類することができます。また、マイコンへ実装されるOSは、RTOSが一般的で、かつ、そのフットプリントが小さいことが要求されます。さらに、RTOSには備えるべき基本的な機能があり、それらの機能を駆使して、希望のアプリケーションソフトを構築していきます。
さて、2013年3月から1年に渡り、掲載を続けてきましたこの「マイコン入門!! 必携用語集」は、今回が最終回となりました。マイコンにかかわる基本的な言葉を一通り紹介できたかと思います。
この先、「あれ? この用語はどんな意味だったっけ?」「どんな仕組みでマイコンは動いているんだっけ?」など疑問が生じたら、ぜひこの連載を活用してください。また、新たに入社/配属される新人の方への教育ツールとしてご活用いただければ、幸いです。
なお、2014年4月からは、マイコン入門者から上級者まで、マイコンにかかわるエンジニアの皆さんが楽しめる新たな連載をスタートする予定です。ぜひ、お楽しみに!!
Copyright © ITmedia, Inc. All Rights Reserved.