next up previous contents index
Next: リアルタイム処理用関数 Up: リアルタイム処理(RTMATX) Previous: 入出力カード(D/A,カウンタ)のインターフェース関数

   
メモリ管理

リアルタイム処理を実現にはメモリ管理に工夫が必要である。 なぜなら,リアルタイム処理は高速に行なわれなければならないだけでなく, 割り込み処理中はメモリ確保するためのシステムコールを呼び出せないからである。

MATXのメモリ管理機構は,この問題を解決するのに適している。その方法は, リアルタイム処理を始める前に一度だけ,リアルタイム処理関数を呼び出すこと によって,リアルタイム処理中に必要なメモリをメモリ管理リストに登録するの である。 

  具体的には,関数rtStart()が実行されると,サンプリング時間毎の割り込み 処理が始まる前に1回だけon_task()が実行される。この1回目の実行中 かどうかは関数rtIsTesting()によって調べることができる。 このテスト中はアクチュエータから出力を出さないようにしなければならない。  

    関数on_task()に条件分岐あると,1回のテスト実行だけでは on_task()の実行に必要なメモリを正確に調べることができない。 このような場合,全ての条件に関するテスト実行を


  rtStartRehearsal()

  条件1;
  on_task();

  条件2;
  on_task();

  条件3;
  on_task();

  rtStopRehearsal()


のようにrtStartRehearsal()rtStopRehearsal()で囲んで行えば, on_task()の実行に必要なメモリをメモリ管理リストに登録できる。 ただし,メモリ管理リストには無駄なメモリも登録されてしまう。



Masanobu KOGA 平成10年8月19日