ひとつ前へ WWWルートへ mad@mail.wind.ne.jp
数理設計研究所 玉置晴朗 2003/08/15 - 2007/04/17
RTMは即時応答を必要とするシステムの動作を支援するものだ。WindowsやLinuxなどのOSと似てはいるがタスクの設計思想はまったく異なるので、その指針を与えておく。2007/04 リアルタイムモニタの公開(8086,8051) LINKにソースコード類、GPL公開です。
- ひとつのハードウェアはひとつのタスク
- ひとつのハードウェアをセマフォやフラグなどのRTM資源を利用して複数タスクで共有してはいけない。それは間抜けのすることである。なぜならば、せっかく高速応答を目的としたRTMのタスクSWがあるのに、さらにセマフォなどで二重手間をかけるべきではない。
- あまりタスクを分割しすぎないこと
- 1単位の仕事はひとつのタスクでやりとげよう
- 初心者が犯しやすい過ちは、タスクを細分化しすぎることである。どうしても必要な一連の処理はひとつのタスクで行なうほうがよい。ただし別の仕事まで抱え込まないこと。あれやこれやと頭を悩ますのではなくすっきりくっきりとした作業単位に整理し単純バカに仕事をこなすタスク分けがグッド。
- イベントの流れはタスクからタスクへ一方向にする
- 二つのタスクの間で呼応して動作するような構造をとるとデッドロックに陥るのは誰にでもわかる。しかし3つ以上のタスクの間でループを作るイベントは往々にして見逃される。どうしても避けられないのならひとつはタイマ処理でデッドロック回避の方策を採るべきだろう。
- 完全な単方向へのイベントならばRTMタスクは非常に効率よく動作しデバッグも簡単になる。
- プログラム記述法
- RTMに依拠する部分と普通の作業処理モジュールとは区別したほうがいい。そうすればRTM制御下ではないデバッグができる。完全に動くモジュールをRTM資源を使って組み立てたほうがマルチタスク特有のデバッグの困難さを回避できる。
- ハードウェアの監視
- 割り込みの監視はRTM構造に密接にかかわるものである。多重割り込み、他の割り込みへの影響を注意深く検討するべきだ。RTMは高度機能よりもSW時間の短さのほうが利益が大きい。
- タスクモジュールは一切の監視ループを排除すべきだが、どうしても監視ループが残るならタイマで監視する。
..end