(57)【要約】【課題】デッドロックを適切に検出可能な監視装置、排他制御システム、プログラム及び制御方法を提供する。【解決手段】管理装置は、第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出し、監視装置は、第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出し、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または一のタスクが複数の資源をロックしていることが検出された場合に、第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する。【選択図】図２０
2020144616.tif 000002
【特許請求の範囲】
【請求項１】
管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置であって、
一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、
前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、
前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、
前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段と、
を有する監視装置。
【請求項２】
前記管理装置は、前記第１検出手段により、一のタスクが複数の資源をロックしていることが検出されると、前記一のタスクがロックしている資源と、当該資源のロックを待っているタスクとを示す第１チェック用情報を前記監視装置に送信し、
前記監視装置は、受信した前記第１チェック用情報を前記第２情報に反映させ、前記判定手段は、反映された前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する請求項１に記載の監視装置。
【請求項３】
反映された前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを前記判定手段により判定されると、デッドロックの発生有無に関わらず、前記第２情報から前記第１チェック用情報が反映された情報を削除する請求項２に記載の監視装置。
【請求項４】
前記第２検出手段により、一のタスクが複数の資源をロックしていることが検出されると、前記一のタスクがロックしている資源と、当該資源のロックを待っているタスクとを示す第２チェック用情報を前記管理装置に要求する請求項１から請求項３のいずれか１項に記載の監視装置。
【請求項５】
受信した前記第２チェック用情報を前記第２情報に反映させ、前記判定手段は、反映された前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する請求項４に記載の監視装置。
【請求項６】
管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置の制御方法であって、
一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得段階と、
前記資源情報取得段階により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶段階と、
前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出段階と、
前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出段階により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定段階と、
を有する制御方法。
【請求項７】
管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置をコンピュータとして機能させるためのプログラムであって、
前記コンピュータを、
一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、
前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、
前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、
前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段として機能させるためのプログラム。
【請求項８】
複数のタスクが使用する資源を管理する複数の管理装置と、前記資源を使用する複数のタスクによるデッドロックを監視する監視装置とを有する排他制御システムであって、
前記管理装置は、
管理対象として当該管理装置に割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、
前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、
を有し、
前記監視装置は、
一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、
前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、
前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、
前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段と、
を有する排他制御システム。
【請求項９】
前記管理装置は、前記第１検出手段により、一のタスクが複数の資源をロックしていることが検出されると、前記一のタスクがロックしている資源と、当該資源のロックを待っているタスクとを示す第１チェック用情報を前記監視装置に送信する請求項８に記載の排他制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視装置、排他制御システム、プログラム及び制御方法に関する。
【背景技術】
【０００２】
データベースの排他制御について、特許文献１には、資源のロック待ち時間がある時間以上になるとデッドロックをチェックする技術が開示されている。特許文献２には、デッドロックチェック結果を報告する手段を１カ所にまとめて備えた技術が開示されている。特許文献３には、ロック待ちが発生したときに、そのとき発生しているデッドロックや、将来発生しうるデッドロックを検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１０１３４３号公報
【特許文献２】特開２０００−１７２６５９号公報
【特許文献３】特開平１１−２６５２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ロック待ちが発生するたびにデッドロックのチェックを行うと、その分のオーバーヘッドが発生する。特に排他制御を複数の装置で行う場合には、その影響が大きい。また、特許文献１に開示された技術では、デッドロックの検出が遅くなる可能性があったため、デッドロックを適切に検出できない可能性があった。
【０００５】
そこでこの発明は、デッドロックを適切に検出可能な監視装置、排他制御システム、プログラム及び制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置であって、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段と、を有する。
【０００７】
上記目的を達成するために、本発明の別の態様によれば、管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置の制御方法であって、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得段階と、前記資源情報取得段階により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶段階と、前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出段階と、前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出段階により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定段階と、を有する。
【０００８】
上記目的を達成するために、本発明の別の態様によれば、管理対象として割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有する管理装置と接続する監視装置をコンピュータとして機能させるためのプログラムであって、前記コンピュータを、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段として機能させるためのプログラムである。
【０００９】
上記目的を達成するために、本発明の別の態様によれば、複数のタスクが使用する資源を管理する複数の管理装置と、前記資源を使用する複数のタスクによるデッドロックを監視する監視装置とを有する排他制御システムであって、前記管理装置は、管理対象として当該管理装置に割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する第１記憶手段と、前記第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する第１検出手段と、を有し、前記監視装置は、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する資源情報取得手段と、前記資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する第２記憶手段と、前記第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する第２検出手段と、前記第１検出手段により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または前記第２検出手段により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する判定手段と、を有する。
【発明の効果】
【００１０】
本発明によれば、デッドロックを適切に検出可能という効果が得られる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態の構成を示す排他制御システムの構成例を示すブロック図である。
【図２】排他制御装置の概略構成例を示す図である。
【図３】排他制御装置の詳細構成例を示す図である。
【図４】排他制御情報を管理する排他制御テーブルの一例を示す図である。
【図５】デッドロックチェックテーブルを示す図である。
【図６】メッセージフォーマットおよびメッセージの詳細を示す図である。
【図７】メッセージフォーマットおよびメッセージの詳細を示す図である。
【図８】デッドロックと遅延デッドロックチェックを説明するための図である。
【図９】資源のロックおよび登録資源ロックテーブルの一例を示す図である。
【図１０】排他制御部の処理の流れを示すフローチャートである。
【図１１】排他制御部の処理の流れを示すフローチャートである。
【図１２】排他制御部の処理の流れを示すフローチャートである。
【図１３】デッドロックチェック部の処理の流れを示すフローチャートである。
【図１４】デッドロックチェック部の処理の流れを示すフローチャートである。
【図１５】デッドロックチェック部の処理の流れを示すフローチャートである。
【図１６】排他制御テーブルＸを示す図である。
【図１７】排他制御テーブルＹを示す図である。
【図１８】デッドロックチェックテーブルを示す図である。
【図１９】デッドロックチェックテーブルを示す図である。
【図２０】本実施形態による排他制御システムの最小構成を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態による排他制御システムを図面を参照して説明する。図１は、本発明の一実施形態の構成を示す排他制御システム４０の構成例を示すブロック図である。排他制御システム４０は、複数台の排他制御装置２００と、１台以上のホストコンピュータ１０と、複数の共有資源２０とが、ネットワーク３０で接続された疎結合コンピュータシステムである。共有資源２０はホストコンピュータ１０により共有される資源である。共有資源２０として、ディスク装置内のファイル、データベース、または磁気テープ装置などが挙げられる。以下の説明では、ホストコンピュータ１０を単に「ホスト」と表現することがある。
【００１３】
ホストが共有資源２０を使用する場合、複数の排他制御装置２００の何れかにロック要求(使用許可)を求め、排他制御装置２００が使用の可否を応答する。各共有資源２０は、管理対象として排他制御装置２００に予め割り当てられている。また、１つの共有資源２０が複数の排他制御装置２００に管理されることはない。
【００１４】
図２は排他制御装置２００の概略構成例を示す図である。排他制御装置２００はネットワーク３０で接続され相互に通信が行える。排他制御装置２００は大きく分けて、資源管理部２０１とデッドロック監視部３０１で構成される。資源管理部２０１は全ての排他制御装置２００で動作するが、デッドロック監視部３０１は予め定められた１台の排他制御装置２００（例えば１番最初に起動した装置）でのみ動作する。図２において、動作していないデッドロック監視部３０１は、破線で記載されている。資源管理部２０１はホストからの要求に対し排他制御などを実施する。デッドロック監視部３０１は全排他制御装置２００の情報を総合してデッドロックチェックなどを行う。
【００１５】
上記資源管理部２０１は、管理装置の一例である。デッドロック監視部３０１は、監視装置の一例である。したがって、資源管理部２０１とデッドロック監視部３０１が動作する排他制御装置２００は、管理装置と監視部のいずれの機能を有する装置である。
【００１６】
図３は排他制御装置２００の詳細構成例を示す図である。資源管理部２０１は、排他制御部２１０、排他制御テーブル２２０、およびスポットデータ制御部２３０を備える。デッドロック監視部３０１は、デッドロックチェック部３１０、およびデッドロックチェックテーブル３２０を備える。通信部４００は、排他制御装置２００とネットワーク３０との通信インタフェースである。
【００１７】
このうち、資源管理部２０１の排他制御部２１０は、ホストから共有資源２０に対する要求を受け付ける。この要求として、ロック要求とアンロック要求がある。ロック要求は、ある共有資源２０へのアクセス権を要求するメッセージで、ロック対象の共有資源２０を特定する識別子、ロック種別、およびチェック指定を含む。ロック種別は２種類あり、資源を排他的にロックする排他ロックか、共有資源としてロックする共有ロックかのいずれかを示す。チェック指定も２種類あり、デッドロックのチェックを不要とするチェック不要か、後述する遅延デッドロックチェックを行う遅延チェックかのいずれかを示す。なお、排他ロックは、ホストによりデータの書き換え等が生じる場合に指定され、共有ロックは、ホストによるデータの参照のみなどの場合に指定される。本実施形態では、特に断らない限り、「ロック」は排他ロックを示すものとする。
【００１８】
排他制御部２１０は、ロック要求を受信すると、ロック種別が排他ロックを示す場合には、識別子で特定される共有資源２０が他のタスクからもロックされていないときにロック可能とし、そうでない場合にはロック待ちとする。また、ロック種別が共有ロックの場合には、他のタスクによるロックの有無にかかわらず、ロック可能とする。アンロック要求は、アクセス権の解放を要求するメッセージである。
【００１９】
ロック待ちとなった場合、排他制御部２１０は、チェック指定がチェック不要のときはデッドロックチェックを行わないでホストに結果（ロック可能、ロック待ち）を通知する。チェック指定が遅延チェックのときは、ホストに結果（ロック可能、ロック待ち）を通知し、ロック待ちの場合には、一定時間経過後に後述するデッドロックチェック要求(ＲＥＱ１)をデッドロック監視部３０１に送信する。排他制御部２１０は、ロック待ちとなったタスクに該当する複数フラグ（後述）がオンの場合には、チェック指定がいずれであっても、後述するスポットデッドロックチェック要求(ＲＥＱ４)をデッドロック監視部３０１に送信する。
【００２０】
スポットデータ制御部２３０は、デッドロック監視部３０１との間でデッドロックに関する処理を行う。処理の詳細については後述する。デッドロック監視部３０１のデッドロックチェック部３１０は、デッドロックのチェック等の処理を行う。処理の詳細については後述する。
【００２１】
次に、排他制御テーブル２２０、デッドロックチェックテーブル３２０、およびメッセージ等について説明する。図４は、排他制御情報を管理する排他制御テーブル２２０の一例を示す図である。排他制御テーブル２２０は、３つのテーブル（複数フラグテーブル、資源ロックテーブル、登録フラグテーブル）で構成される。図４（Ａ）は、複数フラグテーブルを示す図である。複数フラグは、該当するタスクが複数の共有資源２０をロックしているか否かを示すフラグである。該当するタスクが複数の共有資源２０をロックしている場合にオンとなり、そうでない場合にオフとなる。以下の説明では、図４に示されるように、複数フラグがオンであることを略して複数オンと表現し、複数フラグがオフであることを略して複数オフと表現することがある。図４では、例えばタスクＴ１は、後述するように複数の共有資源２０（Ｂ１、Ｂ２、Ｂ４）をロックしていることから、複数オンとなっている。上記Ｂ１などは、資源を特定するための識別子である。以下の説明では、共有資源２０を単に資源と表現することがある。
【００２２】
図４（Ｂ）は、資源ロックテーブルを示す図である。資源ロックテーブルは、該当するタスクが、資源をロックしているか、ロック待ちか、ロックもロック待ちもしていないかのいずれかを示す資源ロック情報を有するテーブルである。該当するタスクがある資源をロックしている場合には「Ｌ」で示され、該当するタスクがある資源のロックを待っている場合には「Ｗ」で示される。また、ロックもロック待ちもしていない場合にはハイフン「−」で示される。図４（Ｂ）では、資源Ｂ１をタスクＴ１がロックしているため、タスクＴ１と資源Ｂ１に該当する資源ロック情報は「Ｌ」で示され、タスクＴ２は資源Ｂ１のロックを待っているため、タスクＴ２と資源Ｂ１に該当する資源ロック情報は「Ｗ」で示されている。
【００２３】
図４（Ｃ）は、登録フラグテーブルを示す図である。登録フラグは、該当する資源ロック情報がデッドロックチェックテーブル３２０に登録されているか否かを示すフラグである。該当する資源ロック情報がデッドロックチェックテーブル３２０に登録されている場合にオンとなり、そうでない場合にオフとなる。以下の説明では、図４（Ｃ）に示されるように、登録フラグがオンであることを略して登録オンと表現し、登録フラグがオフであることを略して登録オフと表現することがある。図４（Ｃ）では、タスクＴ１と資源Ｂ１に該当する資源ロック情報がデッドロックチェックテーブル３２０に登録されているものとしているため、登録オンとなっている。図４（Ｃ）におけるハイフン「−」は、登録フラグ自体が存在しないことを示している。
【００２４】
以上説明した排他制御テーブル２２０（複数フラグテーブル、資源ロックテーブル、登録フラグテーブル）は、資源管理部２０１に設けられるテーブルであることから、全ての排他制御装置２００に設けられる。なお、図４では、排他制御テーブル２２０を３つのテーブルで構成されることを示したが、３つのテーブルを１つのテーブルにまとめて管理してもよい。
【００２５】
次に、デッドロックチェックテーブル３２０について説明する。デッドロックチェックテーブル３２０は、２つのテーブル（スポットフラグテーブル、登録資源ロックテーブル）で構成される。図５（Ａ）は、スポットフラグテーブルを示す図である。スポットフラグは、後述するスポットデータ要求を行ったか否かを示すフラグであり、スポットデータ要求を行った場合にオンとなり、そうでない場合にオフとなる。以下の説明では、図５に示されるように、スポットフラグがオンであることを略してスポットオンと表現し、スポットフラグがオフであることを略してスポットオフと表現することがある。図５では、例えばタスクＴ１は、スポットオンとなっている。
【００２６】
図５（Ｂ）は、登録資源ロックテーブルを示す図である。登録資源ロックテーブルは、該当するタスクが、資源をロックしているか、ロック待ちか、ロックもロック待ちもしていないかのいずれかを示す登録資源ロック情報を有するテーブルである。該当するタスクがある資源をロックしている場合には「Ｌ」で示され、該当するタスクがある資源のロックを待っている場合には「Ｗ」で示される。また、ロックもロック待ちもしていない場合にはハイフン「−」で示される。図５（Ｂ）では、資源Ｂ１をタスクＴ１がロックしているため、タスクＴ１と資源Ｂ１に該当する登録資源ロック情報は「Ｌ」で示され、タスクＴ３は資源Ｂ２のロックを待っているため、タスクＴ３と資源Ｂ２に該当する登録資源ロック情報は「Ｗ」で示されている。以下の説明では、スポットフラグと登録資源ロック情報をまとめてスポットロック情報を表現することがある。また、ある資源をロックしているタスクをロックタスクと表現し、ある資源のロックを待っているタスクを待ちタスクと表現することがある。さらに、ロックタスクの識別子をロックタスク識別子と表現し、待ちタスクの識別子を待ちタスク識別子と表現することがある。
【００２７】
次に、資源管理部２０１からデッドロック監視部３０１に送信されるメッセージ（以下、「監視部宛メッセージ」ともいう）について説明する。図６は、監視部宛メッセージのメッセージフォーマットおよびメッセージの詳細を示す図である。
【００２８】
図６（Ａ）は、メッセージフォーマットを示す図である。図６（Ａ）に示されるように、監視部宛メッセージは、種別、排他制御装置番号、資源識別子、１つ以上のタスク識別子、および待ちタスク識別子で構成される。このうち、種別は、メッセージの種別を示す。排他制御装置番号は、宛先のデッドロック監視部３０１を有する排他制御装置２００を特定するための番号である。資源識別子は、本メッセージの対象となる共有資源２０を識別するための識別子（上記Ｂ１、Ｂ２等）である。タスク識別子および待ちタスク識別子は、本メッセージの対象となるタスクを識別するための識別子（上記Ｔ１、Ｔ２等）である。なお、待ちタスク識別子は、メッセージに含まれないこともある。
【００２９】
図６（Ｂ）は、各種メッセージの詳細を示す図である。監視部宛メッセージには、５つの種別がある。まず、デッドロックチェック要求（ＲＥＱ１）は、デッドロックのチェックを目的とするメッセージである。ＲＥＱ１には、デッドロックのチェック対象となる資源を識別する資源識別子と、当該資源をロックしているタスクのタスク識別子と、当該資源のロック待ちとなったタスクのタスク識別子が含まれる。このＲＥＱ１は、後述する遅延デッドロックチェックを行う場合に用いられるメッセージである。
【００３０】
更新要求（ＲＥＱ２）は、デッドロックチェックテーブル３２０の登録資源ロック情報を「Ｌ」に更新することを目的とするメッセージである。ＲＥＱ２には、更新する登録資源ロック情報に該当する資源を識別する資源識別子と、更新する登録資源ロック情報に該当するタスクのタスク識別子が含まれる。
【００３１】
削除要求（ＲＥＱ３）は、デッドロックチェックテーブル３２０のスポットロック情報を削除することを目的とするメッセージである。ＲＥＱ３には、削除するスポットロック情報に該当する資源を識別する資源識別子と、削除するスポットロック情報に該当するタスクのタスク識別子が含まれる。
【００３２】
スポットデッドロックチェック要求（ＲＥＱ４）は、デッドロックのチェックを目的とするメッセージである。ＲＥＱ１と異なる点は、複数フラグがオンとなっているタスクが待ちタスクとなったか否かという点である。ＲＥＱ４には、デッドロックのチェック対象となる資源を識別する資源識別子と、当該資源をロックしているタスクのタスク識別子と、当該資源のロック待ちとなったタスクのタスク識別子が含まれる。
【００３３】
スポットデータ転送（ＲＥＰＬ５）は、ＲＥＱ５に対する回答メッセージである。ＲＥＱ５は、デッドロック監視部３０１から送信されるメッセージであり、ある資源に対するデッドロックチェックを行うために必要となる情報を要求するメッセージである。ＲＥＰＬ５には、ＲＥＱ５で送信された資源を特定する資源識別子と、当該資源をロックしているタスクのタスク識別子と、当該資源のロックを待っている待ちタスクの待ちタスク識別子が含まれる。
【００３４】
次に、デッドロック監視部３０１から資源管理部２０１に送信されるメッセージ（以下、「管理部宛メッセージ」ともいう）について説明する。図７は、管理部宛メッセージのメッセージフォーマットおよびメッセージの詳細を示す図である。
【００３５】
図７（Ａ）は、メッセージフォーマットを示す図である。図７（Ａ）に示されるように、管理部宛メッセージは、種別、タスク識別子、および資源識別子で構成される。このうち、種別は、メッセージの種別を示す。タスク識別子は、本メッセージの対象となるタスクを識別するための識別子（上記Ｔ１、Ｔ２等）である。資源識別子は、本メッセージの対象となる共有資源２０を識別するための識別子（上記Ｂ１、Ｂ２等）である。なお、タスク識別子、および資源識別子は、メッセージに含まれないこともある。
【００３６】
図７（Ｂ）は、各種メッセージの詳細を示す図である。監視部宛メッセージには、７つの種別がある。まず、スポットデータ要求（ＲＥＱ５）は、上述したように、ある資源に対するデッドロックチェックを行うために必要となる情報を要求することを目的とするメッセージである。ＲＥＱ５にはタスク識別子のみが含まれ、全ての排他制御装置２００の資源管理部２０１に送信される。
【００３７】
プッシュアウト通知（ＲＥＱ６）は、上述したスポットデッドロックチェック要求（ＲＥＱ４）を受信し、デッドロックチェックを行った結果、デッドロックが発生していることを応答することを目的とするメッセージである。
【００３８】
複数フラグ解除要求（ＲＥＱ７）は、排他制御装置２００の排他制御テーブル２２０の複数フラグテーブルをリセットすることを目的とするメッセージである。ＲＥＱ７には、資源識別子は含まれない。
【００３９】
デッドロックなし応答（ＲＥＰＬ１−１）は、デッドロックチェック要求（ＲＥＱ１）を受信し、デッドロックチェックを行った結果、デッドロックが発生していないことを応答することを目的とするメッセージである。ＲＥＰＬ１−１には、デッドロックチェック要求（ＲＥＱ１）で受信したタスク識別子、および資源識別子が含まれる。
【００４０】
デッドロックあり応答（ＲＥＰＬ１−２）は、デッドロックチェック要求（ＲＥＱ１）を受信し、デッドロックチェックを行った結果、デッドロックが発生していることを応答することを目的とするメッセージである。ＲＥＰＬ１−２には、デッドロックチェック要求（ＲＥＱ１）で受信したタスク識別子、および資源識別子が含まれる。
【００４１】
更新応答（ＲＥＰＬ２）は、更新要求（ＲＥＱ２）に対する応答メッセージである。ＲＥＰＬ２には、タスク識別子、および資源識別子は含まれない。削除応答（ＲＥＰＬ３）は、削除要求（ＲＥＱ３）に対する応答メッセージである。ＲＥＰＬ２には、タスク識別子、および資源識別子は含まれない。
【００４２】
以上を踏まえ、排他制御部２１０がアンロック要求を受信したときの処理と、スポットデータ制御部２３０の処理と、デッドロックチェック部３１０の処理の詳細について説明する。
【００４３】
排他制御部２１０は、アンロック要求を受信すると、資源ロックテーブルにおいて、アンロック要求に示されるタスクと資源に該当する資源ロック情報を削除する。また、排他制御部２１０は、登録フラグテーブルにおいて、アンロック要求に示されるタスクと資源に該当する登録フラグを削除する。このとき、登録フラグがオンの場合には、排他制御部２１０は、削除要求（ＲＥＱ３）をデッドロック監視部３０１に送信する。
【００４４】
また、資源ロック情報の削除により、タスクの資源ロック情報が０となった場合には、当該タスクに用意されている資源ロック情報を記憶する領域も削除される。例えば、図４（Ｂ）でタスクＴ２の資源ロック情報が０となった場合には、資源ロックテーブルからタスクＴ２の列ごと削除される。同様に、資源ロック情報の削除により、資源ロック情報が０となった場合には、当該資源に用意されている資源ロック情報を記憶する領域も削除される。例えば、図４（Ｂ）で資源Ｂ２の資源ロック情報が０となった場合には、資源ロックテーブルから資源Ｂ２の行ごと削除される。
【００４５】
さらに、資源のアンロックにより、当該資源の空きを待っていた待ちタスクが資源をロックすることも可能となる。空きを待っていた待ちタスクとロックする資源に該当する登録フラグがオンの場合、排他制御部２１０は、更新要求（ＲＥＱ２）をデッドロック監視部３０１に送信する。
【００４６】
さらに、排他制御部２１０は、プッシュアウト通知（ＲＥＱ６）を受信すると、デッドロックが発生する原因となったタスクが待ちをとなっていることを示す資源ロック情報を削除し、デッドロックが発生したことをホストに送信する。排他制御部２１０は、複数フラグ解除要求（ＲＥＱ７）を受信し、ＲＥＱ７に示されるタスクに該当する複数フラグがオンの場合には、複数フラグをオフにする。
【００４７】
次に、スポットデータ制御部２３０について説明する。スポットデータ制御部２３０は、デッドロックチェック部３１０からスポットデータ要求（ＲＥＱ５）を受信すると、スポットデータ要求に示されるタスクがロックしている資源またはタスクが待っている資源を示す識別子をスポットデータ転送（ＲＥＰＬ５）として送信する。また、スポットデータ制御部２３０は、ＲＥＱ５を受信すると、ＲＥＱ５に示されるタスクに該当する複数フラグをオンとする。
【００４８】
次に、デッドロックチェック部３１０について説明する。デッドロックチェック部３１０は、排他制御部２１０からデッドロックチェック要求（ＲＥＱ１）を受信すると、登録ロック資源情報として登録資源ロックテーブルに登録し、デッドロックチェックを行う。デッドロックチェックの結果、デッドロックが発生している場合には、デッドロック発生応答（ＲＥＰＬ１−２）を送信する。デッドロックが発生していない場合には、デッドロックなし応答（ＲＥＰＬ１−１）を送信する。
【００４９】
デッドロックチェック部３１０は、排他制御部２１０から削除要求(ＲＥＱ３)を受信すると、登録資源ロックテーブルにおいて登録されている登録資源ロック情報を削除し、削除応答（ＲＥＰＬ３）を送信する。また、登録資源ロック情報を削除した結果、該当するタスクの登録ロック資源情報が０となり、かつスポットフラグがオンとなっている場合には、複数フラグ解除要求(ＲＥＱ７)を排他制御部２１０へ送信する。
【００５０】
デッドロックチェック部３１０は、排他制御部２１０から更新要求(ＲＥＱ２)を受信すると、登録資源ロックテーブルにおいて登録されている登録資源ロック情報を「Ｌ」に更新する。この結果、タスクが複数の資源をロックした場合には、デッドロックチェック部３１０は、スポットデータ要求(ＲＥＱ５)を送信する。デッドロックチェック部３１０は、スポットデータ転送(ＲＥＰＬ５)を受信し、受信したＲＥＰＬ５を登録資源ロックテーブルに反映する。デッドロックチェック部３１０は、ＲＥＰＬ５で受信した内容を反映させた登録資源ロックテーブルにおいて、デッドロックをチェックする。チェックの後、デッドロック検出の有無に関わらず、登録資源ロックテーブルにおいて反映された分は削除される。
【００５１】
デッドロックチェック部３１０は、排他制御部２１０からスポットデッドロックチェック要求(ＲＥＱ１)を受信すると、登録ロック資源情報として登録資源ロックテーブルに登録し、デッドロックチェックを行う。デッドロックチェックの結果、デッドロックが発生している場合には、デッドロック発生応答（ＲＥＰＬ１−２）を送信する。デッドロックが発生していない場合には、デッドロックなし応答（ＲＥＰＬ１−１）を送信する。
【００５２】
次に、デッドロックと遅延デッドロックチェックについて説明する。図８は、デッドロックと遅延デッドロックチェックを説明するための図である。まず、図８（Ａ）に示されるように、資源Ｂ１と資源Ｂ２を管理する排他制御装置２００は、それぞれ異なる装置であり、便宜的に排他制御装置Ｘ、Ｙとする。また、タスクＴ１が資源Ｂ１をロック中とする。また、タスクＴ１は、資源Ｂ２をロックしようとしたが、タスクＴ２がロック中であることから、排他制御装置Ｂは、タスクＴ１をロック待ちとする。登録資源ロックテーブルにおけるタスクＴ１と資源Ｂ２に該当する登録資源ロック情報は「Ｗ」となり、タスクＴ２と資源Ｂ２に該当する登録資源ロック情報は「Ｌ」となる。
【００５３】
このとき、排他制御装置Ｘは、遅延デッドロックチェックを行うための遅延タイマをセットする。このタイマがタイムアウトとなり、排他制御装置Ｘは、図８（Ａ）に示される状態のままでデッドロックチェック要求（ＲＥＱ１）を送信する。ここでの送信先は、デッドロック監視部３０１となるが、このデッドロック監視部３０１は排他制御装置Ｘ、Ｙ、および他の排他制御装置のいずれに設けられていてもよい。ここでは、他の排他制御装置にデッドロック監視部３０１が設けられているものとする。ＲＥＱ１の受信により、デッドロックチェック部３１０は、デッドロックチェックを行い、デッドロックは発生してないため、デッドロックなし応答（ＲＥＰＬ１−１）を送信する。
【００５４】
その後、タスクＴ２が資源Ｂ１をロックしようとしたが、タスクＴ１がロック中であることから、図８（Ｂ）に示されるように、排他制御装置Ｘは、タスクＴ２をロック待ちとする。
【００５５】
このとき、デッドロックはチェックされないため、デッドロックは発生していることは検出されていないが、遅延デッドロックチェックを行うためのタイマがセットされる。このタイマがタイムアウトとなり、図８（Ｂ）に示される状態のままでデッドロックチェック要求（ＲＥＱ１）が送信され、デッドロックチェックが行われると、デッドロックが発生しているため、デッドロックあり応答（ＲＥＰＬ１−２）が送信される。
【００５６】
具体的に、図８（Ｂ）の登録資源ロックテーブルにおけるタスクＴ１と資源Ｂ２に該当する登録資源ロック情報は「Ｗ」であり、タスクＴ２と資源Ｂ２に該当する登録資源ロック情報は「Ｌ」である。さらに、登録資源ロックテーブルにおけるタスクＴ１と資源Ｂ１に該当する登録資源ロック情報は「Ｌ」となり、タスクＴ２と資源Ｂ１に該当する登録資源ロック情報は「Ｗ」となる。よって、デッドロックチェック部３１０は、デッドロックが発生していることを検出できる。
【００５７】
次に、資源をＢ０〜Ｂ３の４つとし、タスクをＴ１〜Ｔ４の４つとしたときの、資源のロックおよび登録資源ロックテーブルの一例について図９を用いて説明する。図９に示されるように、排他制御装置Ｘは、資源Ｂ１、Ｂ３を管理し、排他制御装置Ｙは、資源Ｂ０、Ｂ２を管理する。また、図８と同様に、デッドロック監視部３０１は排他制御装置Ｘ、Ｙ、および他の排他制御装置のいずれに設けられていてもよいが、ここでは、他の排他制御装置にデッドロック監視部３０１が設けられているものとする。
【００５８】
図９（Ａ）に示されるように、資源Ｂ０は、タスクＴ３がロックしている。資源Ｂ１は、タスクＴ１がロックし、タスクＴ４が待ちとなっている。資源Ｂ２は、タスクＴ１がロックし、タスクＴ３が待ちとなっている。資源Ｂ３は、タスクＴ１がロックし、タスクＴ４が待ちタスクとなっている。また、デッドロック監視部３０１の登録資源ロックテーブルには、タスクＴ１が資源Ｂ１、Ｂ２をロックしていること、タスクＴ３が資源Ｂ２の待ちとなっていること、タスクＴ４が資源Ｂ１の待ちとなっていることが登録されている。
【００５９】
この状態において、排他制御装置Ｘは、遅延タイマをセットしているものとする。また、デッドロックチェック部３１０は、排他制御装置Ｘ、ＹにタスクＴ１のスポットデータ要求（ＲＥＱ５）を送信したものとする。このとき、デッドロックチェック部３１０は、タスクＴ１に該当するスポットフラグをオンとする。また、ＲＥＱ５を受信した排他制御装置Ｘ、Ｙは、タスクＴ１に該当する複数フラグをオンとする。
【００６０】
そして、排他制御装置Ｘは、ＲＥＱ５の応答として、資源Ｂ１はタスクＴ１にロックされ、タスクＴ４が待ちタスクとなっていること、および資源Ｂ３はタスクＴ１にロックされ、タスクＴ４が待ちタスクとなっていることを示すスポットデータ転送（ＲＥＰＬ５）をデッドロックチェック部３１０に送信する。一方、排他制御装置Ｙは、ＲＥＱ５の応答として、資源Ｂ２はタスクＴ１にロックされ、タスクＴ３が待ちタスクとなっていることを示すＲＥＰＬ５をデッドロックチェック部３１０に送信する。なお、資源Ｂ０に待ちタスクは存在しないため、資源Ｂ０に関するＲＥＰＬ５は送信されない。
【００６１】
排他制御装置Ｘ、ＹからＲＥＰＬ５を受信したデッドロックチェック部３１０は、受信したＲＥＰＬ５を登録資源ロックテーブルに反映する。図９（Ｂ）は、反映された登録資源ロックテーブルを示す図である。図９（Ｂ）に示されるように、登録資源ロックテーブルは、資源Ｂ３について、タスクＴ１がロックしていること、タスクＴ４が待ちタスクとなっていることが反映されている。
【００６２】
デッドロックチェック部３１０は、ＲＥＰＬ５で受信した内容を反映させた登録資源ロックテーブルにおいて、デッドロックをチェックするが、デッドロックは検出されない。デッドロック検出の有無に関わらず、登録資源ロックテーブルにおいて反映された分は削除される。すなわち、図９（Ａ）に示される登録資源ロックテーブルとなる。
【００６３】
次いで、資源Ｂ０をタスクＴ１がロックしようとするが、資源Ｂ０は、タスクＴ３により既にロックされているため、タスクＴ１は待ちタスクとなる。上述したように、排他制御装置ＹにおけるタスクＴ１の複数フラグはオンのため、排他制御装置Ｙは、デッドロックチェック部３１０にスポットデッドロックチェック要求（ＲＥＱ４）を送信する。
【００６４】
デッドロックチェック部３１０は、ＲＥＱ４を受信したため、スポットデータ要求（ＲＥＱ５）を送信する。排他制御装置Ｙは、ＲＥＱ５の応答として、資源Ｂ０はタスクＴ３にロックされ、タスクＴ１が待ちタスクとなっていること、および資源Ｂ２はタスクＴ１にロックされ、タスクＴ３が待ちタスクとなっていることを示すＲＥＰＬ５をデッドロックチェック部３１０に送信する。排他制御装置ＸもＲＥＰＬ５を送信するが、その詳細は省略する。
【００６５】
排他制御装置ＹからＲＥＰＬ５を受信したデッドロックチェック部３１０は、受信したＲＥＰＬ５を登録資源ロックテーブルに反映する。図９（Ｃ）は、反映された登録資源ロックテーブルを示す図である。図９（Ｃ）に示されるように、登録資源ロックテーブルは、資源Ｂ０について、タスクＴ３がロックしていること、タスクＴ１が待ちタスクとなっていることが反映されている。
【００６６】
デッドロックチェック部３１０は、ＲＥＰＬ５で受信した内容を反映させた登録資源ロックテーブルにおいて、デッドロックをチェックする。デッドロックチェック部３１０は、資源Ｂ０について、タスクＴ３がロックし、タスクＴ１が待ちタスクとなっており、さらに資源Ｂ２において、タスクＴ１がロックし、タスクＴ３が待ちタスクとなっているため、デッドロックが発生していることを検出する。そこで、デッドロックチェック部３１０は、ＲＥＱ４の応答として、タスクＴ１と資源Ｂ０を示すプッシュアウト通知（ＲＥＱ６）を排他制御装置Ｙに送信する。
【００６７】
以上説明した処理を、フローチャートを用いて説明する。図１０、図１１は、排他制御部２１０の処理の流れを示すフローチャートである。排他制御部２１０は、ホストから要求を受信すると、要求の種別で分岐する（ステップＳ１０１）。ホストからの要求がロック要求の場合には、ロック可能か否かを判定する（ステップＳ１０２）。ロック可能な場合には（ステップＳ１０２：ＹＥＳ）、排他制御部２１０は、ホストにロック成功を通知し（ステップＳ１０３）、処理を終了する。
【００６８】
ロック可能ではない場合には（ステップＳ１０２：ＮＯ）、排他制御部２１０は、ホストにロック待ちを通知する（ステップＳ１０４）。排他制御部２１０は、複数フラグがオンか否かを判定する（ステップＳ１０５）。複数フラグがオンの場合には（ステップＳ１０５：ＹＥＳ）、排他制御部２１０は、ＲＥＱ４をデッドロックチェック部３１０に送信し（ステップＳ１０６）、ステップＳ１０７に進む。複数フラグがオフの場合には（ステップＳ１０５：ＮＯ）、ロック要求のチェック指定が遅延チェックか否かを判定する（ステップＳ１０７）。チェック指定がチェック不要の場合には（ステップＳ１０７：ＮＯ）、処理を終了する。
【００６９】
チェック指定が遅延チェックの場合には（ステップＳ１０７：ＹＥＳ）、排他制御部２１０は、タイマをセットする（ステップＳ１０８）。タイムアウトとなると（ステップＳ１０９：ＹＥＳ）、排他制御部２１０は、遅延デッドロックチェック対象のタスクが未だにロック待ちタスクのままか否かを判定する（ステップＳ１１０）。ロック待ちではない場合には（ステップＳ１１０：ＮＯ）、処理を終了する。ロック待ちの場合には（ステップＳ１１０：ＹＥＳ）、排他制御部２１０は、ＲＥＱ１をデッドロックチェック部３１０に送信し（ステップＳ１１１）、登録フラグをオンにする（ステップＳ１１２）。
【００７０】
排他制御部２１０は、デッドロックチェック部３１０からＲＥＰＬ１＿１を受信したか否かを判定する（ステップＳ１１３）。ＲＥＰＬ１＿１を受信した場合には（ステップＳ１１３：ＹＥＳ）、デッドロックが発生していないため、処理を終了する。ＲＥＰＬ１＿２を受信した場合には（ステップＳ１１３：ＹＥＳ）、排他制御部２１０は、資源ロック情報を削除して（ステップＳ１１４）、ホストにデッドロックを発生を通知して（ステップＳ１１５）、処理を終了する。
【００７１】
上記ステップＳ１０１でアンロック要求を受信した場合の処理について、図１１を用いて説明する。ステップＳ１０１でアンロック要求を受信すると、排他制御部２１０は、登録フラグがオンか否かを判定する（ステップＳ２０１）。登録フラグがオンではない場合には（ステップＳ２０１：ＮＯ）、ステップＳ２０４に進む。登録フラグがオンの場合には（ステップＳ２０１：ＹＥＳ）、排他制御部２１０は、ＲＥＱ３をデッドロックチェック部３１０に送信する（ステップＳ２０２）。
【００７２】
デッドロックチェック部３１０からＲＥＰＬ３を受信すると（ステップＳ２０３：ＹＥＳ）、排他制御部２１０は、アンロックに伴い、各種情報を削除する（ステップＳ２０４）。ここでの各種情報等とは、排他制御テーブル２２０におけるアンロックしたタスクやアンロックされた資源に関する情報、およびそれらを記憶する領域である。
【００７３】
排他制御部２１０は、アンロックされた資源の待ちタスクがあるか否かを判定する（ステップＳ２０５）。待ちタスクがない場合には（ステップＳ２０５：ＮＯ）、処理を終了する。待ちタスクがある場合には（ステップＳ２０５：ＹＥＳ）、排他制御部２１０は、ＲＥＱ２をデッドロックチェック部３１０に送信する（ステップＳ２０６）。排他制御部２１０は、ＲＥＰＬ２を受信すると（ステップＳ２０７：ＹＥＳ）、ロック成功をホストに通知して（ステップＳ２０８）、処理を終了する。
【００７４】
図１２は、排他制御部２１０の処理の流れを示すフローチャートである。排他制御部２１０は、デッドロックチェック部３１０からメッセージを受信すると、メッセージの種別で分岐する（ステップＳ３０１）。ＲＥＱ６を受信した場合には、排他制御部２１０は、デッドロックが発生する原因となったタスクが待ちをとなっていることを示す資源ロック情報を削除し（ステップＳ３０２）、デッドロックが発生したことをホストに通知して（ステップＳ３０３）、処理を終了する。
【００７５】
ステップＳ３０１において、ＲＥＱ７を受信した場合には、排他制御部２１０は、ＲＥＱ７で複数フラグの解除が指定されたタスクに該当する複数フラグがオンとなっているか否かを判定する（ステップＳ３０４）。複数フラグがオンではない場合には（ステップＳ３０４：ＮＯ）、処理を終了する。複数フラグがオンの場合には（ステップＳ３０４：ＹＥＳ）、排他制御部２１０は、複数フラグをオフにして、処理を終了する。
【００７６】
ステップＳ３０１において、ＲＥＱ５を受信した場合には、排他制御部２１０は、ＲＥＱ５に示されるタスクがロックしている資源またはタスクが待っている資源を示す識別子（該当識別子）があるか否かを判定する（ステップＳ３０６）。該当識別子がない場合には（ステップＳ３０６：ＮＯ）、ステップＳ３０８に進む。該当識別子がある場合には（ステップＳ３０６：ＹＥＳ）、排他制御部２１０は、複数フラグをオンとし（ステップＳ３０７）、ＲＥＰＬ５を排他制御部２１０に送信して（ステップＳ３０８）、処理を終了する。なお、ステップＳ３０６で否定判定された場合には、資源識別子がないＲＥＰＬ５が送信される。
【００７７】
図１３、図１４、図１５は、デッドロックチェック部３１０の処理の流れを示すフローチャートである。図１３において、デッドロックチェック部３１０は、排他制御部２１０からメッセージを受信すると、メッセージの種別で分岐する（ステップＳ４０１）。ＲＥＱ１またはＲＥＱ４を受信した場合には、再びメッセージの種別で分岐する（ステップＳ４０２）。ＲＥＱ４を受信した場合には、ステップＳ４０９に進む。
【００７８】
ＲＥＱ４を受信した場合には、デッドロックチェック部３１０は、登録資源ロックテーブルに資源ロック情報を登録する（ステップＳ４０３）。デッドロックチェック部３１０は、デッドロックのチェック等を行うデッドロック関連処理Ａを行う（ステップＳ４０４）。デッドロックチェック部３１０は、複数の資源をロックするタスクが新たに出現したか否かを判定する（ステップＳ４０５）。複数の資源をロックするタスクが新たに出現していない場合には（ステップＳ４０５：ＮＯ）、処理を終了する。
【００７９】
複数の資源をロックするタスクが新たに出現した場合には（ステップＳ４０５：ＹＥＳ）、デッドロックチェック部３１０は、全てのスポットデータ制御部２３０にＲＥＱ５を送信し（ステップＳ４０６）、スポットフラグをオンとする（ステップＳ４０７）。全てのスポットデータ制御部２３０からＲＥＰＬ５を受信すると（ステップＳ４０８：ＹＥＳ）、デッドロックチェック部３１０は、ＲＥＰＬ５またはＲＥＱ５に示される登録資源ロック情報を登録資源ロックテーブルに仮登録する（ステップＳ４０９）。デッドロックチェック部３１０は、デッドロックのチェック等を行うデッドロック関連処理Ｂを行う（ステップＳ４１０）。デッドロックチェック部３１０は、仮登録した登録資源ロック情報を登録資源ロックテーブルから削除し（ステップＳ４１１）、処理を終了する。
【００８０】
次に、上記ステップＳ４０４のデッドロック関連処理ＡおよびステップＳ４１０のデッドロック関連処理Ｂについて説明する。図１４（Ａ）は、デッドロック関連処理Ａの処理の流れを示すフローチャートである。デッドロックチェック部３１０は、登録資源ロックテーブルを用いて、デッドロックチェックを実行し（ステップＳ５０１）、デッドロックが発生しているか否かを判定する（ステップＳ５０２）。
【００８１】
デッドロックが発生している場合には（ステップＳ５０２：ＹＥＳ）、デッドロックチェック部３１０は、ＲＥＰＬ１−２を送信し（ステップＳ５０３）、デッドロックが発生する原因となったタスクが待ちをとなっていることを示す登録資源ロック情報を削除し（ステップＳ５０４）、処理を終了する。デッドロックが発生していない場合には（ステップＳ５０２：ＮＯ）、デッドロックチェック部３１０は、ＲＥＰＬ１−１を送信し（ステップＳ５０５）、処理を終了する。
【００８２】
図１４（Ｂ）は、デッドロック関連処理Ｂの処理の流れを示すフローチャートである。デッドロックチェック部３１０は、登録資源ロックテーブルを用いて、デッドロックチェックを実行し（ステップＳ６０１）、デッドロックが発生しているか否かを判定する（ステップＳ６０２）。
【００８３】
デッドロックが発生している場合には（ステップＳ６０２：ＹＥＳ）、デッドロックチェック部３１０は、ＲＥＱ６を送信し（ステップＳ６０３）、デッドロックが発生する原因となったタスクが待ちをとなっていることを示す登録資源ロック情報を削除し（ステップＳ６０４）、処理を終了する。デッドロックが発生していない場合には（ステップＳ６０２：ＮＯ）、処理を終了する。
【００８４】
次に、上述した図１３のステップＳ４０１で、ＲＥＱ２またはＲＥＱ３を受信した場合の処理について、図１５を用いて説明する。図１３において、ＲＥＱ２またはＲＥＱ３を受信した場合には、図１５において、再びメッセージの種別で分岐する（ステップＳ７０１）。ＲＥＱ２を受信した場合には、デッドロックチェック部３１０は、デッドロックチェックテーブル３２０の登録資源ロック情報を「Ｌ」に更新し（ステップＳ７０２）、ステップＳ７０７に進む。
【００８５】
ステップＳ７０１において、ＲＥＱ３を受信した場合には、デッドロックチェック部３１０は、ＲＥＱ３に示される削除対象の登録資源ロック情報を削除する（ステップＳ７０３）。デッドロックチェック部３１０は、削除した登録資源ロック情報がロック待ちかロックを示す登録資源ロック情報であったか否か（ＷかＬ）で分岐する（ステップＳ７０４）。
【００８６】
削除対象がロック待ちを示す登録資源ロック情報の場合には、デッドロックチェック部３１０は、削除された登録資源ロック情報に該当するタスクまたはある資源において、ロック待ちを示す登録資源ロック情報がなくなったか否かを判定する（ステップＳ７０５）。ロック待ちを示す登録資源ロック情報がなくなっていない場合には（ステップＳ７０５：ＮＯ）、ステップＳ７０９に進む。デッドロックチェック部３１０は、ＲＥＰＬ２またはＲＥＰＬ３を送信し（ステップＳ７０９）、処理を終了する。なお、ステップＳ７０９では、ＲＥＱ２を受信している場合にはＲＥＰＬ２が送信され、ＲＥＱ３を受信している場合にはＲＥＰＬ３が送信される。
【００８７】
上記ステップＳ７０５において、ロック待ちを示す登録資源ロック情報がなくなった場合には（ステップＳ７０５：ＹＥＳ）、デッドロックチェック部３１０は、削除に伴い各種情報を削除する（ステップＳ７０６）。ここでの各種情報とは、削除された登録資源ロック情報に該当するタスクと資源の登録資源ロック情報およびそれらを記憶する領域である。
【００８８】
デッドロックチェック部３１０は、削除された登録資源ロック情報に該当するタスクのスポットフラグがオンか否かを判定する（ステップＳ７０７）。スポットフラグがオンの場合には（ステップＳ７０８：ＹＥＳ）、デッドロックチェック部３１０は、ＲＥＱ７を送信し（ステップＳ７０８）、上記ステップＳ７０９に進む。
【００８９】
ステップＳ７０４において、削除対象がロックを示す登録資源ロック情報の場合には、デッドロックチェック部３１０は、削除に伴い各種情報等を削除し（ステップＳ７１０）、上記ステップＳ７０７に進む。ここでの各種情報とは、削除された登録資源ロック情報に該当するタスクと資源の登録資源ロック情報およびそれらを記憶する領域である。
【００９０】
次に、上述したフローチャートを用いて、処理の一例について説明する。この例では、排他制御装置Ｘ、Ｙがそれぞれ排他制御テーブルＸ、Ｙを持つものとする。図１６は、排他制御テーブルＸを示し、図１７は排他制御テーブルＹを示す。また、図１６、図１７のいずれも（Ａ）は複数フラグテーブルを示し、（Ｂ）は資源ロックテーブルを示し、（Ｃ）は登録フラグテーブルを示す。
【００９１】
図１６に示されるように、排他制御テーブルＸでは、複数フラグは全てオフとなっている。タスクＴ１は資源Ｂ２をロックし、タスクＴ３は資源Ｂ２の待ちタスクであり、タスクＴ４は、資源Ｂ１をロックしている。また、タスクＴ１と資源Ｂ２に該当する登録フラグはオンであり、タスクＴ３と資源Ｂ２に該当する登録フラグはオンであり、タスクＴ４と資源Ｂ１に該当する登録フラグはオフである。
【００９２】
図１７を用いて、排他制御テーブルＹについて説明する。なお、図１７に示される網掛け部分は後で追加される情報である。そのため、最初は網掛け部分がないものとして説明する。図１７に示されるように、排他制御テーブルＹでは、複数フラグは全てオフとなっている。タスクＴ１は資源Ｂ４をロックし、タスクＴ２は資源Ｂ３をロックし、タスクＴ５は資源Ｂ３の待ちタスクである。また、タスクＴ１と資源Ｂ４に該当する登録フラグはオンであり、タスクＴ２と資源Ｂ３に該当する登録フラグはオンであり、タスクＴ５と資源Ｂ３に該当する登録フラグはオンである。
【００９３】
図１８を用いて、デッドロックチェックテーブルについて説明する。なお、図１８に示される網掛け部分も後で追加される情報である。そのため、最初は網掛け部分がないものとして説明する。図１８に示されるデッドロックチェックテーブル（網掛け部分を除く）は、図１６の排他制御テーブルＸ、図１７の排他制御テーブルＹ（網掛け部分を除く）に対応するテーブルである。
【００９４】
デッドロックチェックテーブルにおけるスポットフラグは、全てオフとなっている。また、排他制御テーブルＸにおけるタスクＴ１と資源Ｂ２に該当する登録フラグがオンであることに対応して、タスクＴ１と資源Ｂ２に該当する登録資源ロック情報は「Ｌ」となっている。排他制御テーブルＸにおけるタスクＴ３と資源Ｂ２に該当する登録フラグがオンであることに対応して、タスクＴ３と資源Ｂ２に該当する登録資源ロック情報は「Ｗ」となっている。
【００９５】
排他制御テーブルＹにおけるタスクＴ２と資源Ｂ３に該当する登録フラグがオンであることに対応して、タスクＴ２と資源Ｂ３に該当する登録資源ロック情報は「Ｌ」となっている。排他制御テーブルＹにおけるタスクＴ５と資源Ｂ３に該当する登録フラグがオンであることに対応して、タスクＴ３と資源Ｂ２に該当する登録資源ロック情報は「Ｗ」となっている。
【００９６】
この状態で、タスクＴ４が資源Ｂ４のロック要求を排他制御装置Ｙに通知したとする。このロック要求のロック種別は排他ロックであり、チェック指定は、遅延チェックとする。
【００９７】
排他制御装置Ｙの排他制御部２１０は、ロック要求を受信したため、ステップＳ１０１からステップＳ１０２に分岐する。資源Ｂ４は、タスクＴ１がロックしているため、排他制御部２１０は、ロック不可能と判定し（ステップＳ１０２：ＮＯ）、ロック待ちをホストに通知する（ステップＳ１０４）。また、複数フラグがオフであり（ステップＳ１０５：ＮＯ）、遅延チェックであるので（ステップＳ１０７：ＹＥＳ）、タイマがセットされる（ステップＳ１０８）。この時点での排他制御テーブルＹが、図１７の網掛け部分を含むものとなる。
【００９８】
タイムアウト後（ステップＳ１０９：ＹＥＳ）、タスクＴ４はロック待ちタスクのままとすると（ステップＳ１１０：ＹＥＳ）、排他制御部２１０は、ＲＥＱ１を送信し（ステップＳ１１１）、登録フラグをオンとする（ステップＳ１１２）。その後、排他制御部２１０は、デッドロックチェック部３１０からの応答を待つ。
【００９９】
デッドロックチェック部３１０は、ＲＥＱ１を受信したため（ステップＳ４０１、ステップＳ４０２）、資源ロック情報を登録する（ステップＳ４０３）。これにより、図１８に示した網掛け部分であるタスクＴ４と資源Ｂ４に該当する資源ロック情報（Ｗ）と、タスクＴ１と資源Ｂ４に該当する資源ロック情報（Ｌ）が登録される。デッドロックチェック部３１０は、デッドロックチェックを行うが（ステップＳ５０１）、デッドロックは発生していないため（ステップＳ５０２：ＮＯ）、ＲＥＰＬ１−１を送信する（ステップＳ５０５）。排他制御部２１０は、ＲＥＰＬ１−１を受信すると（ステップＳ１１３：ＹＥＳ）、処理を終了する。
【０１００】
一方、デッドロックチェック部３１０は、複数の資源をロックするタスクＴ１が新たに出現したため（ステップＳ４０５：ＹＥＳ）、排他制御装置Ｘ、Ｙに、タスクＴ１についてＲＥＱ５を送信し（ステップＳ４０６）、タスクＴ１に該当するスポットフラグをオンにする（ステップＳ４０７）。
【０１０１】
ＲＥＱ５を受信した排他制御装置Ｘのスポットデータ制御部２３０は、タスクＴ１が資源Ｂ２をロックしているので（ステップＳ３０６：ＹＥＳ）、タスクＴ１に該当する複数フラグをオンにし（ステップＳ３０７）、ＲＥＰＬ５を送信する（ステップＳ３０８）。また、ＲＥＱ５を受信した排他制御装置Ｙのスポットデータ制御部２３０は、タスクＴ１が資源Ｂ４をロックしているので（ステップＳ３０６：ＹＥＳ）、タスクＴ１に該当する複数フラグをオンにし（ステップＳ３０７）、ＲＥＰＬ５を送信する（ステップＳ３０８）。
【０１０２】
全てのスポットデータ制御部２３０からＲＥＰＬ５を受信すると（ステップＳ４０８：ＹＥＳ）、デッドロックチェック部３１０は、ＲＥＰＬ５に示される登録資源ロック情報を登録資源ロックテーブルに仮登録する（ステップＳ４０９）。なお、この例の場合は新たに登録される登録資源ロック情報はない。そして、デッドロックチェック部３１０は、デッドロックチェックを行うが（ステップＳ６０１）、デッドロックは発生していないため（ステップＳ６０２：ＮＯ）、仮登録した登録資源ロック情報を削除し（ステップＳ４１１）、処理を終了する。上述したように、新たに登録された登録資源ロック情報はないため、削除される登録資源ロック情報もない。
【０１０３】
以上の時点で、排他制御テーブルＸは、図１６に示される各テーブルの状態から、タスクＴ１に該当する複数フラグがオンとなったものとなる。排他制御テーブルＹは、図１７に示される各テーブルの状態から、網掛け部分を含み、かつタスクＴ１に該当する複数フラグがオンとなったものとなる。デッドロックチェックテーブルは、図１８に示される各テーブルの状態から、網掛け部分を含み、かつタスクＴ１に該当するスポットフラグがオンとなったものとなる。
【０１０４】
この状態で、タスクＴ１が資源Ｂ１のロック要求を排他制御装置Ｘに通知したとする。このロック要求のロック種別は排他ロックであり、チェック指定は、チェックなしとする。
【０１０５】
排他制御装置Ｘの排他制御部２１０は、ロック要求を受信したため、ステップＳ１０１からステップＳ１０２に分岐する。資源Ｂ１は、タスクＴ４がロックしているため、排他制御部２１０は、ロック不可能と判定し（ステップＳ１０２：ＮＯ）、ロック待ちをホストに通知する（ステップＳ１０４）。また、複数フラグがオンであるので（ステップＳ１０５：ＹＥＳ）、排他制御部２１０は、ＲＥＱ４を送信する（ステップＳ１０６）。次いで、排他制御部２１０は、チェック指定がチェックなしであることから（ステップＳ１０７：ＮＯ）、処理を終了する。
【０１０６】
デッドロックチェック部３１０は、ＲＥＱ４を受信したため（ステップＳ４０１、ステップＳ４０２）、資源ロック情報を仮登録する（ステップＳ４０８）。図１９は、このときのデッドロックチェックテーブルを示す図である。ＲＥＱ４の受信により、資源Ｂ１とタスクＴ１に該当する登録資源ロック情報として「Ｗ」が登録され、資源Ｂ１とタスクＴ４に該当する登録資源ロック情報として「Ｌ」が登録される。
【０１０７】
デッドロックチェック部３１０は、デッドロックチェックを行う（ステップＳ６０１）。図１９に示される例では、デッドロックが検出される。具体的には、図１９に示されるように、タスクＴ１は、資源Ｂ１の待ちタスクであり、資源Ｂ４のロックタスクである。一方、タスクＴ４は、資源Ｂ１のロックタスクであり、資源Ｂ４の待ちタスクである。このように、タスクＴ１とタスクＴ４が相互に待たせているため、デッドロックが発生している。
【０１０８】
デッドロックチェック部３１０は、デッドロックが発生してることから（ステップＳ６０２：ＹＥＳ）、ＲＥＱ６を送信する（ステップＳ６０３）。デッドロックチェック部３１０は、デッドロックが発生する原因となったタスクＴ１が待ちをとなっていることを示す登録資源ロック情報（資源Ｂ１とタスクＴ１に該当する登録資源ロック情報）を削除する（ステップＳ６０４）。
【０１０９】
ＲＥＱ６を受信した排他制御装置Ｘの排他制御部２１０は、排他制御テーブルＸから、デッドロックが発生する原因となったタスクＴ１が待ちをとなっていることを示す資源ロック情報（資源Ｂ１とタスクＴ１に該当する資源ロック情報）を削除する（ステップＳ３０２）。また、排他制御部２１０は、デッドロックの発生をホストに通知する（ステップＳ３０３）。これにより、デッドロックを適切に検出可能となっている。
【０１１０】
なお、デッドロックが発生する原因となった、タスクＴ１による資源Ｂ１のロック要求のチェック指定が遅延チェックであっても、ＲＥＱ４は送信されるので、デッドロックは検出される。また、遅延チェックの場合は、タイマがセットされ、タイムアウト後のステップＳ１１０でロック待ちタスクのままか判定され、デッドロックが検出された場合には、ステップＳ３０２で資源ロック情報が削除されているため、ステップＳ１１０で否定判定される。
【０１１１】
以上説明したように、資源管理部２０１は、管理対象として当該排他制御装置２００に割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報（排他制御テーブル２２０）を記憶する。また、資源管理部２０１は、第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する（ステップＳ１０５）。
【０１１２】
また、デッドロック監視部３０１は、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を前記管理装置から取得する（ＲＥＱ１、ＲＥＱ２、ＲＥＱ３、ＲＥＱ４、ＲＥＰＬ２の受信）。デッドロック監視部３０１は、取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報（デッドロックチェックテーブル３２０）を記憶する。
【０１１３】
デッドロック監視部３０１は、一のタスクが複数の資源をロックしていることを検出する（ステップＳ４０５）。デッドロック監視部３０１は、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合（ＲＥＱ４受信）、または一のタスクが複数の資源をロックしていることが検出された場合（ステップＳ４０５：ＹＥＳ）に、第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する（ステップＳ４１０）。
【０１１４】
このように、本実施形態では、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または一のタスクが複数の資源をロックしていることが検出された場合にデッドロックが発生しているか否かを判定するので、デッドロックを適切に検出可能となる。
【０１１５】
また、資源管理部２０１は、一のタスクが複数の資源をロックしていることが検出されると、一のタスクがロックしている資源と、当該資源のロックを待っているタスクとを示す第１チェック用情報（ＲＥＱ４：スポットデッドロックチェック要求）をデッドロック監視部３０１に送信する。
【０１１６】
デッドロック監視部３０１は、受信した第１チェック用情報を第２情報に反映させ（ステップＳ４０８）、反映された第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する（ステップＳ４１０）。
【０１１７】
デッドロック監視部３０１は、反映された第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定すると、デッドロックの発生有無に関わらず、第２情報から前記第１チェック用情報が反映された情報を削除する（ステップＳ４１１）。
【０１１８】
デッドロック監視部３０１は、一のタスクが複数の資源をロックしていることが検出されると（ステップＳ４０５：ＹＥＳ）、一のタスクがロックしている資源と、当該資源のロックを待っているタスクとを示す第２チェック用情報（ＲＥＰＬ５：スポットデータ転送）を資源管理部２０１のスポットデータ制御部２３０に要求（ＲＥＱ５：スポットデータ要求）する。
【０１１９】
デッドロック監視部３０１は、受信した第２チェック用情報を第２情報に反映させ（ステップＳ４０９）、反映された第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する（ステップＳ４１０）。
【０１２０】
図２０は本実施形態による排他制御システム８００の最小構成を示す図である。本実施形態による排他制御システム８００は少なくとも複数のタスクが使用する資源を管理する複数の管理装置５００と、資源を使用する複数のタスクによるデッドロックを監視する監視装置６００とを有していればよい。また、管理装置５００と監視装置６００は、例えばネットワークで接続され、互いに通信可能となっている。
【０１２１】
管理装置５００は第１記憶手段５０１、第１検出手段５０２の構成を備えればよい。
第１記憶手段５０１は管理対象として当該管理装置に割り当てられた資源をロックしているタスク、および割り当てられた資源のロックを待っているタスクを示す第１情報を記憶する。
第１検出手段５０２は第１情報を用いて、複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことを検出する。
【０１２２】
監視装置６００は資源情報取得手段６０１、第２記憶手段６０２、第２検出手段６０３、判定手段６０４の構成を備えればよい。
資源情報取得手段６０１は、一の資源をロックしているタスク、または当該一の資源のロックを待つタスクを示す資源情報を管理装置５００から取得する。
第２記憶手段６０２は、資源情報取得手段により取得された資源情報にもとづいて、資源をロックしているタスク、および資源のロックを待っているタスクを示す第２情報を記憶する。
第２検出手段６０３は、第２情報にもとづき、一のタスクが複数の資源をロックしていることを検出する。
判定手段６０４は、第１検出手段５０２により複数の資源をロックしているタスクが、新たに他の資源のロックを待つタスクとなったことが検出された場合、または第２検出手段６０３により一のタスクが複数の資源をロックしていることが検出された場合に、前記第２情報を用いて複数のタスクによるデッドロックが発生しているか否かを判定する。
【０１２３】
上述の排他制御装置２００は内部に、コンピュータシステムを有している。そして、上述した図１０−図１５に示される処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することで、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線を用いてコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【０１２４】
なお、図１における排他制御装置２００の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより図１０−図１５に示される処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１２５】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【産業上の利用可能性】
【０１２６】
本発明は、監視装置、排他制御システム、プログラム及び制御方法に関する。
【符号の説明】
【０１２７】
１０  ホストコンピュータ
２０  共有資源
３０  ネットワーク
４０  排他制御システム
２００  排他制御装置
２０１  資源管理部
２１０  排他制御部
２２０  排他制御テーブル
２３０  スポットデータ制御部
３０１  デッドロック監視部
３１０  デッドロックチェック部
３２０  デッドロックチェックテーブル
４００  通信部
５００  管理装置
５０１  第１記憶手段
５０２  第１検出手段
６００  監視装置
６０１  資源情報取得手段
６０２  第２記憶手段
６０３  第２検出手段
６０４  判定手段
【図１】
2020144616.tif 000003
【図２】
2020144616.tif 000004
【図３】
2020144616.tif 000005
【図４】
2020144616.tif 000006
【図５】
2020144616.tif 000007
【図６】
2020144616.tif 000008
【図７】
2020144616.tif 000009
【図８】
2020144616.tif 000010
【図９】
2020144616.tif 000011
【図１０】
2020144616.tif 000012
【図１１】
2020144616.tif 000013
【図１２】
2020144616.tif 000014
【図１３】
2020144616.tif 000015
【図１４】
2020144616.tif 000016
【図１５】
2020144616.tif 000017
【図１６】
2020144616.tif 000018
【図１７】
2020144616.tif 000019
【図１８】
2020144616.tif 000020
【図１９】
2020144616.tif 000021
【図２０】
2020144616.tif 000022