データを集めてくるプロセスの設計について考えてみましょう。 データを フロントエンドから読み出してバッファに書き込むプロセスです。これまで見 てきたように、このプロセスもいくつかの状態の間を遷移します。設計を楽に するには、状態間の遷移はランコントローラからの指示に従うだけの簡単な構 造にします。その状態で何をするかを記述することに専念します。
データ収集プロセスの特徴はCAMACやVMEなどのフロントエンドからのハード ウエア割込を扱うことです。UNIXでは第一義的にはハードウエア割込はカーネ ルの仕事です。デバイスドライバーを準備するところからやらなければならな い場合もあります。ただし実際のデータ収集システムではおそらく単一の割込 モジュールからの割込だけで仕事は済んでしまいます。つまり非常に簡単なド ライバーで十分と言うことです。
このプロセスはデータソースとして機能します。通常一つだけ走ればよいも のですが、実験のセットアップや内容に応じていろいろなプログラムを用意す る必要があるのが普通です。キャリブレーション用のプログラムと本番用のプ ログラムといった感じです。
データソースであるということはバッファを通して下流のプロセスを制御す る側面も持つと言うことです。例えば実験開始(ランビギン)を表すレコードを 受け取ると下流のプロセスはそれに対応した行動をとるかもしれません。実験 終了(ランエンド)も同様です。実際にオペレータが実験終了を指示しても、そ の時点で下流プロセスが終了処理を開始していいわけではありません。バッファ は順に回っていくため、下流プロセスがランエンドレコードを受け取るのはし ばらく時間がたってからかもしれないからです。そういう意味でバッファその もので同期をとることになるからです。データソースプロセスという役割を収 集プロセスが担うように設計すると収集プロセスがランビギンやランエンドを 発生しなければならないということです。