リアルタイム処理システムの調査 リアルタイム処理システム 定義:コンピュータの外部で発生した事象に対して、対応する処理を即座に実行するシステム 特徴:   (1)処理すべきデータが外部からランダムに発生する。   (2)データが発生した時点ですぐに処理を行う。   (3)ランダムにデータを発生する機器が複数ある。   (4)システムによっては、処理結果を一定時間内にデータを発生したところに 応答しなければならない。 データの入力特性:    図1にリアルタイムシステムのデータの入力特性を示す。ランダムにデータが入力される機器の制御やデータ処理システムでは、CPUを有効に配分できるプログラム構造が必要。データの入力がラッシュした時、緊急度の高い入力データ処理を先行し、またCPUの処理能力を越える場合データに入力を押さえる制御が必須となる。  時間的に処理するデータ量が時間的に変化する状態に対応できる機構を備えたプログラムを”リアルタイム処理プログラム”と呼ぶ。 リアルタイム処理プログラムの構造上の特徴:   リアルタイム処理プログラムは、次の3つのルーチンから構成される。  (1)ディスパッチャ(CPUを配分するコントローラ)  (2)入出力ハンドラ(データの送受信)  (3)データ処理  (データの加工) (1)ディスパッチャ  リアルタイム処理システムでは、複数のデバイスからランダムにデータが入力される。そのためデータに入力があるかどうかを順番に調べ、データ(CPUを必要とするルーチン)があれば、CPUを配分する事が必要である。これがディスパッチャの役割である。 リアルタイム処理システムでは複数のデータを並行して処理する必要がある。ディスパッチャの動作を図(1)-1 図(1)-2に示す。   (1)ー1           (1)ー2 ディスパッチャはイベントテーブルと呼ぶテーブルの中のイベントフラグをスキャンしている。イベントフラグがあると、そのイベントの処理ルーチンをコールする。  イベントフラグセットするのは入出力ハンドラである。  ディスパッチャの役割は、CPUを効率よく処理ルーチンに与えることである。 イベントの緊急度に応じて優先度を付けて、CPUの配分をする機能を”優先度 処理”という。 最も優先度が高いのは、外部装置からデータを受け取るルーチンですが、通常これらは割り込みルーチンによって行う。  データ処理中うでは、エラーの優先度を高くする。 (2)入出力ハンドラ:  CPUが不要になる(入出力命令の完了待ち)と、他のイベントの処理の為にCPUを使用出来るようにする必要がある。  入出力命令を機器に対して出力した後、命令の完了を待たず、命令を出したプログラムに返ることをイミディエイト・リターンという。  入出力ハンドラは、イミディエイト・リターンする前にイベント・ウェイト・フラグをセットしておき割り込みによって入出力の完了が通知されるか、あるいはポーリング方式によって入出力命令を検出したとき、イベントフラグをセットする。     リアルタイムハンドラ:  ランダムな入力があるデバイスを制御するハンドラを、ここでは”リアルタイムハンドラ”と呼ぶ。  プログラムの入出力動作のタイミングに関係なく外部からのデータが発生し、プログラムによる処理が開始する形態を”イベントフラグ型”と呼ぶ。  データは割り込みルーチンによって受け取られ、データバッファに蓄えられる。ディスパッチャにより、ハンドラが定期的にあるいはイベントフラグにより起動される。 (3) データ処理: リアルタイム処理では、複雑な処理の場合には、複数のルーチンの継続によって処理するようにする。CPUガ連続して使われる時間を小さくし、CPUの使用権をそのつどディスパッチャに返すことによりディスパッチャはより優先度の高いイベントにCPUを与えることが出来るようになる。 ポーリング方式:  右にポーリング方式の図を示す。 この方法は、定期的に入出力装置に 対して入力データがあるか問い合わ せあれば読み取る方法である。  プログラムは、流れがシーケン シャルに組め、簡単になる。  データがない場合でも定期的に ポーリングルーチンを走らせる為 CPUに無駄が生じる。  割り込みによる方式:  割り込みルーチンで受け取ったデータは、プログラムですぐに処理することができないため、一時保存しておき後から処理プログラムによって拾い上げ、処理されることになる。  プログラムが他の処理をしていても強制的にデータを受け取るルーチンを起動できるため、CPUに無駄がなくランダムにデータが入力される機器には特に有効な方法である。