(57)【特許請求の範囲】
【請求項１】
マネージャからの複数の管理コマンドから成るトランザクションとして処理される管理操作を、エージェント側の管理オブジェクトを介して被管理装置で並行して実行させるために、一つのトランザクションにより操作される該管理オブジェクトとその操作の影響を受ける管理オブジェクトに対してロック処理を行い、並行実行される他のトランザクションからデータの変更又は読み出しを受けないようにする並行実行制御方式において、
該マネージャが、インスタンスロック部と、記憶部を有する操作インタフェース部とを有し、各管理オブジェクトに対応した該操作インタフェース部に対して該インスタンスロック部がロック情報を該記憶部に記憶することによりロックを掛け、該マネージャ及び該エージェントの両方で並行実行制御を行うことを特徴とした並行実行制御方式。
【請求項２】
請求項１において、
該記憶部が、各管理オブジェクトに対応して該マネージャ側に設けられている操作インタフェース部に設けられていることを特徴とした並行実行制御方式。
【請求項３】
請求項１又は２において、
該マネージャに、管理操作を評価し、管理操作に応じてマネージャ側のロックを、インスタンス単位とクラス単位の組み合わせで掛ける管理操作評価部を設けたことを特徴とする並行実行制御方式。
【請求項４】
請求項３において、
該マネージャに、該クラス単位でロックがかけられたインスタンスに対して、該エージェント側での処理が行われた後、該エージェントでロックされたインスタンス以外の冗長なインスタンスのロックを解放する冗長インスタンスロック解放部を設けたことを特徴とする並行実行制御方式。
【請求項５】
請求項４において、
該クラス単位のロックをモニターするクラス単位ロックモニター部と、
該クラス単位ロックモニター部から該クラス単位のロックの発生、該インスタンスロック部からインスタンス単位のロックの発生、そして該冗長インスタンスロック解放部から冗長なインスタンスロックの解除がそれぞれ知らされるデッドロック検出部と、
該デッドロック検出部がデッドロックを検出したとき並行実行制御部及び該エージェントに対してロールバックを指示するロールバック指示部と、
を備え、該デッドロック検出部は、該インスタンス単位のロックだけを行っているトランザクションしか存在しない場合は該インスタンス単位のロックの発生直後にデッドロック検出処理を内部起動させ、該クラス単位のロックが発生した場合には該冗長なインスタンスロックの解除まで該デッドロック検出処理を内部起動させないようにし、該デッドロックを検出したとき該ロールバック指示部を介して該デッドロックを引き起こすトランザクションのいずれかをロールバックさせデッドロックを解除することを特徴とした並行実行制御方式。
【請求項６】
請求項５において、
該クラス単位ロックの発生から一定時間経過後に該デッドロック検出処理を起動させるタイマーを該クラス単位ロックモニター部に設けたことを特徴とする並行実行制御方式。
【請求項７】
請求項５又は６において、
該クラス単位のロックに含まれるインスタンスの数を計数するカウンター部を該管理操作評価部に設け、該クラス単位のロックに含まれるインスタンスの数が少ない場合には、該エージェント側の応答を待たないで該デッドロック検出処理を起動させることを特徴とした並行実行制御方式。
【請求項８】
請求項５乃至７のいずれかにおいて、
該マネージャ内に動作しているトランザクションの数を計数するカウンターを設け、動作しているトランザクションの数が少ない場合には、該エージェント側の応答を待たないで該デッドロック検出処理を起動させることを特徴とした並行実行制御方式。
【請求項９】
請求項６乃至８のいずれかにおいて、
該クラス単位のロックが原因となってデッドロックが発生した場合、該デッドロック検出部は、該クラス単位のロックを含むトランザクションをロールバックするように該ロールバック指示部を制御することを特徴とした並行実行制御方式。
【発明の詳細な説明】
【発明の属する技術分野】
本発明は並行実行制御方式に関し、特にマネージャが被管理実体に対してエージェントを介して管理操作を依頼する管理システムにおける並行実行制御方式に関するものである。
【０００１】
近年、通信装置や計算機をオープンな環境で管理することが要求されて来ている。
【０００２】
このため、ＯＳＩ（Open Systems Interconnection：開放型システム間相互接続）で定義された管理プロトコル（CMIP:ITU-T X.711勧告）を用いて、管理を行う装置（以下、マネージャと称する）がエージェントを含む通信装置や計算機を被管理実体として管理することが要求されている。
【０００３】
そして、管理を行うマネージャにおいては、管理コマンドに対する処理を高速に実行することが要求されており、このため、複数の管理コマンド（CMIS:ITU-T X.710勧告）から成るトランザクションとして処理されなければならない管理操作を並行して実行する必要がある。
【０００４】
【従来の技術】
ＯＳＩで定義された装置の管理（ITU-T X.700 シリーズ勧告）においては、管理対象は管理オブジェクト(Managed Object)と呼ばれる型で管理される。この管理オブジェクトは属性と呼ばれるデータ（複数種類存在）を有する。
【０００５】
マネージャからの、それぞれの管理オブジェクトに対して可能な管理操作は、管理オブジェクトの種類毎に次の５項目に分類・定義されており、それぞれ管理コマンド(( )で示す）にマッピングされる。
【０００６】
▲１▼管理オブジェクトを生成する(M-CREATE)
▲２▼管理オブジェクトを消去する(M-DELETE)
▲３▼管理オブジェクトの持つ属性の値を書き込む(M-SET)
▲４▼管理オブジェクトの持つ属性の値を読み出す(M-GET)
▲５▼管理オブジェクトに複雑な動作をさせる(M-ACTION)
【０００７】
従来の並行実行制御方式は、マネージャからの複数の管理コマンドからなるトランザクションとして処理される管理操作を並行に実行させる場合には、被管理装置内のエージェントで一つのトランザクションにおいて操作される管理オブジェクトおよびその操作の影響を受ける管理オブジェクトに対してロックをかけ、並行実行される他のトランザクションからデータの変更を受けないようにするロック処理による並行実行制御を行っていた。
【０００８】
これを図９により以下に説明する。
この並行実行制御方式は管理装置としてのマネージャＭＮＧとエージェントＡＧＴとを含む被管理装置とで構成されており、マネージャＭＮＧにおいては、トランザクションとして複数の管理操作を実行することを要求するマネージメントプリケーション１１〜１ｎが設けられており、これらは互いに独立して（他のマネージメントプリケーションの要求は考慮せずに）動作するものである。
【０００９】
マネージャ内並行実行制御部２は、マネージメントアプリケーションの並行実行制御を行うものである。
【００１０】
また、マネージャＭＮＧとエージェントＡＧＴとの間は通信プロトコル（ＣＭＩＰ）４，５で接続されており、エージェント内並行実行制御部６は、エージェントＡＧＴ内の並行実行制御を行うもので、通信プロトコル５からの管理操作に応じてインスタンスロック部６１を使用し、管理操作により影響を受ける管理オブジェクト７１，７２に対してロックを掛けるものである。
【００１１】
管理オブジェクト７１〜７ｍは管理対象の実体８１〜８ｍにアクセスし、実際の管理操作を実行するものであり、上記の操作インタフェース部３１〜３ｍはそれぞれ管理オブジェクト７１〜７ｍに対応している。なお、管理オブジェクト７１〜７ｍはそれぞれロック状態を記憶する記憶部７１ａ〜７ｍａを有している。
【００１２】
以下、図面に示した順に動作を説明する。
（１）まず、マネージメントアプリケーション１ｎは、トランザクションの開始時に、通信プロトコル（ＣＭＩＰ）４，５を通じてエージェントＡＧＴの実行制御部６にトランザクションの開始を通知する。
【００１３】
（２）マネージメントアプリケーション１ｎはマネージャ内並行実行制御部２にトランザクションの開始を通知した後、一例として管理オブジェクト７１（ＭＯ１）への管理操作（この例では上記▲５▼のM-ACTION=Mアクション）操作を行うことを依頼する。
（３）マネージャ内並行実行制御部２では管理操作を評価し、管理オブジェクト７１に対応した操作インタフェース部３１（ProxyMO1) に対して管理操作命令を与える。
【００１４】
（４）操作インタフェース部３１は並行実行制御部２からの管理操作命令を通信プロトコル４を使用してエージェントＡＧＴに転送する。
（５）エージェントＡＧＴでは通信プロトコル５でこれを受信し、エージェント内並行実行制御部６に転送する。
【００１５】
（６）エージェント内並行実行制御部６は、管理操作を評価し管理オブジェクト７１への管理操作により影響を受ける管理オブジェクト７１，７２に対してロックをかけ並行実行を行う。
（７）エージェント内並行実行制御部６は、さらに管理オブジェクト７１へのアクションの実行を要求する。
【００１６】
（８）管理オブジェクト７１は管理対象の実体８１にアクセスする。
（９）管理オブジェクト７１は同時に管理操作、実体の状態などを評価し、管理操作の影響を受ける管理オブジェクト７２を介して被管理実体８２にアクセスする。
【００１７】
（１０）管理オブジェクト７１へのアクションの結果は通信プロトコル４，５を介して、操作要求を出したマネージメントアプリケーション１ｎに通知され、マネージメントアプリケーション１ｎは同じトランザクションに含まれる継続する管理操作を依頼する。
【００１８】
トランザクションが終了した時点でマネージメントアプリケーション１ｎはエージェントＡＧＴにトランザクションの終了を通知し、管理オブジェクトのロックを解放する。
【００１９】
このように、並行実行制御は、一つのトランザクションに含まれる管理操作を受けた管理オブジェクトおよび、その管理操作により影響を受ける管理オブジェクトに対して、他のトランザクションに含まれる管理操作を受け付けなくすること、すなわちロックすることでデータの一貫性を保っている。
【００２０】
【発明が解決しようとする課題】
上記のような従来例におけるマネージャでは、デッドロックに陥り、並行実行不可能なトランザクションに含まれるような管理操作にも、実行可能として計算機資源（メモリ、ＣＰＵパワー）を確保しなければならず、全体としての性能が劣化し、また、デッドロックの判定もエージェントで行われるため、通信のオーバーヘッドによるコマンドレスポンスが劣化するという問題が生じていた。
【００２１】
従って本発明は、マネージャからの複数の管理コマンドから成るトランザクションとして処理される管理操作をエージェントに付随した管理オブジェクトを介して被管理装置で並行して実行させるために、一つのトランザクションにより操作される該管理オブジェクトとその操作の影響を受ける管理オブジェクトに対してロック処理を行い、並行実行される他のトランザクションからデータの変更又は読み出しを受けないようにする並行実行制御方式において、計算機資源の冗長な使用の削減とコマンドレスポンスの向上を目的とする。
【００２２】
【課題を解決するための手段】
上記の目的を達成するため、本発明に係る並行実行制御方式は、マネージャが、インスタンスロック部と、記憶部を有する操作インタフェース部とを有し、各管理オブジェクトに対応した該操作インタフェース部に対して該インスタンスロック部がロック情報を該記憶部に記憶することによりロックを掛け、該マネージャ及び該エージェントの両方で並行実行制御を行うことを特徴としたものである。
【００２３】
並行実行制御は、上記のように、一つのトランザクションに含まれる管理操作を受けた管理オブジェクトとその管理操作により影響を受ける管理オブジェクトに対して、他のトランザクションに含まれる管理操作を受け付けなくすることが目的である。
【００２４】
このため本発明では、インスタンスロック処理はマネージャ側とエージェント側の両方で行い、マネージャ側では、例えば管理オブジェクトに対応した操作インタフェース部にロック状態を記憶する手段を設け、該操作インタフェース部に対しても同時にロックをかけ、エージェント側では、管理オブジェクトの実体に対してロックをかけることで、マネージメントアプリケーションからのトランザクションに対する並行実行制御を行う。
【００２５】
従って、マネージャ側でのインスタンスロック処理が可能となり、マネージャ側でデッドロックに陥り並行実行不可能にさせるトランザクションに含まれる管理操作を判別し、余分な計算機資源（メモリ、ＣＰＵパワー）を必要とせず、全体としての性能の劣化を防ぐことが可能となる。
【００２６】
また、インスタンスデッドロックの判定をマネージャ側で行うことが可能となるため、通信のオーバーヘッドによるコマンドレスポンスの劣化を防ぐことが可能となる。
【００２７】
また本発明では、上記のマネージャに、管理操作を評価し、管理操作に応じてマネージャ側のロックをインスタンス単位と同じ性質を持つインスタンスの集合であるクラス単位とを組み合わせて掛ける管理操作評価部を設けることができる。
【００２８】
これにより、管理操作により影響を受ける管理オブジェクトのクラスは定義されているが、インスタンスは管理実体の実装状態の影響を受けて確定する、すなわちエージェントで実際に管理操作が行われないとインスタンスが確定しないと定義されている管理操作に対してもマネージャ側でロックを掛けることが可能となり、性能向上を図ることが可能となる。
【００２９】
さらに本発明では、上記のマネージャに、該クラス単位でロックが掛けられたインスタンスに対して、該エージェント側での処理が行われた後、該エージェントでロックされたインスタンス以外の冗長な同一クラスに含まれるインスタンスのロックを解放する冗長インスタンスロック解放部を設けることも可能である。
【００３０】
これにより、影響を受ける可能性のあるクラスに属する管理オブジェクトに対応した操作インタフェース部の全部にロックをかけた場合に、冗長なロックを掛けることで、並行実行の性能が低下している時間を短縮することが可能となる。
【００３１】
しかしながら、インスタンス単位でのロック処理しか存在しない場合には、厳密にデッドロックを発生させるロック対象が確定するが、上記のようにクラスしか確定しない場合にクラス単位のロックを掛けるように構成した場合、本来ロック対象とならないインスタンスに対しても冗長なロックが発生してデッドロックの発生確率が増大し、パフォーマンスが低下する可能性がある。
【００３２】
また、デッドロックの検出を行い、ロールバック処理を行う場合には、冗長なロックが掛かった状態でデッドロック検出を行うため、本来デッドロックを引き起こさないトランザクションをデッドロックに関連したものとしてロールバックさせてしまい、性能低下を引き起こしてしまう不具合がある。
【００３３】
そこで本発明では、上記の構成に加えて、クラス単位のロックをモニターするクラス単位ロックモニター部と、該クラス単位ロックモニター部から該クラス単位のロックの発生、該インスタンスロック部からインスタンス単位のロックの発生、そして該冗長インスタンスロック解放部から冗長なインスタンスロックの解除がそれぞれ知らされるデッドロック検出部と、該デッドロック検出部がデッドロックを検出したとき並行実行制御部及び該エージェントに対してロールバックを指示するロールバック指示部と、を備え、該デッドロック検出部は、該インスタンス単位のロックだけを行っているトランザクションしか存在しない場合は該インスタンス単位のロックの発生直後にデッドロック検出処理を内部起動させ、該クラス単位のロックが発生した場合には該冗長なインスタンスロックの解除まで該デッドロック検出処理を内部起動させないようにし、該デッドロックを検出したとき該ロールバック指示部を介して該デッドロックを引き起こすトランザクションのいずれかをロールバックさせデッドロックを解除することができる。
【００３４】
すなわち、クラス単位ロックモニター部は、クラス単位のロックの発生をモニターし、デッドロック検出部は、インスタンスロック部によるインスタンス単位のロックしか存在しない場合には、該ロックが発生する毎にデッドロック検出処理を行うが、クラス単位のロックが発生した場合には、エージェント側の処理によりロック対象となるインスタンスが確定し、これがマネージャ側に反映され、冗長インスタンスロック解放部で冗長なインスタンスロックが解除された後にデッドロック検出処理を行う。
【００３５】
そして、デッドロック検出部がデッドロックを検出したとき、これを受けたロールバック指示部は、デッドロックを発生させたトランザクションの内のいずれかをロールバックさせる指示を並行実行制御部及びエージェント側に出し、デッドロックを解除する。
【００３６】
このように、クラス単位のロックが発生した場合には、エージェント側でのロック対象が確定し、その結果がマネージャ側に反映されるまでデッドロック検出処理を動作させないことで、冗長なロックによるデッドロックの発生を抑制し、性能の向上を実現している。
【００３７】
また本発明では、該クラス単位ロックの発生から一定時間経過後に該デッドロック検出処理を起動させるタイマーを該クラス単位ロックモニター部に設けてもよい。
【００３８】
これにより、デッドロック状態の場合に、エージェントからの管理オブジェクトのロック通知が、エージェントの故障、通信障害等の理由で失われた場合に発生する処理の中断を防ぐことが可能となり、処理の簡略化を図っている。
【００３９】
さらに本発明では、該クラス単位のロックに含まれるインスタンスの数を計数するカウンター部を該管理操作評価部に設け、該クラス単位のロックに含まれるインスタンスの数が少ない場合には、該エージェント側の応答を待たないで該デッドロック検出処理を起動させることができる。
【００４０】
これにより、エージェントからの管理オブジェクトのロック通知を待つ時間と、冗長なロックによるデッドロックの発生のトレードオフを調整できることとなり、最適なデッドロック検出処理の起動が可能となる。
【００４１】
同様に、該マネージャ内に動作しているトランザクションの数を計数するカウンターを設け、動作しているトランザクションの数が少ない場合には、該エージェント側の応答を待たないで該デッドロック検出処理を起動させることも可能である。
【００４２】
また、該クラス単位のロックが原因となってデッドロックが発生した場合、該デッドロック検出部は、該クラス単位のロックを含むトランザクションをロールバックするように該ロールバック指示部を制御することもできる。
【００４３】
これにより、クラス単位のロック時のロールバックの効果が大きく、容易にデッドロックが解放可能となる。
【００４４】
【発明の実施の形態】
図１は本発明に係る並行実行制御方式の実施例（１）を示したものである。この実施例では、図９に示した従来例において、上述の如くロック処理をマネージャＭＮＧ側とエージェントＡＧＴ側の両方で行うため、マネージャＭＮＧ側では、並行実行制御部２においてインスタンスロック部２１を設けるとともに管理オブジェクト７１〜７ｍに対する操作インタフェース部３１〜３ｍにそれぞれロック状態を記憶しておく記憶部３１ａ〜３ｍａを設け、該操作インタフェース部に対してロックをかけ、エージェントＡＧＴ側では、管理オブジェクトの実体に対してロックをかけることで、マネージメントアプリケーション１１〜１ｎからのトランザクションに対する要求を満たすようにしている。
【００４５】
動作においては、上述した図９の従来例の動作（１）〜（１０）のうち、動作（２）と（３）との間に下記の動作（３ａ）が実行される。
【００４６】
（３ａ）マネージャ内並行実行制御部２では管理操作を評価し、管理操作により影響を受ける管理オブジェクトである管理オブジェクト７１，７２にそれぞれ対応した操作インタフェース部３１，３２に対してインスタンスロック部２１がロック情報（ロック状態）を記憶部３１ａ，３２ａに記憶することによりロックを掛け、マネージャＭＮＧ内での並行実行制御を行う。
【００４７】
この動作（３ａ）以外は図９の従来例と同様である。
そして、トランザクションが終了した時点でマネージメントアプリケーション１ｎは操作インタフェース部３１，３２に掛かっていたロックを解放し、同時にエージェントＡＧＴにトランザクションの終了を通知し、管理オブジェクトのロックを解放する。
【００４８】
図２は本発明に係る並行実行制御方式の実施例（２）を示したものである。この実施例は、管理操作により影響を受ける管理オブジェクトのクラスは定義されているが、インスタンスは管理実体の実装状態の影響を受けて確定する、すなわちエージェントＡＧＴで実際に管理操作が行われないとインスタンスが確定しないと定義されている管理操作を実行するものである。
【００４９】
例えばエージェントＡＧＴにおける管管理オブジェクト７２〜７４は同じクラスの管理オブジェクトで、管理オブジェクト７１への操作により管理オブジェクト７２〜７４が属するクラスに影響が発生することが管理操作で定義されているものと仮定する。
【００５０】
このため、本実施例では、実施例（１）のマネージャ内並行実行制御部２に管理操作評価部２２とクラスロック部２３を追加しており、管理操作評価部２２は図１に示した実施例（１）における動作（３ａ）において、管理オブジェクト７１への管理操作を詳細に評価し、この評価結果に基づきインスタンスロック部２１が、エージェントＡＧＴが実際の管理操作を行わなくてもロック対象が被管理実体８１として確定している管理オブジェクト（この場合は管理オブジェクト７１）に対してはロックを掛けるようにしている。
【００５１】
ただし、操作により影響を受けるクラスは確定しているが、管理される実体８１の状態によりエージェントＡＧＴ内で実際の管理操作が行われなければロック対象となる管理オブジェクトが確定しないもの（この例では管理オブジェクト７２〜７４）に関しては、影響を受けることが確定しているクラスに含まれる操作インタフェース部３２〜３４（実際はいずれかの管理オブジェクトにしか管理オブジェクト７１へのアクション操作の影響を受けない）に対してクラスロック部２３がロックを掛けるようになっている（動作（３ｂ））。
【００５２】
操作インタフェース部３１は、管理オブジェクト７１（ＭＯ１）へのアクション操作（上記の▲５▼）の結果として、上記の動作（４）においてエージェントＡＧＴへのＭアクション (管理オブジェクト７１）の転送を通信プロトコル４に依頼する。
【００５３】
通信プロトコル４はエージェントＡＧＴにおける通信プロトコル５を介してマネージャＭＮＧからのＭアクション (管理オブジェクト７１）をエージェント内並行実行制御部６に通知する（動作（５））。
【００５４】
エージェント内並行実行制御部６は、上記の動作（６）において管理オブジェクト７１にロックを掛けるとともに、動作（７）において管理オブジェクト７１へのアクションの実行を要求する。
【００５５】
管理オブジェクト７１は、動作（８）において管理対象の実体８１にアクセスすると同時に管理操作、実体の状態などを評価して管理操作の影響を受ける管理オブジェクトを発見し（本実施例では管理オブジェクト７２）、管理操作の影響を受ける管理オブジェクト７２にもロックを掛ける（動作（９ａ））とともに操作を行う（動作（９ｂ），（８ａ））。
【００５６】
管理オブジェクト７１へのアクションの結果は通信プロトコル５，４を介して、操作要求を出したマネージメントアプリケーション１ｎに通知され、マネージメントアプリケーション１ｎは動作（１０）に示す同じトランザクションに含まれる継続する管理操作を依頼する。
【００５７】
トランザクションが終了した時点でマネージメントアプリケーション１ｎは操作インタフェース部に掛かっていたロックを解放し、同時にエージェントＡＧＴにトランザクションの終了を通知し、管理オブジェクトのロックを解放する。
【００５８】
この実施例によれば、管理操作により影響を受ける管理オブジェクトのクラスは定義されているが、インスタンスは管理実体の実装状態の影響を受けて確定する、すなわちエージェントで実際に管理操作が行われないとインスタンスが確定しないと定義されている管理操作に対してもマネージャ側でロックをかけることが可能となり、性能向上を図ることが可能となる。
【００５９】
図３は本発明に係る並行実行制御方式の実施例（３）を示したものである。この実施例では、マネージャ内並行実行制御部２において上記の実施例（２）に加えて冗長イスタンスロック開放部２４を設けている。
【００６０】
動作においては、管理対象の実体８２にアクセスする動作（８ａ）と同時に管理操作、実体の状態などを評価し、管理操作の影響を受ける管理オブジェクト７２にもロックをかける処理までは上記の実施例（２）と同様である。
【００６１】
その後、管理オブジェクト７１は、通信プロトコル（ＣＭＩＰ）の事象発生通知（M-EVENT-REPORT）の機能を使用し、管理オブジェクト７２にロックを掛けたことを操作要求したマネージャＭＮＧ側の並行実行制御部２における冗長インスタンスロック解放部２４に通知する（動作（１１），（１２））。
【００６２】
冗長インスタンスロック解放部２４は操作インタフェース部３２以外のロック情報は余分であるとして解除する（動作（１３））。
【００６３】
管理オブジェクト７１へのアクションの結果は通信プロトコル５，４を介して、操作要求を出したマネージメントアプリケーション１ｎに通知され、マネージメントアプリケーション１ｎはトランザクションに含まれる継続する管理操作を依頼する（動作（１４））。
【００６４】
トランザクションが終了した時点でマネージメントアプリケーション１ｎは操作インタフェース部３１，３２に掛かっていたロックを解放し、同時にエージェントＡＧＴにトランザクションの終了を通知し、管理オブジェクト７１，７２のロックを解放する。
【００６５】
この実施例では、影響を受ける可能性のあるクラスに属する管理オブジェクトに対応した操作インタフェース部の全部にロックをかけ、冗長なロックをかけることで、並行実行の性能が低下している時間を短くすることが可能となり、よりマネージャの性能を向上させることが可能となる。
【００６６】
同様に管理オブジェクト７１へのアクションの結果に管理オブジェクト７２をロックしたことを示す情報を含めてマネージメントアプリケーション１ｎに通知することでも本実施例は実現できる。
【００６７】
図４は本発明に係る並行実行制御方式の実施例（４）を示したものである。この実施例では、図３に示した実施例（３）に加えて、クラスロック部２３の出力信号を入力するようにに接続されたクラス単位ロックモニター部４１と、インスタンスロック部２１、冗長インスタンスロック開放部２４及びクラス単位ロックモニター部４１の各出力信号を入力するように接続されたデッドロック検出部４２と、このデッドロック検出部４２の出力信号を入力するとともに並行実行制御部２及び通信プロトコル４に出力信号を与えるように接続されたロールバック指示部４３と、を設けている。
【００６８】
動作において、まず、クラス単位ロックモニター部４１はマネージャ内並行実行制御部２中のクラスロック部２３におけるクラス単位のロックの発生をモニターしている（動作（１５））。
【００６９】
また、デッドロック検出部４２においてはインスタンスロック部２１におけるインスタンス単位のロックの発生をモニターしている（動作（１６））。
【００７０】
そして、デッドロック検出部４２は、クラス単位ロックモニター部４１の出力信号の如何に関わらず、インスタンスロック部２１の出力信号からインスタンス単位のロックだけを行っているトランザクションしか存在しないことが分かったときには、該インスタンス単位のロックが発生する毎に該ロックが行われた直後にデッドロック検出動作を内部起動する。なお、この動作は上述していないが従来においても行われている動作である。
【００７１】
この結果、デッドロック検出部４２は、インスタンスのデッドロックを発見した場合には、ロールバック指示部４３にデッドロックの発生を伝え（動作（１９））、ロールバック指示部４３はロールバックの指示を操作評価部２２及び通信プロトコル４に与える（動作（２０））。
【００７２】
一方、クラス単位ロックモニター部４１は、クラスロック部２３の出力信号からクラス単位のロックが発生したことを検出したとき、デッドロック検出部４２のデッドロック検出処理を起動させないように制御信号を発生する（動作（１７））。
【００７３】
ただし、デッドロック検出処理の起動は遅らされるだけであり、上記のようにクラス単位のロックが掛けられているときは、冗長なインスタンスロックが解除された時点で起動される。
【００７４】
すなわち、実施例（３）で述べたように冗長インスタンスロック解放部２４が通信プロトコル４，５を介してロック通知（動作（１２））を受けたとき、操作インタフェース部３２以外の不必要なロックを解除し、管理オブジェクト７１だけがロックされたことをデッドロック検出部４２に伝えることにより、デッドロック検出部４２を起動する（動作（１８））。
【００７５】
そして、デッドロック検出部４２が起動されてデッドロックが検出された場合は、上記のインスタンスロックのみの場合と同様に、デッドロック検出部４２はロールバック指示部４３を制御してロールバックの指示を並行実行制御部２及び通信プロトコル４に与える（動作（１９），（２０））。
【００７６】
これを受けて並行実行制御部２は、デッドロックを起こすトランザクションのいずれかをロールバックさせデッドロックを解除する（動作（２０））。
【００７７】
また、このロールバック指示は通信プロトコル４から通信プロトコル５を経てエージェント内並行実行制御部６に与えられ、マネージャＭＮＧ側と同様にトランザクションを元の状態に戻す（図５に示す本実施例のエージェントＡＧＴ側の動作（２１））。
【００７８】
図６は本発明に係る並行実行制御方式の実施例（５）のマネージャＭＮＧを示したものである。この実施例では、図４に示した実施例（４）におけるクラス単位ロックモニター部４１内にタイマー４１０を設けた点が異なっている。なお、エージェントＡＧＴについては図５の実施例と同様であるので図示していない。
【００７９】
動作において、インスタンス単位のロックだけからなるトランザクションしか存在しない場合には、デッドロック検出部４２はインスタンス単位のロックが発生する毎に、すぐさま内部起動させるが、クラス単位ロックモニター部４１では、クラス単位のロックの発生を検出したとき、タイマー４１０を用いて一定時間はクラス単位のロックの発生をデッドロック検出部４２に知らさない。
【００８０】
そして、クラス単位ロックモニター部４１はこのタイマー４１０による一定時間が経過した後、デッドロック検出部４２にクラス単位のロックの発生を知らせる。
【００８１】
したがって、デッドロック状態の場合に、エージェントＡＧＴからの管理オブジェクト７２のロック通知（動作（１１））が、エージェントＡＧＴの故障、通信障害等の理由で失われた場合に発生する処理の中断を防ぐことが可能となる。
【００８２】
また、冗長インスタンスロック解放部２４からデッドロック検出部４２の起動（動作（１８））を行わず、クラス単位ロックが発生してから一定時間経過後にデッドロック検出処理を動作させることで処理の簡略化を図ることも可能である。
【００８３】
図７は本発明に係る並行実行制御方式の実施例（６）のマネージャＭＮＧを示したものである。この実施例では、図４に示した実施例（４）における操作評価部２２内にクラス単位のロックが発生した場合、そのクラスに含まれるインスタンスの数を評価するインスタンスカウンター部２２０を設けた点が異なっている。なお、エージェントＡＧＴについては図５の実施例と同様であるので図示していない。
【００８４】
動作において、操作評価部２２にクラス単位のロックが発生した場合、そのクラスに含まれるインスタンスの数がデッドロック検出部４２に与えられ、このインスタンス数が一定数より少ない場合には、デッドロック検出部４２はクラス単位のロック発生直後に内部起動する。これは、一つのクラスに含まれるインスタンスの数が少なければ、冗長なロックによるデッドロックの発生確率が低いためである。
【００８５】
これにより、エージェントＡＧＴからの管理オブジェクト７１のロック通知（動作（１１））を待つ時間と、冗長なロックによるデッドロックの発生のトレードオフを調整できることとなり、最適なデッドロック検出処理の起動が可能となる。
【００８６】
図８は本発明に係る並行実行制御方式の実施例（７）のマネージャＭＮＧを示したものである。この実施例では、図７に示した実施例（６）におけるインスタンスカウンター部２２０の代わりにマネージャ並行実行制御部２内にトランザクションカウンター部２５を設けた点が異なっている。なお、エージェントＡＧＴについては図５の実施例と同様であるので図示していない。
【００８７】
動作において、トランザクションカウンター部２５がマネージャＭＮＧ内のトランザクションの数を計数してデッドロック検出部４２に知らせると、デッドロック検出部４２は、トランザクションの数が一定の数より少ない場合には、デッドロック検出処理をクラス単位のロックが発生した場合でも該ロック発生直後に起動させる。これはトランザクションの数が少ない場合には、冗長なロックによるデッドロックの発生確率が低いためである。
【００８８】
この場合も、エージェントＡＧＴからの管理オブジェクト７１のロック通知（動作（１１））を待つ時間と、冗長なロックによるデッドロックの発生のトレードオフを調整できることとなり、最適なデッドロック検出処理の起動が可能となる。
【００８９】
上記の実施例の他に、特に図６の実施例（５）において、エージェントＡＧＴからの管理オブジェクト７１のロック通知（動作（１１））が、エージェントＡＧＴの故障、通信障害等の理由で失われたために冗長インスタンスロック解放部２４でロック解除が行われず、クラス単位のロックがインスタンス単位のロックに置き換わらなかった場合、クラス単位のロックを含むトランザクションをロールバックさせてもよい。
【００９０】
これは、クラス単位のロックは、他のトランザクションに与える影響が大きいため、このトランザクションをロールバックさせることによりロールバックの効果が大きく、容易にデッドロックが解放可能となるためである。
【００９１】
【発明の効果】
以上説明したように、本発明に係る並行実行制御方式によれば、マネージャ側で、デッドロックに陥り並行実行不可能なトランザクションに含まれる管理操作を判別し、計算機資源（メモリ、ＣＰＵパワー）を与えないことが可能となり、全体としての性能の劣化を防ぐことが可能となる。
【００９２】
また、デッドロックの判定をマネージャ側で行うことが可能となるため、通信のオーバーヘッドによるコマンドレスポンスの劣化を防ぐことが可能となる。
【００９３】
さらに、デッドロック検出部が、インスタンス単位のロックだけを行っているトランザクションしか存在しない場合は該インスタンス単位のロックの発生直後にデッドロック検出処理を内部起動させ、クラス単位のロックが発生した場合には該冗長なインスタンスロックの解除まで該デッドロック検出処理を内部起動させないようにし、該デッドロックを検出したとき該ロールバック指示部を介して該デッドロックを引き起こすトランザクションのいずれかをロールバックするように構成すれば、管理操作により影響を受ける管理オブジェクトのクラスは定義されているが、インスタンスは管理実体の実装状態の影響を受けて確定する、すなわちエージェントで実際に管理操作が行われないとインスタンスが確定しないと定義されている管理操作に対してもマネージャ側でロックをかけることが可能となり、クラス単位のロックが発生した場合には、エージェント側でのロック対象が確定し、その結果がマネージャ側に反映されるまで、デッドロック検出処理を動作させないことで、冗長なロックによるデッドロックの発生を抑制し、性能の向上を実現することが可能となる。
【図面の簡単な説明】
【図１】本発明に係る並行実行制御方式の実施例（１）を示したブロック図である。
【図２】本発明に係る並行実行制御方式の実施例（２）を示したブロック図である。本発明の実施例-2
【図３】本発明に係る並行実行制御方式の実施例（３）を示したブロック図である。
【図４】本発明に係る並行実行制御方式の実施例（４）におけるマネージャを示したブロック図である。
【図５】本発明に係る並行実行制御方式の実施例（４）におけるエージェントを示したブロック図である。
【図６】本発明に係る並行実行制御方式の実施例（５）におけるマネージャを示したブロック図である。
【図７】本発明に係る並行実行制御方式の実施例（６）におけるマネージャを示したブロック図である。
【図８】本発明に係る並行実行制御方式の実施例（７）におけるマネージャを示したブロック図である。
【図９】従来例を示したブロック図である。
【符号の説明】
ＭＮＧ  マネージャ
ＡＧＴ  エージェント
１１〜１ｎ  マネージメントアプリケーション
２，６  並行実行制御部
２１  インスタンスロック部
２２  操作評価部
２３  クラスロック部
２４  冗長インスタンスロック解放部
２５  トランザクションカウンター部
３１〜３ｍ  操作インタフェース部
３１ａ〜３ｍａ，７１ａ〜７ｍａ  記憶部
４１  クラス単位ロックモニター部
４２  デッドロック検出部
４３  ロールバック指示部
４１０  タイマー
２２０  インスタンスカウンター部
４，５  通信プロトコル
７１〜７ｍ  管理オブジェクト
８１〜８ｍ  被管理実体
図中、同一符号は同一又は相当部分を示す。
【図１】
0003909905.tif 000002
【図２】
0003909905.tif 000003
【図３】
0003909905.tif 000004
【図４】
0003909905.tif 000005
【図５】
0003909905.tif 000006
【図６】
0003909905.tif 000007
【図７】
0003909905.tif 000008
【図８】
0003909905.tif 000009
【図９】
0003909905.tif 000010