(57)【特許請求の範囲】
【請求項１】
伝送媒体によって接続された複数のプロセッサを有し、ジョブ単位に処理を各プロセッサに分担させる分散処理システムにおける負荷を分散させる方法であって、
第１の伝送媒体に接続された１以上の第１のプロセッサと、第２の伝送媒体に接続された１以上の第２のプロセッサと、前記第１の伝送媒体と第２の伝送媒体とに接続された１以上の第３のプロセッサとを用い、
前記第１の各プロセッサに、ジョブを分類した機能のうちの第１の機能を割り当て、前記第２の各プロセッサに、ジョブを分類した機能のうちの第２の機能を割り当て、前記第３の各プロセッサに、前記第１の機能と第２の機能とを割り当て、
前記第１の各プロセッサと、前記第３の各プロセッサとに、自プロセッサにおいて発生した第１の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第１の機能に属するジョブを処理させ、
前記第２の各プロセッサと、前記第３の各プロセッサとに、自プロセッサにおいて発生した第２の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第２の機能に属するジョブを処理させることを特徴とする分散処理システムにおける負荷分散方法。
【請求項２】
請求項１記載の負荷分散方法であって、
前記第１の機能と第２の機能との間に優先順位を与え、
前記１以上の第３のプロセッサの、前記発生したジョブを処理するまでに担うことになる負荷を、当該プロセッサで今後処理する予定のジョブと、前記発生したジョブとを、各ジョブの属する機能の優先順位に従った順番で処理するとした場合に、前記発生したジョブを処理するまでに当該プロセッサが担うこととなる負荷とすることを特徴とする分散処理システムにおける負荷分散方法。
【請求項３】
伝送媒体によって接続された複数のプロセッサを有し、ジョブ単位に処理を各プロセッサに分担させる分散処理システムであって、
前記複数のプロセッサとして、
第１の伝送媒体に接続され、ジョブを分類した機能のうちの第１の機能が割り当てられた１以上の第１のプロセッサと、
第２の伝送媒体に接続され、ジョブを分類した機能のうちの第２の機能を割り当てられた１以上の第２のプロセッサと、
前記第１の伝送媒体と第２の伝送媒体とに接続され、前記第１の機能と第２の機能とを割り当てられた１以上の第３のプロセッサとを有し、
前記第１の各プロセッサと前記第３の各プロセッサとは、自プロセッサにおいて発生した第１の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合い、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサは、前記発生した第１の機能に属するジョブを処理し、
前記第２の各プロセッサと前記第３の各プロセッサとは、自プロセッサにおいて発生した第２の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合い、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサが、前記発生した第２の機能に属するジョブを処理することを特徴とする分散処理システム。
【請求項４】
請求項３記載の分散処理システムであって、
前記第１の機能と第２の機能との間に優先順位を与え、
前記１以上の第３のプロセッサは、前記発生したジョブを処理するまでに担うことになる負荷を、当該プロセッサで今後処理する予定のジョブと、前記発生したジョブとを、各ジョブの属する機能の優先順位に従った順番で処理するとした場合に、前記発生したジョブを処理するまでに当該プロセッサが担うこととなる負荷とすることを特徴とする分散処理システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、複数のプロセッサによって分散処理を実現する分散処理システムに関し、特に、マスタプロセッサを必要とせずに各プロセッサの処理の負荷を適当に分散する技術に関するものである。
【０００２】
【従来の技術】
同一の伝送媒体に接続された複数のプロセッサによって構成されるマルチプロセッサシステムでは、従来、１台のプロセッサ（マスタプロセッサ）が集中的に全体のジョブの管理を行ない、適宜ジョブを各プロセッサに振り分けることにより分散処理システムを実現していた。
【０００３】
しかし、このような分散処理システムでは、マスタプロセッサがダウンすれば、ジョブ管理を行なうことができなくなる。また、このような分散処理システムでは、ジョブ管理のために、システム全体に関する情報を、マスタプロセッサが実行するジョブ管理プログラムに含めることが必要となる。そして、このために、システムの拡張や改修に際しては、マスタプロセッサの、ジョブ管理プログラムを必ず修正しなければならなかった。
【０００４】
一方、マスタプロセッサによる一元的なジョブ管理を行なわない分散処理システムに関する技術としては、特開昭62-052664号公報に記載された技術が知られている。
【０００５】
この技術では、同一の伝送媒体に接続された各プロセッサが、それぞれジョブを実行するか否かを判断する。
【０００６】
【発明が解決しようとする課題】
前記特開昭62-052664号公報に記載された技術は、全てのプロセッサが同一の伝送媒体によって接続されていることを前提としている。
【０００７】
このため、たとえば、一部のプロセッサが伝送媒体Ａに、一部のプロセッサが伝送媒体Ｂ側に接続され、一部のプロセッサが伝送媒体Ａと伝送媒体Ｂの両方に接続されているようなシステムでは、良好に負荷の分散を行なうことができない。
【０００８】
すなわち、一方の伝送媒体に接続されたプロセッサの負荷が大きく、他の伝送媒体に接続されたプロセッサの負荷が小さくなっても、これを分散し平均化することができない。
【０００９】
また、前記特開昭62-052664号公報に記載された技術では、全てのジョブを平等に扱っているため、重要なジョブ、緊急を要するジョブなどを優先的に処理することができない。
【００１０】
そこで、本発明は、マスタプロセッサ等によってジョブを一元的に管理したりすることなしに、異なる伝送媒体に接続されたプロセッサ間での負荷の分散を行なうことのできる分散処理システムを提供することを目的とする。
【００１１】
また、本発明は、マスタプロセッサ等によってジョブを一元的に管理したりすることなしに、ジョブの優先制御を行なうことのできる分散処理システムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明によれば、伝送媒体によって接続された複数のプロセッサを有し、ジョブ単位に処理を各プロセッサに分担させる分散処理システムにおける負荷を分散させる方法であって、
第１の伝送媒体に接続された１以上の第１のプロセッサと、第２の伝送媒体に接続された１以上の第２のプロセッサと、前記第１の伝送媒体と第２の伝送媒体とに接続された１以上の第３のプロセッサとを用い、
前記第１の各プロセッサに、ジョブを分類した機能のうちの第１の機能を割り当て、前記第２の各プロセッサに、ジョブを分類した機能のうちの第２の機能を割り当て、前記第３の各プロセッサに、前記第１の機能と第２の機能とを割り当て、
前記第１の各プロセッサと、前記第３の各プロセッサとに、自プロセッサにおいて発生した第１の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第１の機能に属するジョブを処理させ、
前記第２の各プロセッサと、前記第３の各プロセッサとに、自プロセッサにおいて発生した第２の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第２の機能に属するジョブを処理させることを特徴とする分散処理システムにおける負荷分散方法を提供する。
【００１３】
また、このような負荷分散方法において、
前記第１の機能と第２の機能との間に優先順位を与え、
前記１以上の第３のプロセッサの、前記発生したジョブを処理するまでに担うことになる負荷を、当該プロセッサで今後処理する予定のジョブと、前記発生したジョブとを、各ジョブの属する機能の優先順位に従った順番で処理するとした場合に、前記発生したジョブを処理するまでに当該プロセッサが担うこととなる負荷とすることができる。
【００１４】
【作用】
本発明に係る負荷分散方法によれば、第１の伝送媒体に接続された１以上の第１のプロセッサの各プロセッサと、前記第１の伝送媒体と第２の伝送媒体とに接続された１以上の第３のプロセッサの各プロセッサとに、自プロセッサにおいて発生した第１の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第１の機能に属するジョブを処理させる。また、同様に第２の伝送媒体に接続された１以上の第２のプロセッサの各プロセッサと、前記第３の各プロセッサとに、自プロセッサにおいて発生した第２の機能に属するジョブを処理するまでに担うことになる負荷の情報を相互に通知し合わせ、自プロセッサの負荷が通知された他のプロセッサの負荷より小さかったプロセッサに、前記発生した第２の機能に属するジョブを処理させる。したがって、第１の機能に屬するジョブの処理負荷が高まれば、前記第３の各プロセッサは第１の機能に屬するジョブの処理を行なう機会が高まる。一方、第２の機能に屬するジョブの処理負荷が高まれば、前記第１の伝送媒体と第２の伝送媒体とに接続された各プロセッサは第２の機能に屬するジョブの処理を行なう機会が高まる。従って、この前記第１の伝送媒体と第２の伝送媒体とに接続された第３の各プロセッサを介して、第１の伝送媒体に接続された第１の各プロセッサと、第２の伝送媒体に接続された第２の各プロセッサとの間の負荷は分散される。
【００１５】
また、さらに、前記発生したジョブを処理するまでに担うことになる負荷を、当該プロセッサで今後処理する予定のジョブと、前記発生したジョブとを、各ジョブの属する機能の優先順位に従った順番で処理するとした場合に、前記発生したジョブを処理するまでに当該プロセッサが担うこととなる負荷とすれば、より優先順位の高い機能に属するジョブが処理される機会が高まり、結果、優先順位の高い機能に属するジョブは、各プロセッサの処理能力を多く用いて、より速く処理される。
【００１６】
【実施例】
以下、本発明の実施例を説明する。
【００１７】
まず、本発明の第１の実施例について説明する。
【００１８】
図２に、本第１実施例に係る分散処理システムのハ−ドウェア構成を示す。図示するように、本第１実施例に係る分散処理システムは、プロセッサ１１〜１６を含むマルチプロセッサシステム上に構築される。
【００１９】
プロセッサ１１は伝送路１と伝送路２に接続され、プロセッサ１２は伝送路１に接続される。プロセッサ１３は伝送路２と伝送路３に接続され、プロセッサ１４は伝送路２に接続される。プロセッサ１５は伝送路３と伝送路４に接続され、プロセッサ１６は伝送路３に接続される。なお、図中では、伝送路としてバス型の伝送路を示したが、これは任意の形態の伝送路でよい。
【００２０】
各プロセッサは、接続した伝送路を介して他のプロセッサとデータを授受する。各伝送路は、それぞれ異なる機能に対応しており、各機能は対応する伝送路に接続された複数のプロセッサが行なうジョブ群によって実現される。
【００２１】
以下では、伝送路１に接続された複数のプロセッサが行なうジョブ群により実現される機能を機能１と呼び、機能１を実現するジョブ群に含まれるジョブを実行するプロセッサの集まりをプロセッサ群１と呼ぶ。また、伝送路２、伝送路３、伝送路４についても同様である。また、以下では、機能１を実現するジョブ群に含まれるジョブは、機能１に属しているということにする。
【００２２】
すなわち、プロセッサ１１、１３、１５はそれぞれ２つのプロセッサ群に所属し、プロセッサ１１はプロセッサ群１とプロセッサ群２、プロセッサ１３はプロセッサ群２とプロセッサ群３、プロセッサ１５はプロセッサ群３とプロセッサ群４に属する。したがって、プロセッサ１１は機能１と機能２、プロセッサ１３は機能２と機能３、プロセッサ１５は機能３と機能４に属するジョブを処理する。
【００２３】
図３に、プロセッサ１１〜１６の構成を示す。図では代表としてプロセッサ１１の構成を示す。
【００２４】
図示するように、処理装置３００は、インターフェイス３０１を介して伝送路１と伝送路２に接続され、また、インターフェイス３０２を介して外部のターミナル３５０に接続される。また、処理装置３００は、入力バッファ３０３、出力バッファ３０４、データ格納メモリ３０５、作業時間格納メモリ３０６、優先順位格納メモリ３０７、内容コードテーブル３０８、所属コードテーブル３０９、優先順位テーブル３１０、タイマ３３０、ジョブキュ−３４０、プログラムメモリ３５０に接続される。入力バッファ３０３、出力バッファ３０４は、インタフェ−ス３０１、インタフェ−ス３０２と処理装置３００間で入出力するデータ等を一旦格納するために用いられる。プログラムメモリ３５０は、ジョブの処理に用いられる実行可能形式のコンパイラ、サ−ビスプログラム等の各種プログラムを格納する
ただし、実際には、プロセッサ１１は、図１６に示すような通常の構成を有する電子計算機で実現することができる。この場合は、処理装置３００はＣＰＵ１６００、インターフェイス３０１は通信アダプタ装置１６００１、インターフェイス３０２は入出力制御装置１６０２等を用いて実現される。また、入力バッファ３０３、出力バッファ３０４、データ格納メモリ３０５、作業時間格納メモリ３０６、優先順位格納メモリ３０７、ジョブキュ−３４０は、主記憶装置１６０３上に構築する。また、プロセッサ１１は、磁気ディスク装置等の外部記憶装置１６０４を備えており、外部記憶装置１６０４には、プログラムメモリ３５０や、内容コードテーブル３０８、所属コードテーブル３０９、優先順位テーブル３１０等を構築する。
【００２５】
さて、内容コードテーブル３０８には、プログラムメモリ３５０に格納された実行形式のプログラム、すなわち、このプロセッサで実行可能なプログラムを示すコード（以下、「内容コード」と呼ぶ）が格納される。
【００２６】
所属コードテーブル３０９には、このプロセッサで実行するプログラムが処理するジョブが属する機能を示すコード（以下、「所属コード」と呼ぶ）を格納する。ある特定の機能に属するジョブを処理するプログラムを実行するプロセッサは、また、その特定の機能に属するジョブを発生する。両者のプログラムは、一般的には同じものである。さて、このように所属コードは、各プロセッサがどの機能に対応するプロセッサ群に所属するかを表す。
【００２７】
なお、内容コードは、実行可能形式のプログラムがプロセッサのプログラムメモリ３５０に格納される際に内容コードテーブル３０８に格納される。また、このとき、所属コードも所属コードテーブル３０９に格納される。
【００２８】
また、優先順位テーブル３１０には、処理装置３００が接続される伝送路１と伝送路２に対応する機能１と機能２のうち、どちらを優先させるかを示す優先順位が格納される。優先順位テーブル３１０の内容は、プロセッサの起動時に、また必要に応じて優先順位格納メモリ３０７に格納される。
【００２９】
なお、内容コードテーブル３０８、所属コードテーブル３０９、優先順位テーブル３１０は、適当な方法、例えばターミナル３５０等を介してオペレータにより予めセットされる。
【００３０】
また、プロセッサ１２、１４、１６のように単一の伝送路に接続されるプロセッサについては、一つの機能に属するのジョブしか処理しないため、優先順位テーブル３１０には何も格納されない。タイマ３３０は、後述する時刻計算に利用される。
【００３１】
さて、本第１実施例に係る分散処理システムにおいて、ジョブ実行に関して、全プロセッサは対等であり、特定のプロセッサにジョブ管理機能が集中する従来システムと異なる。また、各プロセッサが２つのプロセッサ群に属することを認めており、１つのプロセッサが２つの機能に属するジョブを共に処理することを可能としている。これにより、この２つの機能を分担するプロセッサを介して、負荷が高いプロセッサ群に対応する機能を優先的に実行し、２つのプロセッサ群、すなわち、２つの機能の間で負荷の分散を行なうことが可能としている。
【００３２】
以下、本第１実施例に係る分散処理システムの動作について説明する。
【００３３】
あて、本第１実施例において、各プロセッサの処理装置３００がジョブ管理のために行なう処理は、次の３フェーズに分けることができる。
【００３４】
（１）処理装置上に、ある機能に属する新たにジョブが発生した時に行なう、その機能に対応するプロセッサ群へのジョブ内容のブロードキャスト
（２）ジョブ内容を受信した時に行なう、受信したジョブ内容の示すジョブの優先順位決定と、そのジョブを実行するか否かの決定。そして、実行すると決定した時に行なう、立候補メッセージのブロードキャスト（以下、受信したジョブを実行する内容を示す立候補メッセージをブロードキャストすることを「立候補」と言う）
（３）立候補メッセージを受信した時の実行決定
以下、各フェ−ズの詳細について説明していく。
【００３５】
まず、フェーズ（１）において、あるプロセッサ上で、なんらかのプログラムが起動して新たなジョブが発生すると、そのプロセッサの処理装置３００は、そのジョブの内容を、そのジョブが属する機能に対応するプロセッサ群中の自身以外のプロセッサに知らせるために、図４（a）に示したフォーマットのメッセージ（以下、「ジョブメッセージ」と呼ぶ）を送信する。図示するように、ジョブメッセージは、メッセージの種別（この場合はジョブメッセージであること）を示す分類コード４０１と、ジョブの内容の要点を示す内容コード４０２と、ジョブで処理する対象（プログラムやデータ）４０３とからなる。内容コード４０２は処理の種類、ジョブの規模、ジョブを処理するコンパイラ、サービスプログラムの指定、ジョブの識別コードなどを含む。また、この際、ジョブメッセ−ジの送信先は、所属コードテーブル３０９を参照して決定される。
【００３６】
ここで、所属コードテーブル３０９の構成例を図６に示す。
【００３７】
所属コードテーブル３０９の各行６００１、６００２、…は、自プロセッサの外部記憶装置に格納している各プログラムに対応する行である。第一行６００１は、所属コード（BC）６０１、およびプログラム名称が格納されているプログラムエリア（PROG）６０２より構成される。プロセッサの処理装置３００は、インタフェ−ス３０１を介して、ジョブを発生したプログラムに対応する所属コ−ドに対応する伝送路にジョブメッセ−ジを送出する。
【００３８】
伝送路に送出されたジョブメッセージは、その伝送路に接続された全てのプロセッサに達する。
【００３９】
フェーズ（２）において、各プロセッサは、図１のフローチャートに示す処理を行なう。
【００４０】
すなわち、各プロセッサの処理装置３００は、インタフェ−ス３０１を介して伝送路よりジョブメッセージを受信し（ステップ１０１）、受信したジョブメッセージが示すジョブ内容のジョブが実現する機能を、当該ジョブメッセ−ジを受信した伝送路から判別し、判別した機能に対応する所属コード４００を付加することにより、受信したジョブメッセ−ジを、図４（b）に示すフォーマットに変換する（ステップ１０２）。
【００４１】
そして、次に、ジョブメッセージの内容コードを調べて（ステップ１０３）、この内容コ−ドが示すジョブを処理するコンパイラ、サービスプログラムを自分が実行しうるか、すなわち、外部記憶装置に格納しているかを、内容コ−ドテ−ブル３０９を参照して判断する（ステップ１０４）。
【００４２】
そして、実行不可能の場合は、そのジョブメッセージを廃棄し（ステップ１０５）、処理を終了する。
【００４３】
一方、実行可能の場合は、先に付加した所属コード４００の対応する機能が、他方の機能（ジョブメッセ−ジを受信した伝送路でない方の伝送路に対応する機能）より、その機能が優先されるかどうかを優先順位格納メモリ３０７を参照して判断する（ステップ１０６）。
【００４４】
そして、次に、実行条件を算定する。実行条件は、そのジョブを、優先順位に従って処理した場合に、その処理が終了すると予測される時刻Ｔであり、そのジョブの属する機能の優先順位によって異なる。具体的には、次式により算定される。算定されたＴの値は作業時間格納メモリ３０６に記憶される。
【００４５】
受信したジョブの属する機能の優先順位の方が高いとき（ステップ１０７）、
Ｔ＝ｔ＋（ｔ２-ｔ１＋ｔ３＋ｔ４）／（１-ｔ５）          …（１）
ただし、
ｔ  ： 現在時刻
ｔ１：現在処理中のジョブの処理経過時間
ｔ２：処理中のジョブと受信したジョブと同じ機能に属する、自プロセッサで処理待ちの全ジョブの処理推定時間の総計
ｔ３： 当該プロセッサが立候補中のジョブの中で、受信したジョブと同じ機能に属するジョブの処理推定時間の総計
ｔ４：受信したジョブの処理推定時間
ｔ５：当該プロセッサがジョブの処理以外に行なう雑処理の単位時間における平均的な割合であり、０≦ｔ５＜１
受信したジョブの属する機能の優先順位の方が低いとき（ステップ１０８）、
Ｔ＝ｔ＋（ｔ２０-ｔ１＋ｔ３０＋ｔ４）／（１-ｔ５）      …（２）
ただし、
ｔ２０：処理中及び処理待ちの全ジョブの処理推定時間の総計
ｔ３０：当該プロセッサが立候補中のジョブの処理推定時間の総計
ただし、ジョブの処理推定時間とは、そのジョブの処理に要すると推定される時間である。
【００４６】
なお、処理待ちのジョブと、そのジョブが属する機能はデータ格納メモリ３０５に記憶し、処理の進行につれて更新する。また、ｔ２、ｔ３、ｔ２０、ｔ３０、ｔ５の値は作業時間格納メモリ３０６に保存し、処理の進行につれて更新する（ステップ１０９）。
【００４７】
さて、Ｔの計算が終わると、プロセッサの処理装置３００は、立候補メッセージを作成してジョブメッセ−ジを受信した伝送路にインタフェ−ス３０１を介してブロードキャストする（ステップ１１０）。立候補メッセージは、図５に示すように、立候補メッセージであることを示す分類コード５０１と、当該ジョブの内容コード５０２と、立候補データ部５０３とからなる。内容コード５０２は、受信したジョブメッセージの内容コード４０２と同じものを用いる。立候補データ部５０３には前記のＴの値が入る。
【００４８】
次に、フェーズ（３）において、図７に示すように、各プロセッサは受信待ち状態にあり、他のプロセッサを送信源とする立候補メッセージを受信する（ステップ７０２）と、これを受け取ったプロセッサの処理装置３００は、既立候補ジョブ（自身が先に立候補したジョブ）であれば（ステップ７０３）、その立候補データ部にあるＴ（これをＴ１ とする）と作業時間格納メモリ３０６内の自己で算出したＴを読み出し（ステップ７０４）、ＴとＴ１を比較する（ステップ７０５）。もしも、
Ｔ ≦ Ｔ１
ならば、立候補を維持する。しかし、上式が成立しなければ、保存されていたジョブメッセージを廃棄し（ステップ７０６）、前記ｔ３、またはｔ３０を修正する（ステップ７０７）。
【００４９】
これにより立候補は取り消されて、以後立候補メッセージの処理は行なわれない。
【００５０】
このようにして、予め定められた一定時間が経過した後に（ステップ７０１）、依然として立候補が維持されていれば（ステップ７０８）、当該プロセッサにおいてそのジョブを実行することが確定する。プロセッサの処理装置３００は、自プロセッサが実行することが確定したジョブをジョブキュー３４０に登録し（ステップ７０９）、前記ｔ２、ｔ３、またはｔ２０、ｔ３０が修正する（ステップ７１０）。
【００５１】
ただし、実行することが確定したジョブの優先順位が高いときには、ジョブキュー３４０に登録されていた優先順位の低いジョブより先に実行されるため、優先順位の低いジョブの処理終了時間が、その優先順位の低いジョブについて立候補した時の処理終了予測時間より遅くなる。
【００５２】
したがって、実行することが確定したジョブの優先順位が高いときには、ジョブキュー３４０に登録されている優先順位の低いジョブのジョブメッセージをフェーズ（１）と同様な手順で、ジョブキュ−に登録した順序にしたがい順次ブロードキャストするようにする。このとき、ｔ２、ｔ３、ｔ２０、ｔ３０を適宜更新する。
【００５３】
ジョブキュー３４０に登録されたジョブは、処理装置３００によって順次取り出されて処理されたのちに廃棄される。
【００５４】
以上、本発明の第１実施例に係る分散処理システムについて説明した。
【００５５】
本第１実施例によれば、異なる伝送路に接続されたプロセッサ間での負荷の分散が可能である。たとえば、伝送路２に接続されたプロセッサ群が行なっている処理の負荷が増大したときには、２つ伝送路に接続されたプロセッサ１１とプロセッサ１３は該処理にかける負荷を増大する。これにより、伝送路１と伝送路３に接続されたプロセッサ１２、プロセッサ１５、プロセッサ１６の負荷も増大する。このように特定の伝送路に接続されたプロセッサ群の処理の負荷が増大しても、負荷が次々と他の伝送路に接続されたプロセッサにも波及し、全体として負荷は分散する。
【００５６】
また、この実施例によれば、２つの伝送路に接続されたプロセッサに、一方の伝送路から受信したジョブメッセ−ジのジョブを、他方の伝送路から受信したジョブメッセ−ジのジョブに優先して処理させることができる。たとえば、伝送路２に接続されたプロセッサ群は高速性を要求される制御系の処理を行ない、伝送路３に接続されたプロセッサ群は高速性を要求されない情報系の処理を行なっている場合等に、伝送路２と伝送路３に接続されたプロセッサ１３に伝送路２から受信したジョブメッセ−ジのジョブを優先的に行なわせることができる。
【００５７】
以下、本発明の第２の実施例について説明する。
【００５８】
本第２の実施例では、優先順位格納メモリ３０７に記憶された機能間の優先順位に従わないジョブを取り扱う点のみが前記第１実施例と異なる。
【００５９】
前述したように２つの伝送路に接続するプロセッサの優先順位格納メモリ３０７には、プロセッサが属する２つのプロセッサ群に対応する２つの機能のうち、どちらに属するジョブを優先するかが記憶されている。
【００６０】
本第２実施例は、優先順位に従わない、たとえば、至急処理する必要がある緊急ジョブ、特に正確な処理が要求される重要ジョブ（以下、これを絶対優先ジョブと呼ぶ）が発生した際の処理についてのものである。
【００６１】
以下、第１の実施例との、フェーズ（１）、フェーズ（２）、フェーズ（３）の相違点について説明する。
【００６２】
フェーズ（１）において、あるプロセッサ上にプログラムが起動して絶対優先ジョブが生成されると、そのプロセッサの処理そうち３００は図４（a）の分類コード４０１に、絶対優先ジョブであることを示すコードを付加してジョブメッセージを送信する（以下、このメッセ−ジを「絶対優先ジョブメッセージ」と呼ぶ）。
【００６３】
フェーズ（２）において、プロセッサが絶対優先ジョブを受信したとき、各プロセッサの処理装置３００は図８のフローチャートに示すように処理を行なう。
【００６４】
すなわち、各プロセッサの処理装置３００は、インタフェ−ス３０１を介して伝送路より絶対優先ジョブメッセージを受信すると（ステップ８０１）、絶対優先ジョブメッセージを受信した伝送路からどの機能に属するジョブであるかを判別し、図４（b）に示したように所属コード４００を付加しフォーマットを変換する（ステップ８０２）。
【００６５】
次に、絶対優先ジョブメッセージの内容コードで（ステップ８０３）、内容コ−ドテ−ブル３０８を参照し、自分がこのジョブを実行しうるかを判断する（ステップ８０４）。
【００６６】
そして、実行不可能の場合は、その絶対優先ジョブメッセージを廃棄する（ステップ８０５）。
【００６７】
一方、実行可能の場合は、処理中のジョブが絶対優先ジョブであるかを判断し（ステップ８０６）、次のように実行条件を算定する。実行条件は、本第２実施例でも、そのジョブに対する処理終了予測時刻Ｔであり、次式により算定される。算定されたＴの値は作業時間格納メモリ３０６に記憶される。
【００６８】
現在処理中のジョブが絶対優先ジョブであるとき（ステップ８０７）、
Ｔ＝ｔ＋（ｔa２-ｔa１＋ｔa３＋ｔa４）／（１-ｔ５）      …（３）
ただし、
ｔ  ： 現在時刻
ｔa１：現在処理中の絶対優先ジョブの処理経過時間
ｔa２：処理中の絶対優先ジョブと受信した処理待ちの全絶対優先ジョブの処理推定時間の総計
ｔa３： 当該プロセッサが立候補中のジョブの中で絶対優先ジョブの処理推定時間の総計
ｔa４：受信した絶対優先ジョブの処理推定時間
ｔ５：当該プロセッサがジョブの処理以外に行なう雑処理の単位時間における平均的な割合であり、０≦ｔ５＜１
現在処理中のジョブが絶対優先ジョブでないとき（ステップ８０８）、
Ｔ＝ｔ＋（ｔa２０＋ｔa３０＋ｔa４）／（１-ｔ５）      …（４）
ただし、
ｔa２０：自プロセッサにおいて処理待ちの全絶対優先ジョブの処理推定時間の総計
ｔa３０： 当該プロセッサが立候補中の絶対優先ジョブの処理推定時間の総計
処理待ちのジョブとジョブが属する機能と絶対優先ジョブであるか否かはデータ格納メモリ３０５に記憶され、処理の進行につれて更新される。また、ｔa２、ｔa３、ｔa２０、ｔa３０、ｔ５の値は作業時間格納メモリ３０６に保存され、処理の進行につれて更新される（ステップ８０９）。
【００６９】
次に、Ｔの計算が終わると、立候補メッセージを作成してジョブを受信した伝送路にブロードキャストする（ステップ８１０）。立候補メッセージは、図５に示すように、絶対優先ジョブの立候補メッセージであることを示す分類コード５０１と、当該ジョブの内容コード５０２と、立候補データ部５０３とからなる。内容コード５０２は、ジョブメッセージの内容コード４０２と同じでよい。立候補データ部５０３には前記のＴの値が入る。
【００７０】
一方、プロセッサが受信したジョブが絶対優先ジョブでない場合には、以下のように実行条件を算定する。算定されたジョブに対する処理終了予測時刻Ｔの値は作業時間格納メモリ３０６に記憶される。
【００７１】
受信したジョブの属する機能の優先順位が高いとき
Ｔ＝ｔ＋（ｔb２＋ｔc２-ｔ１＋ｔa３＋ｔ３＋ｔ４）／（１-ｔ５）      …（５）
ただし、
ｔ  ： 現在時刻
ｔ１：現在処理中のジョブの処理経過時間
ｔb２：処理中のジョブと受信した処理待ちの全絶対優先ジョブの処理推定時間の総計
ｔc２：受信したジョブと同じ機能に属する処理待ちの全ジョブの処理推定時間の総計
ｔ３： 当該プロセッサが立候補中のジョブの中で受信したジョブと同じ機能に属するジョブの処理推定時間の総計
ｔa３： 当該プロセッサが立候補中のジョブの中で受信した絶対優先ジョブの処理推定時間の総計
ｔ４：受信したジョブの処理推定時間
ｔ５：当該プロセッサがジョブの処理以外に行なう雑処理の単位時間における平均的な割合であり、０≦ｔ５＜１
受信したジョブの属する機能の優先順位が低いとき
Ｔ＝ｔ＋（ｔb２＋ｔc２０-ｔ１＋ｔ３０＋ｔa４）／（１-ｔ５）        …（６）
ただし、
ｔc２０：処理待ちの絶対優先ジョブを除く全ジョブの処理推定時間の総計
ｔ３０： 当該プロセッサが立候補中の全ジョブの処理推定時間の総計
処理待ちのジョブと該ジョブが属する機能と絶対優先ジョブであるか否かはデータ格納メモリ３０５に記憶され、処理の進行につれて更新される。また、ｔb２、ｔc２０、ｔ３０、ｔ５の値は作業時間格納メモリ３０６に保存され、処理の進行につれて更新される。Ｔの計算が終わると、立候補メッセージを作成してジョブを受信した伝送路にブロードキャストする。立候補メッセージは、図５に示すように、絶対優先ジョブの立候補メッセージであることを示す分類コード５０１と、当該ジョブの内容コード５０２と、立候補データ部５０３とからなる。内容コード５０２は、ジョブメッセージの内容コード４０２と同じでよい。立候補データ部５０３には前記のＴの値が入る。
【００７２】
さて、フェーズ（３）において、図７に示すように、各プロセッサは受信待ち状態にあり、他のプロセッサを送信源とする立候補メッセージを受信する（ステップ７０２）と、これを受け取ったプロセッサの処理装置３００は、既立候補ジョブでなければ（ステップ７０３）、その立候補データ部にあるＴ（これをＴ１とする）と作業時間格納メモリ３０６内の自己で算出したＴを読み出し（ステップ７０４）、ＴとＴ１を比較する（ステップ７０５）。もしも、
Ｔ ≦ Ｔ１
ならば、立候補を維持する。しかし、上式が成立しなければ、保存されていたジョブメッセージを廃棄し（ステップ７０６）、前記ｔ３、またはｔ３０を修正する（ステップ７０７）。これにより立候補は取り消されて、以後立候補メッセージの処理は行なわれない。予め定められた一定時間が経過するまでは（ステップ７０１）、プロセッサは他の立候補メッセージの受信待ち状態にあるが、一定時間が経過しても依然として立候補が維持されていれば、そのジョブを実行することが確定する。確定したジョブはジョブキュー３４０に登録されて、前記ｔa２、ｔa２０、ｔb２、ｔc２、ｔ３、ｔa３、ｔa３０が修正される。
【００７３】
ジョブキュー３４０に登録されたジョブは処理装置３００によって順次取り出され処理されたのちに廃棄される。
【００７４】
以上のように、本第２実施例によれば、緊急を要するジョブ、重要なジョブが発生したときには、そのジョブを優先的に処理することができる。たとえば、異常事態が発生し、制御対象を緊急停止したい場合には、緊急を要するジョブであることを示す分類コード４０１を付加して送信する。これにより、最初にその処理を終了できるプロセッサが他の処理を中止して、緊急停止を行なうジョブを実行する。
【００７５】
以下、本発明の第３の実施例について説明する。
【００７６】
本第３実施例は、優先順位格納メモリ３０７に記憶された機能間の優先順位を変化させる点で前記実施例１、実施例２と異なる。
【００７７】
前述したように、優先順位格納メモリ３０７には、プロセッサが属する２つのプロセッサ群に対応する機能のうち、どちらに属するジョブを優先するかを示す優先順位が記憶されている。本第３実施例では、この優先順位格納メモリ３０７に格納された優先順位を必要に応じて更新する。
【００７８】
本第３実施例に係る優先順位の更新には、オペレータによる更新と、作業の区切りを契機とする更新と、定時間が経過したことを契機とする更新の３つの方法がある。
【００７９】
以下、各方法について説明する。
【００８０】
（１）オペレータによる更新方法
この方法では、優先順位は、たとえばターミナル３５０を介してオペレータにより更新される。優先順位を変更する機能に対応するプロセッサ群に含まれる特定のプロセッサに、その機能の優先順位を変更することがオペレ−タによってターミナル３５０より入力されると、この特定のプロセッサは、図４（a）の分類コード４０１に優先順位を変更するためのジョブであることを示すコードを付加したジョブメッセージ（以下、優先順位更新メッセージと呼ぶ）を、優先順位を変更する機能に対応する伝送路にブロードキャストする。
【００８１】
この際、優先順位更新処理方法を、内容コード４０２にコードとして登録する。優先順位更新処理方法として、たとえば、次のような方法がある。
【００８２】
（a）単に優先順位テーブル３１０と優先順位格納メモリ３０７の内容を更新する。つまり、優先順位格納メモリ３０７を更新したあとに受信したジョブより更新された優先順位が適用される。
【００８３】
（b）優先順位テーブル３１０と優先順位格納メモリ３０７の内容を更新したのち、ジョブキューに登録された処理待ちのジョブと立候補中のジョブに対して更新された優先順位を適用する。
【００８４】
（c）優先順位テーブル３１０と優先順位格納メモリ３０７の内容を更新したのち、現在処理中のジョブも中断し、現在処理中のジョブ、ジョブキューに登録された処理待ちのジョブと立候補中のジョブに対して更新された優先順位を適用する。
【００８５】
また、前記特定のプロセッサは、優先順位更新メッセージにデータとして、どの機能の優先順位を入れ替えるかを登録する。
【００８６】
次に、優先順位処理メッセージを受信したプロセッサの処理装置３００が行なう処理を図９に示す。
【００８７】
各プロセッサの処理装置３００はインタフェ−ス３０１を介して、優先順位更新メッセージを受信すると（ステップ９０１）、優先順位更新メッセージの内容コードを調べて（ステップ９０２）、自プロセッサがこのジョブを実行しうるかを判断する（ステップ９０３）。実行不可能な場合は、この優先順位更新メッセージを廃棄する（ステップ９０４）。実行可能な場合は、ジョブ４０３のデータの内容が受信したプロセッサの属するプロセッサ群に対応する機能に該当するかどうかを判断し（ステップ９０５）、該当しない場合には作業を終了する。該当する場合には、ジョブ４０３のデータにしたがい、優先順位デーブル３１０、優先順位格納メモリ３０７の内容を更新し（ステップ９０６）、優先順位更新処理を行う（ステップ９０７）。優先順位デーブル３１０、優先順位格納メモリ３０７の内容を更新は、優先順位更新メッセージによって優先順位の変更を要求された機能と、もう一方の機能との優先順位を逆転させることにより行なう。
【００８８】
（２）作業の区切りにおける更新方法
この更新方法では、一連の作業の区切りにおいて優先順位の更新を行う。この更新方法では、あるジョブの実行が終了したら、優先順位更新メッセージを送信するよう、優先順位更新メッセージを送信させるプロセッサと優先順位更新メッセージを受信させるプロセッサとに、あらかじめ登録しておく。
【００８９】
優先順位更新メッセージを送信させるプロセッサの処理装置３００は、登録されたジョブの実行が終了したら、優先順位更新メッセージを優先順位を変更する機能に対応する伝送路にブロードキャストする。
【００９０】
一方、優先順位更新メッセージを受信するプロセッサでは、優先順位が更新されてから実行されるべきジョブは、優先順位更新メッセージの受信待ち状態とされる。優先順位更新メッセージの受信待ちをすべきか否かは、実行を終了したジョブの内容コードが、登録されたジョブと等しいか否かにより判断される。
【００９１】
優先順位更新メッセージ受信後の優先順位更新方法は、前述したオペレータによる更新方法の場合と同じである。
【００９２】
（３）一定時間が経過した際の更新方法
この方法では、優先順位更新の時間、あるいは優先順位更新の時間間隔を各プロセッサに登録する。登録方法は、たとえば、ターミナル３５０を介してオペレータにより予めプロセッサ内のメモリにセットする。その後、メモリに格納された時間に到った時、または、格納された時間間隔毎に優先順位を変更する。
【００９３】
この登録した時間、時間間隔の変更を行う場合は、優先順位更新の時間、または優先順位更新の時間間隔を変更するジョブメッセージであることを示すコードを分類コード４０１に登録したジョブメッセ−ジ（以下、「時間変更メッセージ」と呼ぶ）をブロードキャストする。
【００９４】
このジョブメッセ−ジを、受信した各プロセッサの処理装置３００は図１０に示す処理を行う。
【００９５】
すなわち、時間変更メッセージを受信すると（ステップ１００１）、時間変更メッセージの内容コードを調べて（ステップ１００２）、自分がこのジョブを実行しうるかを判断する（ステップ１００３）。実行不可能な場合は、この時間変更メッセージを廃棄する（ステップ１００４）。実行可能な場合は、メモリ内に格納された優先順位更新の時間、または優先順位更新の時間間隔を変更する（ステップ１００５）。
【００９６】
本第３実施例によれば、２つの伝送路に接続されたプロセッサは、２つの伝送路から受信するジョブの優先順位を変更することが可能である。これにより、ある伝送路に接続されたプロセッサ群が行なっている処理を早く完了する必要があるとき、あるいは、ある伝送路に接続されたプロセッサ群が行なっている処理が特に重要であるときには、優先順位を高くして優先的に該処理を実行することができる。
【００９７】
以下、本発明の第４の実施例について説明する。
【００９８】
本第４実施例では、１つの伝送路に接続されたプロセッサ間で負荷の分散を行なう。
【００９９】
図１１に、本第４実施例に係る分散処理システムのハ−ドウェア構成を示す。
【０１００】
図示するように、本第４実施例に係る分散処理システムは、単一の伝送路によって複数のプロセッサを接続したマルチプロセッサシステム上に実現される。
【０１０１】
図中、プロセッサ２００１、プロセッサ２００２、プロセッサ２００３は、伝送路２０００に接続される。ここで、プロセッサ２００１とプロセッサ２００２は同一の機能を実現するプロセッサ群１に属し、プロセッサ２００２とプロセッサ２００３は同一の機能を実現するプロセッサ群２に属するとする。第１の実施との、フェーズ（１）、フェーズ（２）、フェーズ（３）の相違について説明する。
【０１０２】
フェーズ（１）では、どの機能を実現するためのジョブであるかを識別可能とするため、各プロセッサは図１２に示すようにジョブメッセージに所属コード２１００を付加して伝送路２０００に送信する。分類コード２１０１、内容コード２１０２、ジョブ２１０３は前記第１実施例と同様である。
【０１０３】
フェーズ（２）では、各プロセッサの処理装置３００は、図１４のフローチャートに示すように、以下の処理を行なう。
【０１０４】
各プロセッサの処理装置３００は、伝送路よりジョブメッセージを受信し（ステップ２３０１）、受信したメッセージの所属コードを調べることにより（ステップ２３０２）、自身と同じプロセッサ群に属するプロセッサから送信されたジョブであるか否かを判別する（ステップ２３０３）。
【０１０５】
そして、同じプロセッサ群に属するプロセッサから送信されたジョブでないときには、ジョブを廃棄する（ステップ２３０６）。
【０１０６】
一方、同じプロセッサ群に属するプロセッサから送信されたジョブであるときは、ジョブメッセージの内容コードを調べて（ステップ２３０４）、自分がこのジョブを実行しうるかを判断する（ステップ２３０５）。そして、実行不可能の場合は、そのジョブメッセージを廃棄する（ステップ２３０６）。一方、実行可能の場合は、優先順位メモリから、そのジョブの属する機能が優先されるかどうかを判断する（ステップ２３０７）。
【０１０７】
そして、前記第１実施例と同様にして、判断した優先順位に応じた実行条件を算定する（ステップ２３０８、ステップ２３０９）。
【０１０８】
また、同様に、求めたｔ２、ｔ３、ｔ２０、ｔ３０、ｔ５の値は作業時間格納メモリ３０６に保存し、処理の進行につれて更新する（ステップ２３１０）。Ｔの計算が終わると、立候補メッセージを作成してジョブを受信した伝送路にブロードキャストする（ステップ２３１１）。
【０１０９】
図１３は立候補メッセージのフォーマットを示す。立候補メッセージは、どの機能を実現するためのジョブであるかを示す所属コード２２００と、立候補メッセージであることを示す分類コード２２０１と、当該ジョブの内容コード２２０２と、立候補データ部２２０３とからなる。立候補データ部２２０３には前記のＴの値が入る。
【０１１０】
フェーズ（３）では、図１５に示すように、プロセッサは受信待ち状態にあり、他のプロセッサを送信源とする立候補メッセージを受信する（ステップ２４０２）と、これを受け取ったプロセッサは、立候補メッセージの所属コードを読み込み（ステップ２４０３）、プロセッサが所属するプロセッサ群に対応する機能を実行するためのジョブであるかを判断する（ステップ２４０４）。自プロセッサが所属するプロセッサ群に対応する機能に属するジョブであれば、既立候補ジョブであるかを判断し（ステップ２４０５）、その立候補データ部にあるＴ（これをＴ１ とする）と作業時間格納メモリ３０６内の自己で算出したＴを読み出し（ステップ２４０６）、ＴとＴ１を比較する（ステップ２４０７）。もしも、
Ｔ ≦ Ｔ１
ならば、立候補を維持する。しかし、上式が成立しなければ、保存されていたジョブメッセージを廃棄し（ステップ２４０８）、前記ｔ３、またはｔ３０を修正する（ステップ２４０９）。これにより立候補は取り消されて、以後立候補メッセージの処理は行なわれない。
【０１１１】
一方、予め定められた一定時間が経過しても（ステップ２４０１）、依然として立候補が維持されていれば（ステップ２４１０）、そのジョブを実行することが確定する。そのジョブはジョブキューに登録されて（ステップ２４１１）、前記ｔ２、ｔ３、またはｔ２０、ｔ３０が修正される（ステップ２４１２）。
【０１１２】
以上、本第４実施例によれば、同一伝送路に接続されたプロセッサ間においても、機能単位に負荷の分散が可能である。たとえば、同一の伝送路に接続されている複数のプロセッサのうち、あるプロセッサ群は生産管理のジョブを行ない、あるプロセッサ群は品質管理のジョブを行ない、あるプロセッサ群は生産管理と品質管理のジョブを行なうように設定されている場合等に、生産管理と品質管理のジョブを処理することができるプロセッサが、負荷の高い方のジョブを行なうことにより負荷が分散される。また、品質管理のジョブの方が重要であるときには、優先順位をプロセッサに登録することにより、品質管理のジョブを優先的に行なうようにすることもできる。
【０１１３】
また、本第４実施例は、前記第１〜第３実施例と組み合わせて適用することができる。この場合は、前記第１〜第３実施例において機能を階層化し、本第４実施例に係る機能を、前記第１〜第３実施例における伝送路毎に対応する機能の回の機能として取り扱うようにする。
【０１１４】
また、本第４実施例では、マルチプロセッサシステムにおいて、機能を３以上実現することも可能である。
【０１１５】
なお、以上の各実施例では実行条件として、ジョブを処理するまでに要するまでにかかると予想される時間を用いたが、これは、ジョブを処理するまでに要するまでにかかるプロセッサの負荷を表すものであれば、その他のパラメ−タを用いるようにしてもよい。たとえば、ジョブを処理するまでに要するバッファやメモリの容量等を、単独で、もしくは、時間等の要素と組み合わせて用いるようにしてもよい。
【０１１６】
【発明の効果】
以上のように、本発明によれば、マスタプロセッサ等によってジョブを一元的に管理したりすることなしに、異なる伝送媒体に接続されたプロセッサ間での負荷の分散を行なうことのできる分散処理システムを提供することができる。
【０１１７】
また、マスタプロセッサ等によってジョブを一元的に管理したりすることなしに、ジョブの優先制御を行なうことのできる分散処理システムを提供することができる。
【図面の簡単な説明】
【図１】本発明の第１実施例に係る各プロセッサにおいて行なう立候補メッセ−ジ送出の手順を示すフロ−チャ−トである。
【図２】本発明の第１実施例に係る分散処理システムに用いるマルチプロセッサシステムの構成を示すブロック図である。
【図３】本発明の実施例に係るプロセッサの構成を示す図である。
【図４】本発明の第１実施例に係るジョブメッセ−ジと所属コ−ドを付加したジョブメッセ−ジのフォ−マットを示す図である。
【図５】本発明の第１実施例に係る立候補メッセ−ジのフォ−マットを示す図である。
【図６】本発明の第１実施例に係る所属コ−ドテ−ブルの構成を示す図である。
【図７】本発明の第１実施例に係る各プロセッサにおいて行なうジョブ実行確定手順を示すフロ−チャ−トである。
【図８】本発明の第２実施例に係る各プロセッサにおいて行なう絶対優先ジョブメッセ−ジ受信時の処理を示すフロチャ−トである。
【図９】本発明の第３実施例に係る各プロセッサにおいて行なう優先順位更新メッセ−ジ受信時の処理を示すフロチャ−トである。
【図１０】本発明の第３実施例に係る各プロセッサにおいて行なう時間変更メッセ−ジ受信時の処理を示すフロチャ−トである。
【図１１】本発明の第４実施例に係る分散処理システムに用いるマルチプロセッサシステムの構成を示すブロック図である。
【図１２】本発明の第４実施例に係るジョブメッセ−ジのフォ−マットを示す図である。
【図１３】本発明の第４実施例に係る立候補メッセ−ジのフォ−マットを示す図である。
【図１４】本発明の第４実施例に係る各プロセッサにおいて行なう立候補メッセ−ジ送出の手順を示すフロ−チャ−トである。
【図１５】本発明の第１実施例に係る各プロセッサにおいて行なうジョブ実行確定手順を示すフロ−チャ−トである。
【図１６】本発明の実施例に係るプロセッサに用いることのできる計算機のハ−ドウェア構成例を示す図である。
【符号の簡単な説明】
２、３、４  伝送路
１１〜１６  プロセッサ
３００      処理装置
３０５      データ格納メモリ
３０６      作業時間格納メモリ
３０７      優先順位格納メモリ
３０８      内容コードテーブル
３１０      所属コードテーブル
３１０      優先順位テーブル
３３０      タイマ
３４０      ジョブキュ−
３５０      プログラムメモリ
【図１】
0003660376.tif 000002
【図２】
0003660376.tif 000003
【図３】
0003660376.tif 000004
【図４】
0003660376.tif 000005
【図５】
0003660376.tif 000006
【図６】
0003660376.tif 000007
【図７】
0003660376.tif 000008
【図８】
0003660376.tif 000009
【図９】
0003660376.tif 000010
【図１０】
0003660376.tif 000011
【図１１】
0003660376.tif 000012
【図１２】
0003660376.tif 000013
【図１３】
0003660376.tif 000014
【図１４】
0003660376.tif 000015
【図１５】
0003660376.tif 000016
【図１６】
0003660376.tif 000017