(57)【特許請求の範囲】
【請求項１】
複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスするデータ共有管理装置であって、
各プロセスは、アクセスした共有資源に対する任意のプロセスによるロックを検知するロック検知手段と、
同一共有資源をロックする各プロセスをプロセスグループとして管理するとともに、共有資源がロックされ、ロックしているプロセスが自己の所属するプロセスグループの場合、デッドロックを検出する共有資源状態検出手段とを具備することを特徴とするデータ共有管理装置。
【請求項２】
上記請求項１に記載のデータ共有管理装置において、
上記共有資源状態検出手段は、共有資源をロックしているプロセスが自己の所属するプロセスグループでない場合、自プロセスを、共有資源をロックしているプロセスが所属するプロセスグループに追加することを特徴とするデータ共有管理装置。
【請求項３】
上記請求項１または請求項２に記載のデータ共有管理装置において、
上記ロックが、排他ロック又は共有ロックであり、
上記データ共有管理装置が、検知されたロックの種類が排他ロックか共有ロックかを識別するロック種別識別手段を有することを特徴とするデータ共有管理装置。
【請求項４】
上記請求項３に記載のデータ共有管理装置において、
上記共有資源状態検出手段は、共有資源を排他ロックしているプロセスが自己の所属するプロセスグループでない場合、自プロセスの共有資源に対するアクセスを待機状態にすることを特徴とするデータ共有管理装置。
【請求項５】
上記請求項３または請求項４に記載のデータ共有管理装置において、
上記ロック種別識別手段は、検知されたロックが自プロセス以外の共有資源に対する共有ロックであると識別すると、上記共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスとして自プロセス以外のプロセスが指定されている場合、デッドロックを検出することを特徴とするデータ共有管理装置。
【請求項６】
上記請求項５に記載のデータ共有管理装置において、
上記共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスに指定がない場合、自プロセスをモード変更許可プロセスに設定し待機状態にすることを特徴とするデータ共有管理装置。
【請求項７】
上記請求項３〜請求項６のいずれかに記載のデータ共有管理装置において、
上記共有資源状態検出手段は、自プロセスがロックしている共有資源を取得し、全ての共有資源に対して共有ロック中であるとともに、自プロセスのみによる共有ロックであると検出した場合、排他ロックのプロセスの待機状態を解除することを特徴とするデータ共有管理装置。
【請求項８】
複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスするデータ共有管理方法であって、
各プロセスは、アクセスした共有資源に対する任意のプロセスによるロックを検知するロック検知工程と、
同一共有資源をロックする各プロセスをプロセスグループとして管理するとともに、共有資源がロックされ、ロックしているプロセスが自己の所属するプロセスグループの場合、デッドロックを検出する共有資源状態検出工程とを具備することを特徴とするデータ共有管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ共有管理装置およびデータ共有管理方法に関し、特に、単独のプロセスのみが共有資源を利用可能な排他ロック動作と、複数のプロセスが同時に共有資源を利用可能な共有ロック動作とを共有資源のデッドロックを検出しつつ実行するデータ共有管理装置およびデータ共有管理方法に関する。
【０００２】
【従来の技術】
従来のデータ共有管理装置においては、データ共有管理装置を備えるプロセスが共有資源に対してアクセスを行なう場合、共有ロックあるいは排他ロックを掛けるに際し、ロックの失敗時に既に共有資源を共有ロックあるいは排他ロックしているプロセスの獲得している共有資源と、自プロセスが使用を待機している共有資源からデッドロックを検出していた。一方、他の従来のデータ共有管理装置は、事前に利用する共有資源のすべてに対して予約ロックをかけていた。
また、同様なデータ共有管理装置として、特開平１−１２０６３６号公報に開示されているものが知られている。
【０００３】
【発明が解決しようとする課題】
上述した従来のデータ共有管理装置においては、次のような課題があった。
前者の方式における問題点は、ロックした共有資源の突き合わせを評価する場合に、共有しあうプロセスの数の増加に伴い処理時間が増加するという課題があった。後者のデータ共有管理装置は、利用者が事前に利用する共有資源のすべてに対して予約する必要があり処理構成を煩雑にしてしまうという課題があった。
【０００４】
また、特開平１−１２０６３６号公報に開示されているものについては、デッドロックの検出，デッドロック事前検出およびデッドロック解除制御にプロセスグループ管理およびプロセス待ち管理を行なわないため、プロセスの待機処理を実施することができなかった。
【０００５】
本発明は、上記課題にかんがみてなされたもので、排他ロックあるいは共有ロックの動作に失敗した場合であっても、ロックしている共有資源を走査することなくデッドロックの発生を検出することが可能なデータ共有管理装置およびデータ共有管理方法の提供を目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスするデータ共有管理装置であって、各プロセスは、アクセスした共有資源に対する任意のプロセスによるロックを検知するロック検知手段と、同一共有資源をロックする各プロセスをプロセスグループとして管理するとともに、共有資源がロックされ、ロックしているプロセスが自己の所属するプロセスグループの場合、デッドロックを検出する共有資源状態検出手段とを具備する構成としてある。
【０００７】
上記のように構成した請求項１にかかる発明において、データ共有管理装置は複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスするものであって、アクセスするにあたり、共有資源に対してロックをする。このように複数のプロセスが同時に動作する環境で、共有資源を利用する場合、デッドロックが発生することがある。
【０００８】
そこで、各プロセスは、ロック検知手段でアクセスした共有資源に対する任意のプロセスによるロックを検知する。
ここで、共有資源がロックされ、ロックしているプロセスが自己の所属するプロセスグループの場合、共有資源状態検出手段ではデッドロックを検出する。
【０００９】
すなわち、共有資源状態検出手段でプロセスグループを管理し、共有資源をロックしているプロセスがプロセスグループに所属するか否かによりデッドロックを検出する。
【００１０】
デッドロックの状態ではない場合で、他のプロセスにて共有資源に対してロックが掛けられているときの好適な処理手法として、請求項２にかかる発明は、請求項１に記載のデータ共有管理装置において、上記共有資源状態検出手段は、共有資源をロックしているプロセスが自己の所属するプロセスグループでない場合、自プロセスを、共有資源をロックしているプロセスが所属するプロセスグループに追加する構成としてある。
さらに、請求項３にかかる発明は、請求項１または請求項２に記載のデータ共有管理装置において、上記ロックが、排他ロック又は共有ロックであり、上記データ共有管理装置が、検知されたロックの種類が排他ロックか共有ロックかを識別するロック種別識別手段を有する構成としてある。
排他ロックとは共有資源にデータを書き込む場合などであって、各プロセス間にてデータの整合性をとる必要がある場合に利用される。例えば、各プロセスが共有資源に対してデータを書き込む場合、まず、共有資源に排他ロックを掛けて、他のプロセスからの共有資源に対するアクセスを禁止し、データを書き込むと排他ロックを解除し、他のプロセスが共有資源にアクセス可能にする。
一方、共有ロックとは、各プロセスから同時に共有資源に対してアクセス可能な状態を示し、特にデータの整合性に問題の生じない読み出し処理において使用される。
【００１１】
デッドロックの状態ではない場合で、他のプロセスにて共有資源に対して排他ロックが掛けられているときの好適な処理手法として、請求項４にかかる発明は、請求項３に記載のデータ共有管理装置において、上記共有資源状態検出手段は、共有資源を排他ロックしているプロセスが自己の所属するプロセスグループのプロセスでない場合、自プロセスの共有資源に対するアクセスを待機状態にする構成としてある。
【００１２】
上記のように構成した請求項４にかかる発明において、共有資源状態検出手段は、共有資源を排他ロックしているプロセスが自己の所属するプロセスグループのプロセスでない場合、自プロセスの当該共有資源に対するアクセスを待機状態にする。待機状態にすることにより、排他ロック中のプロセスによって排他ロックが解除されると、すぐに自プロセスにより共有資源を排他ロックすることが可能になる。
【００１３】
さらに、請求項５にかかる発明は、請求項３または請求項４のいずれかに記載のデータ共有管理装置において、上記ロック種別識別手段は、検知されたロックが自プロセス以外の共有資源に対する共有ロックであると識別すると、上記共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスとして自プロセス以外のプロセスが指定されている場合、デッドロックを検出する構成としてある。
【００１４】
上記のように構成した請求項５にかかる発明においては、ロック検知手段が共有資源に対するロックを検知した場合であって、ロック種別識別手段が検知されたロックが自プロセス以外の共有資源に対する共有ロックであると識別すると、共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスとして自プロセス以外のプロセスが指定されている場合、デッドロックを検出する。
【００１５】
さらに、請求項６にかかる発明は、請求項５に記載のデータ共有管理装置において、上記共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスに指定がない場合、自プロセスをモード変更許可プロセスに設定し待機状態にする構成としてある。
【００１６】
上記のように構成した請求項６にかかる発明において、共有資源状態検出手段は、自プロセスの所属するプロセスグループのモード変更許可プロセスに指定がない場合、自プロセスをモード変更許可プロセスに設定する。これにより、自プロセスは共有資源に対して待機状態になる。
【００１７】
さらに、請求項７にかかる発明は、請求項３〜請求項６のいずれかに記載のデータ共有管理装置において、上記共有資源状態検出手段は、自プロセスがロックしている共有資源を取得し、全ての共有資源に対して共有ロック中であるとともに、自プロセスのみによる共有ロックであると検出した場合、排他ロックのプロセスの待機状態を解除する構成としてある。
【００１８】
上記のように構成した請求項７にかかる発明において、共有資源状態検出手段は、自プロセスのロックしている共有資源を取得し、全ての共有資源に対して、共有ロック中である場合であって、自プロセスのみによるロックであると検出すると、排他ロックのプロセスの待機状態を解除する。
【００１９】
このように、複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスする手法は必ずしも実体のある装置に限られる必要はなく、その方法としても機能することは容易に理解できる。このため、請求項８にかかる発明は、複数のプロセスが動作するとともに、各プロセスが共有資源のページを利用するに際して、この共有資源にアクセスするデータ共有管理方法であって、各プロセスは、アクセスした共有資源に対する任意のプロセスによるロックを検知するロック検知工程と、同一共有資源をロックする各プロセスをプロセスグループとして管理するとともに、共有資源がロックされ、ロックしているプロセスが自己の所属するプロセスグループの場合、デッドロックを検出する共有資源状態検出工程とを具備する構成としてある。
すなわち、必ずしも実体のある装置に限らず、その方法としても有効であることに相違はない。
【００２０】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図１は、本発明の一実施形態にかかるデータ共有管理プログラムの構成をブロック図により示している。
同図において、データ共有管理プログラムＡは、コンピュータ上で動作する各プロセスがそれぞれ有するものであり、ページ状態管理モジュール１００と、ロックプロセス管理モジュール１１０と、プロセスグループ管理モジュール１２０と、プロセス間状態管理モジュール１３０とから構成されている。
【００２１】
そして、各プロセスは、コンピュータにて動作する基本プログラム上にて動作するものであり、コンピュータ上の共有資源である、メモリ上に展開された所定の分割領域である共有メモリや、ハードディスクに格納されるファイル等の共有資源に対して、相互にアクセス可能になっている。
【００２２】
本実施形態においては、上述した共有メモリ，ファイル等の共有資源として「ページ」という概念を使用し、各プロセスＰが「ページ」に対して排他ロックや共有ロックを掛けて、所定のデータ処理を実行する場合について観念する。
【００２３】
ここで、排他ロックは「ページ」にデータを書き込む場合などであって、各プロセス間にてデータの整合性をとる必要がある場合に利用される。例えば、各プロセスはページＰに対して「Ａ」というデータを書き込む場合、まず、ページＰに排他ロックを掛けて、他のプロセスからのページＰに対するアクセスを禁止し、データ「Ａ」を書き込み、書き込みが完了すると、排他ロックを解除し、他のプロセスがページＰにアクセス可能にする。
一方、共有ロックとは、各プロセスから同時にページＰに対してアクセス可能な状態を示し、特に、データの整合性に問題の生じない読み出し処理において使用される。
【００２４】
ここで、図２に示すようにページ状態管理モジュール１００は、ロック判定モジュール１０１と、ロック種別判定モジュール１０２とを有する。ロック判定モジュール１０１は、アクセスの対象となる共有資源のページがロックされていないか検出する。そして、ロック種別判定モジュール１０２は、ロック判定モジュールがページに対するロックを検出すると、このロックの種類を識別する。すなわち、ロックが排他ロックであるか共有ロックであるかを識別する。
【００２５】
ロックプロセス管理モジュール１１０は図３に示すように、ロックプロセス判定モジュール１１１と、待機プロセス判定モジュール１１２とを備える。
ロックプロセス判定モジュール１１１は、ページをロックしているプロセスおよびその数を記憶する処理を実行する。また、待機プロセス判定モジュール１１２は、ページに対するロックに失敗して待機状態にあるプロセスを記憶する処理を実行する。
【００２６】
プロセスグループ管理モジュール１２０は、共有資源のページをロックしているプロセスグループに所属するプロセスを記憶する処理を実行する。そして、プロセス間待機管理モジュール１３０は、待機プロセスリストを参照し、共有資源の使用を待機させているプロセスを記憶する処理を実行する。
【００２７】
次に、図４、図５、図６および図７のフローチャートを参照して各モジュール１００〜１３０の動作について詳細に説明する。
まず、図４を参照して本実施例の第一の動作である共有ロック実行時の動作について説明する。
同図において、プロセスのページ状態管理モジュール１００は、ロック判定モジュール１０１によりアクセス対象となる共有資源のページＰに対する排他ロックあるいは共有ロックのいずれかのロックを検出すると、ロック種別判定モジュール１０２により、このページＰに対するロックが排他ロックであるか共有ロックであるかを識別する。ここで、ページＰに対して排他ロックが掛けられていると識別した場合（ステップＡ１）、プロセスのロックプロセス管理モジュール１１０は、ロックプロセス判定モジュール１１１により、この排他ロックを掛けているプロセスグループを取得する。
【００２８】
ロックプロセス管理モジュール１１０は、取得したプロセスグループと、自プロセスのプロセス番号とが同一であるかを判定する。そして、同一である場合であって（ステップＡ２）、ページＰを排他ロックしているプロセスグループが自己の待機プロセスリストに入っている場合（ステップＡ３）には、デッドロックと判定する（ステップＡ４）。
【００２９】
一方、自己の待機プロセスリストに入っていない場合には、自プロセスをページＰを排他ロックしている自己の待機プロセスリストに加える（ステップＡ７）。また、プロセスグループとプロセス番号が異なる場合には、自プロセスをプロセスのプロセスグループに加えるとともに（ステップＡ６）、更に、自プロセスをページＰを排他ロックしているプロセスの待機プロセスリストに加える。
【００３０】
ページＰに対して、既に、共有ロックが掛けられている場合（ステップＡ８）、待機プロセス判定モジュール１１２により、ページＰを待機しているプロセスを取得する。ここで、待機しているプロセスのプロセスグループと、自プロセスのプロセス番号が同じ場合であって（ステップＡ９）、ページＰを待機しているプロセスの待機プロセスリストに自プロセス番号が入っている場合（ステップＡ１０）には、デッドロックと判定する（ステップＡ１１）。
【００３１】
一方、ページＰを待機しているプロセスの待機プロセスリストに自プロセス番号が入っていない場合には、ページＰを待機しているプロセスを自プロセスの待機プロセスリストに加える(ステップＡ１２)。
また、待機しているプロセスのプロセスグループと、自プロセスのプロセス番号と異なる場合には、自プロセスをプロセスのプロセスグループに加え(ステップＡ１３)、更に、ページＰを待機しているプロセスを自プロセスの待機プロセスリストに加える(ステップＡ１２)。
【００３２】
次に、図５を参照して本実施例の第二の動作である排他ロック実行時の動作について説明する。
同図において、ロック判定モジュール１０１によりページＰのロックを検出すると、（ステップＡ１）、ロックプロセス判定モジュール１１１により、既にページＰに対してロックを掛けているプロセスを取得する。そして、取得したプロセスのプロセスグループと、自プロセスのプロセス番号とを比較し、同じである場合であって（ステップＡ２）、ページＰをロックしているプロセスが自プロセスの待機プロセスリストに入っている場合（ステップＡ３）には、デッドロックと判定する（ステップＡ４）。
【００３３】
待機プロセスリストに入っていない場合には、自プロセスをページＰをロックしているプロセスの待機プロセスリストに加える（ステップＡ５）。
さらに、プロセスグループと、プロセス番号が異なる場合には、自プロセスを該当プロセスのプロセスグループに加えるとともに（ステップＡ６）、更に、自プロセスをページＰをロックしているプロセスの待機プロセスリストに加える。
【００３４】
次に、図６を参照して本実施例の第三の動作である共有ロックから排他ロックへのロック状態切り替え実行時の動作について説明する。
同図において、ロックプロセス判定モジュール１１１により自プロセス以外による共有ロックを検出すると（ステップＡ１）、自プロセスの属するプロセスグループにモード変更許可プロセスとして自プロセス以外のプロセスが指定されている場合（ステップＡ２）、デッドロックと判定する（ステップＡ３）。
一方、何も指定されていなければ、自プロセスをモード変更許可プロセスに設定して待機状態にする（ステップＡ４）。また、他にロックしているプロセスが存在しなければ排他ロックとロック状態を切り替える（ステップＡ５）。
【００３５】
図７を参照して本実施例の第四の動作であるロック解除実行時の動作について説明する。
同図において、ロックプロセス判定モジュール１１１により自プロセスがロックしているページＰを取得する（ステップＡ１）。ここで、全てのページＰにおいて共有ロック中である場合（ステップＡ２）、ロックプロセス判定モジュール１１１は、ページＰに対するロックが自プロセスのみによるロックであると検出すると（ステップＡ３）、ページＰに対して排他ロックを待機しているプロセスの待機を解除する（ステップＡ４）。
【００３６】
他にロックしているプロセスが一つであるとともに、そのプロセスがモード変更許可プロセスである場合（ステップＡ５）、そのプロセスを排他ロックに切り替える（ステップＡ６）。一方、ページＰが排他ロック中である場合、ロック待機状態にあるプロセスの待機状態を解除する（ステップＡ７）。ここで、解除したプロセスが共有ロックでの待機状態であるならば（ステップＡ８）、他のプロセスであって、共有ロックの待機状態であるプロセス全ての待機状態を解除する（ステップＡ９）。その後、自プロセスの待機プロセスリストをクリアしてプロセスグループを採番し直す（ステップＡ１０）。
【００３７】
このように、プロセス管理モジュール１２０においてアクセス対象の共有資源であるページＰをロックする各プロセスをプロセスグループとして管理するとともに、各プロセスの共有資源における待機状態を管理することにより、アクセスする事前にデッドロックを検出するための情報を収集することができるとともに、排他ロックあるいは共有ロックに失敗したときに排他ロックしているページを走査することなくデッドロックの発生を検出することが可能になる。
【００３８】
【発明の効果】
以上説明したように本発明は、プロセス管理装置において共有資源をロックする各プロセスをプロセスグループとして管理するとともに、各プロセスの共有資源における待機状態を管理することにより、アクセスする事前にデッドロックを検出するための情報を収集する。そして、排他ロックあるいは共有ロックに失敗したときに排他ロックされている共有資源を走査することなくデッドロックの発生を検出することが可能なデータ共有管理装置を提供することができる。
また、請求項２にかかる発明によれば、アクセスした共有資源がデッドロックではない場合、待機状態にすることにより、他のプロセスによる排他ロックが解除されると、すぐに排他ロックを掛けることが可能になる。
さらに、請求項３にかかる発明によれば、モード変更許可プロセスの指定の態様によりデッドロックを検出することが可能になる。
【００３９】
さらに、請求項４にかかる発明によれば、モード変更許可プロセスの指定の態様により待機状態にすることが可能になる。
さらに、請求項５にかかる発明によれば、排他ロックを待機しているプロセスの待機状態を解除することが可能になる。
さらに、請求項６にかかる発明によれば、プロセス管理装置において共有資源をロックする各プロセスをプロセスグループとして管理するとともに、各プロセスの共有資源における待機状態を管理することにより、アクセスする事前にデッドロックを検出するための情報を収集する。そして、排他ロックあるいは共有ロックに失敗したときに排他ロックされている共有資源を走査することなくデッドロックの発生を検出することが可能なデータ共有管理方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかる各プロセスが備えるデータ共有管理モジュールのブロック図である。
【図２】ページ状態管理モジュールの構成を示したブロック図である。
【図３】ロックプロセス管理モジュールの構成を示したブロック図である。
【図４】本実施例の第一の動作である共有ロック実行時の動作を示したフローチャートである。
【図５】本実施例の第二の動作である排他ロック実行時の動作を示したフローチャートである。
【図６】本実施例の第三の動作である共有ロックから排他ロックへのロック状態切り替え実行時の動作を示したフローチャートである。
【図７】本実施例の第四の動作であるロック解除実行時の動作を示したフローチャートである。
【符号の説明】
１００  ロック状態管理モジュール
１１０  ロックプロセス管理モジュール
１２０  プロセスグループ管理モジュール
１３０  プロセス間管理モジュール
【図１】
0003603671.tif 000002
【図２】
0003603671.tif 000003
【図３】
0003603671.tif 000004
【図４】
0003603671.tif 000005
【図５】
0003603671.tif 000006
【図６】
0003603671.tif 000007
【図７】
0003603671.tif 000008