この投稿では、Soft RTOSとHard RTOSによるLaye作り方の違いについて説明します。
Soft RTOS
Soft RTOSは、時間制約はありますが、多少の遅延が許容されるシステム向けのRTOSです。
特徴:
- デッドラインを守ることが望ましいが、多少の遅れは許容される
→ 例:動画再生、音声処理、ゲームなど - 遅延が発生しても致命的ではない
- スケジューリングは柔軟性が高く、一般的なOSに近い
- 実装が比較的簡単で、コストも低い
Hard RTOS
Hard RTOSは、密な時間制約を守る必要があるシステム向けのRTOSです。タスクの実行時間が絶対に保証される必要があります。
特徴:
- デッドラインを絶対に守る
→ 1ミリ秒以内に処理しなければならないタスクが、必ずその時間内に完了する - タイミングの遅延が致命的
→ 例:航空機制御、医療機器、自動車制御など - 高精度なタイマーと割り込み制御が必要
- スケジューリングは優先度ベースで、遅延を最小限に抑える
Soft RTOSとHard RTOSで異なるLayerの作り方
Soft RTOSのLayer構造は、下図のように下位のLayer関数を順番にコールすることが多いです。Layer間インタフェースは、関数の引数や戻り値で行います。
Hard RTOSのLayer構造は、下図のようにLayer関数の処理位置で決めます。Layer間インタフェースはグローバル変数等を用いることが多いです。この構造は、スパゲティ構造になりやすいので、Layer間インタフェースやコンポーネント間インタフェースを設けることをお勧めいたします。
