pulpul 日本の試験

プロジェクトマネージャ 概念書 · 組込み・コンピュータシステム

RTOSと組込みソフトウェア開発

RTOS(リアルタイムOS)は、処理結果の正しさに加えて、決められた時間内に応答することを重視して設計されたOSである。組込みシステムでは、タスク管理、タスク間の同期と排他制御、割込み処理などをRTOSが提供し、開発者はこれらの機能を前提にソフトウェアを組み立てる。

タスクの状態遷移とプリエンプション

RTOSでは、処理の単位であるタスクがCPUの割当てに応じて状態を変える。タスクの状態は、実行状態、実行可能状態、待ち状態、休止状態、終了状態などに分けて整理される。優先度の高いタスクが実行可能になるとCPUを横取りし、これをプリエンプションと呼ぶ。横取りされた実行中のタスクは実行可能状態に戻り、次のCPU割当てを待つ。プリエンプションはタスクの中断であり、入出力の完了を待つ待ち状態や、処理を終えた終了状態とは区別しなければならない。

優先度ベースのプリエンプティブ方式では、周期タスクが周期内に処理を完了できるかを、最悪応答時間の計算で確かめる。優先度の高いタスクの実行は、低い優先度のタスクの応答を遅らせる妨害となるため、その分を見込んだ応答時間が周期を超えないかを判定する。判定は応答時間を反復計算で求め、値が一定になった時点で評価する。

共有資源の排他制御

複数のタスクが同じ周辺機器や変数を共用するときは、同時に使われないように排他制御を行う。RTOSのセマフォは、相互排除の用途ではミューテックスとして使われ、資源を使う前に取得し、使い終えたら解放する。I²Cバスを二つのセンサ値の読み取りタスクで共有する場合、読み取り前にロックを取得すれば、片方が使用中のもう片方は待つことになり、バスへの同時アクセスを防げる。

デッドロックの原因と防止

デッドロックは、複数のタスクが互いに相手の保持する資源を待つ循環待ちが生じて、どのタスクも進めなくなる状態である。二つのタスクが資源を逆の順序で取得すると、この循環待ちが起こり得る。防止の代表的な方法は、すべてのタスクが資源を同じ順序で獲得するように統一することである。 順序が統一されていれば、先に取得した資源を保持したまま後の資源を待つ関係は一方向にしか生じず、循環が成立しない。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む