UNIX上のDAQシステム
1.はじめに
UNIXをデータ収集システムのためのOSに選ぶ場合、いくつか注意する必要が
あります。それは主にUNIXが実時間システムでないことに起因します。そのことを
うまくこなしながらシステムを作っていく必要があります。
2.実時間システムとは
まず実時間システムとはどういうものかを見ておきましょう。プロセス間
通信やネットワークを備えていることはもちろんですが、一般的に
実時間システムとはさらに次のような性質を持ったOSを指します。
- トランザクション(割り込みなどの事象)が発生してから、それを処理する
ルーチン(完了ルーチン)に制御がわたるまでの時間が、ある最大値以下になる
ことが保証されていること。
- 必要に応じてダイナミックにプロセスの優先順位を上下できること。通常は
低い優先度のプロセスを、ある処理の期間に限り優先させることでシステムの
性能を保証できる。
- プロセス間で共通のプロセス変数を利用できること。あるプロセスが変数を
変更すると他のプロセスにそれが伝搬する。
- プロセスの切り替えが高速に行えること。
- 非同期入出力の機能を有すること。入出力を要求するときに、それが
完了した時に呼ばれるルーチンを指定する。
これらは、実時間プロセスを効率的に実行するために、直接・間接に必要となる
機能です。一般的なUNIXではこれらの機能は保証されていません。そのため、
従来はUNIXは実時間システムには不向きなOSと考えられてきました。
3.UNIXによるオンラインシステム
上述したようにUNIXは実時間システムとはいえないものです。そこで、ある面では
妥協をして行く必要があります。
最大レーテンシーの保証は、これはどうしようもありません。ですが、計算機の
処理能力が高くなっているので、多少大きなレーテンシーが生じても問題ないと
考えることもできます。
UNIXでの優先順位の制御は非常に貧弱です。が、複数の計算機を導入し、おのおのの
計算機で走る主要なプロセスの数を限定すれば、これは回避できる問題となります。
これは同時に、プロセス切り替えの時間のオーバーヘッドについても回避します。
プロセス間で共有できるシステム変数は、本来UNIXにはありませんが、共有メモリーの
機能はあるので、ユーザ側でそれを実装することは可能です。
非同期入出力は、これもどうしようもありません。擬似的にselectシステムコールを
用いることで多数の入出力を管理することになります。
このような問題があるにしても、今日では安価なPCと無料のLinuxを用いてシステムを
構築できるメリットは絶大です。価格対性能比を考えると明らかでしょう。
[intro/unixdaq.html] Last Modified : 26-Feb-2001.
KONOEコラボレーション
konoe-req@konoe.kek.jp