(57)【要約】デッドロックの場合に保持されるリソースを解放するか、または、潜在的なデッドロックが検出される際にリソースを求める要求を延期するための機構およびシステムが記載される。１つの技術は、候補を選択するための３つのパスのアルゴリズムを含み、ここでは所有エンティティまたはリソースである候補が用いられる。３つのパスは以下のとおりである。（１）セットされたＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有する候補のサブセットを決定する。（２）パス１により、その中に２つ以上の候補を備えたサブセットがもたらされる場合、そのサブセットを処理して、リソースの種類に関連付けられるリソースプライオリティに基づいて第２の候補のサブセットを決定する。（３）第２のパスにより、その中に２つ以上の候補を備えたサブセットがもたらされる場合、そのサブセットを処理して、実行していたかまたは保持されていた時間が最も短い候補を選択する。
2005502941.tif 000002
【特許請求の範囲】
【請求項１】
デッドロックの解決中に用いられるべき犠牲を選択するための方法であって、
前記デッドロックに関わる複数の候補を、前記犠牲となるべき候補として最初に設定するステップと、
単一の候補が前記犠牲となるべき候補として残るまで、１つ以上のファクタに基づき前記複数の候補をフィルタするステップと、
前記デッドロックの解決中に用いるべき犠牲として前記単一の候補を選択するステップとを含む、方法。
【請求項２】
フィルタするステップは、前記複数の候補から、候補が犠牲であり得ないことを示すＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するいずれの候補をも取除くステップをさらに含む、請求項１に記載の方法。
【請求項３】
フィルタするステップは、前記複数の候補から、他の候補のうち少なくとも１つの候補のリソースプライオリティよりもリソースプライオリティが高い候補を取除くステップをさらに含む、請求項１に記載の方法。
【請求項４】
フィルタするステップは、前記複数の候補から、他の候補に関連付けられる所有エンティティが実行していた時間よりも比較的長い時間実行していた所有エンティティに関連付けられるすべての候補を取除くステップをさらに含む、請求項１に記載の方法。
【請求項５】
フィルタするステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第１のファクタに基づき、第１のパスにおいて複数の候補からいくつかの候補を取除くステップを含み、残された候補は第１の候補のサブセットであり、前記ステップはさらに、
第１のファクタとは異なる第２のファクタに基づき、第２のパスにおいて第１の候補のサブセットからいくつかの候補を取除くステップを含む、請求項１に記載の方法。
【請求項６】
前記第２のパスの後に残された候補は第２の候補のサブセットであり、第２のファクタに基づく第２のパスは、２つ以上の候補が第１の候補のサブセットにある第１のパスを実行した後にのみ実行される、請求項５に記載の方法。
【請求項７】
２つ以上の候補が第２の候補のサブセットにある第１および第２のパスを実行した後にのみ、第３のファクタに基づいて第３のパスを実行する、コンピュータによって実現されるステップをさらに含み、第３のファクタは第１のファクタおよび第２のファクタとは異なる、請求項６に記載の方法。
【請求項８】
フィルタするためのステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第１のパスを実行して、終了のための候補ではないことを示すＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するいずれの候補をもフィルタして除くステップと、
第１のパスを実行した後に２つ以上の候補が残される場合、第２のパスを実行して、他の候補のうち少なくとも１つの候補のリソースプライオリティよりもリソースプライオリティが高いいずれの候補をもフィルタするステップと、
第２のパスを実行した後に２つ以上の候補が残される場合、第３のパスを実行して、実行していた時間が最も短い候補以外のすべての候補をフィルタして除くステップとを含む、請求項１に記載の方法。
【請求項９】
フィルタするステップは、前記候補のために設定されるプライオリティに基づきフィルタするステップを含む、請求項１に記載の方法。
【請求項１０】
所与の候補のプライオリティの少なくとも一部分は動的に設定される、請求項９に記載の方法。
【請求項１１】
前記部分は、前記候補以外のリソースのいずれが、所与の候補に関連付けられる所有エンティティによって保持されるかに基づいて設定される、請求項１０に記載の方法。
【請求項１２】
所与の候補のプライオリティの少なくとも一部分は静的に設定される、請求項９に記載の方法。
【請求項１３】
前記部分は、所与の候補の種類に基づいて設定される、請求項１２に記載の方法。
【請求項１４】
デッドロックの解決中に用いるべき犠牲を選択するための命令を実行するコンピュータ読出可能な媒体であって、
前記犠牲となるべき候補として前記デッドロックに関わる複数の候補を最初に設定するステップと、
単一の候補が前記犠牲となるべき候補として残るまで１つ以上のファクタに基づき前記複数の候補をフィルタするステップと、
前記デッドロックの解決中に用いるべき犠牲として前記単一の候補を選択するステップとを実行するための命令を伝える、コンピュータ読出可能媒体。
【請求項１５】
フィルタするステップは、前記複数の候補から、候補が犠牲であり得ないことを示すＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するいずれの候補をも取除くステップをさらに含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項１６】
フィルタするステップは、前記複数の候補から、他の候補のうち少なくとも１つの候補のリソースプライオリティよりもリソースプライオリティが高い候補を取除くステップをさらに含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項１７】
フィルタするステップは、前記複数の候補から、他の候補に関連付けられる所有エンティティが実行していた時間よりも比較的長い時間実行していた所有エンティティに関連付けられるすべての候補を取除くステップをさらに含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項１８】
フィルタするステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第１のファクタに基づき、第１のパスにおいて複数の候補からいくつかの候補を取除くステップを含み、残された候補は第１の候補のサブセットであり、前記ステップはさらに、
第１のファクタとは異なる第２のファクタに基づき、第２のパスにおいて第１の候補のサブセットからいくつかの候補を取除くステップを含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項１９】
前記第２のパスの後に残された候補は第２の候補のサブセットであり、第２のファクタに基づく第２のパスは、第１の候補のサブセットに２つ以上の候補がある第１のパスを実行した後にのみ実行される、請求項１８に記載のコンピュータ読出可能媒体。
【請求項２０】
第２の候補のサブセットに２つ以上の候補がある第１および第２のパスを実行した後に
のみ、第３のファクタに基づいて第３のパスを実行する、コンピュータによって実現されるステップのための命令をさらに含み、第３のファクタは第１のファクタおよび第２のファクタとは異なる、請求項１９に記載のコンピュータ読出可能媒体。
【請求項２１】
フィルタするためのステップはコンピュータによって実現されるステップをさらに含み、前記ステップは、
第１のパスを実行して、終了のための候補ではないことを示すＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するいずれの候補をもフィルタして除くステップと、
第１のパスを実行した後に２つ以上の候補が残される場合、第２のパスを実行して、他の候補のうち少なくとも１つの候補のリソースプライオリティよりもリソースプライオリティが高いいずれの候補をもフィルタするステップと、
第２のパスを実行した後に２つ以上の候補が残される場合、第３のパスを実行して、実行していた時間が最も短い候補以外のすべての候補をフィルタして除くステップとを含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項２２】
フィルタするステップは、前記候補のために設定されるプライオリティに基づいてフィルタするステップを含む、請求項１４に記載のコンピュータ読出可能媒体。
【請求項２３】
所与の候補のプライオリティのうち少なくとも一部分は動的に設定される、請求項２２に記載のコンピュータ読出可能媒体。
【請求項２４】
前記部分は、前記候補以外のリソースのいずれが、所与の候補に関連付けられる所有エンティティによって保持されるかに基づいて設定される、請求項２３に記載のコンピュータ読出可能媒体。
【請求項２５】
所与の候補のプライオリティのうち少なくとも一部分は静的に設定される、請求項２２に記載のコンピュータ読出可能媒体。
【請求項２６】
前記部分は所与の候補の種類に基づき設定される、請求項２５に記載のコンピュータ読出可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、分散型コンピュータシステムに関し、特に、デッドロックまたは潜在的なデッドロックが検出される際の犠牲（victim）選択に関する。
【背景技術】
【０００２】
発明の背景
演算処理における長期間にわたる課題のうちの１つに、デッドロックへの対処がある。デッドロックは、エンティティのセットが存在し、このためそのセットにおける各エンティティがそのセットにおける別のエンティティによって所有される少なくとも１つのリソースの解放を待っている場合に発生する。リソースを所有することのできるエンティティは、この明細書中では所有エンティティと称される。データベースシステムの文脈では、たとえば、エンティティは、中でもプロセスおよびトランザクションを含む。トランザクションはアトミック単位の作業である。
【０００３】
たとえば、トランザクションＴ１は、リソースＲ１およびＲ２の排他的な所有権を要求し得る。Ｒ１が利用可能であり、Ｒ２が別のトランザクションＴ２によって現在排他的に所有される場合、トランザクションＴ１はＲ１の排他的な所有権を獲得し得るが、Ｒ２が利用可能となるのを待たなくてはならない。トランザクションＴ２がＲ１の所有権を要求し、かつＴ２がＲ２を解放せずにＲ１を待つために中断される場合にデッドロックが発生する。Ｔ１およびＴ２はともに互いを待つのでデッドロックされる。
【０００４】
コンピュータシステムは、デッドロックを検出する種々のデッドロック処理機構（デッドロックハンドラ）を用いる。デッドロックを解決するプロセスは、第１に、デッドロックがあるかどうかを判定し、第２に、デッドロックを如何に解決するかを決定するステップを含む。デッドロックに対処するためのいくつかの技術は、待ちグラフ技術およびタイムアウト技術を含む。
【０００５】
待ちグラフ技術は「サイクル」に基づきデッドロックを検出する。特に、プロセスがリソースを要求した後、またはしきい値時間を超えてリソースを待った後、待ちグラフ技術が生成され得、サイクルがないか検査され得る。サイクルが識別される場合、デッドロック検出機構は潜在的なデッドロックを検出している。次いで、デッドロックサイクルの一部であるリソースが、デッドロックを解決するのに用いるために選択される。こうして、選択されたリソースはこの明細書中では「犠牲リソース」と称される。というのも、リソースを所有するかまたはリソースを要求しているエンティティが、典型的には、デッドロックを解決するための措置を講じる際に性能の低下を招くことになるからである。同様に、犠牲リソースを所有するかまたは犠牲リソースを要求しているエンティティは、この明細書中では「犠牲エンティティ」と称される。「犠牲」という用語は、この明細書中では、犠牲リソースまたは犠牲エンティティを称するのに用いられる。
【０００６】
典型的には、犠牲リソースはサイクル内におけるリソースであり、このリソースはエンティティによって保持され、このエンティティの要求によってデッドロックがもたらされる。デッドロックを解決するために犠牲リソースに対するロックを解放する１つの方法がある。犠牲リソースに対するロックはさまざまな方法で解放され得る。たとえば、犠牲エンティティがトランザクションである場合、リソースを求め、デッドロック状態をもたらした要求のキャンセルをロールバックと組合わせることにより、トランザクションによって保持されるリソースが解放される。次いで、トランザクションは、リソースを再度獲得しようと試み、ロールバックされたステップを再実行しようと試み得る。ステップのこの再実行は、自動的に行なわれ得るか、またはカスタマ入力に基づいて開始され得る。
【０００７】
待ちグラフは、どんなエンティティがリソースを有し、かつどんなエンティティがリソースを待っているかを示すグラフである。図においては、「待機中（ＷＡＩＴＩＮＧ）」という用語は、エンティティがリソースを待っている「待ち状態」にあり、したがってエントリが「実行中（ＲＵＮＮＩＮＧ）」ではないことを示す。待ちグラフの例が図１ａおよび図１ｂに示される。図１ａは以下のシナリオを示す。
【０００８】
１）  エンティティ１１０はリソースＲ１を有する。
【０００９】
２）  エンティティ１２０はリソースＲ２を有し、リソースＲ１を必要とする。このため、エンティティ１２０はエンティティ１１０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１１０がリソースＲ１を使用し終えるのを待つ。
【００１０】
３）  エンティティ１３０はリソースＲ３を有し、リソースＲ２を必要とする。このため、エンティティ１３０はエンティティ１２０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１２０がリソースＲ２を使用し終えるのを待つ。
【００１１】
４）  エンティティ１４０はリソースＲ４を有し、リソースＲ３を必要とする。このため、エンティティ１４０はエンティティ１３０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１３０がリソースＲ３を使用し終えるのを待つ。
【００１２】
５）  エンティティ１５０はリソースＲ５を有し、リソースＲ４を必要とする。このため、エンティティ１５０はエンティティ１４０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１４０がリソースＲ４を使用し終えるのを待つ。
【００１３】
６）  エンティティ１６０はリソースを持たないが、リソースＲ５を必要とする。エンティティ１５０が既にリソースＲ５を有するので、エンティティ１６０はエンティティ１５０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１５０がリソースＲ５を使用し終えるのを待つ。
【００１４】
７）  エンティティ１１０もリソースＲ５を必要とする。エンティティ１６０は既にリソースＲ５を待っている。このため、エンティティ１１０はエンティティ１６０の後ろで待ち行列に入り、待ち状態に入り、エンティティ１６０がＲ５を使用し終えるのを待つ。
【００１５】
ノードをリソースとし、矢印を所有エンティティとすることにより待ちグラフを示す別の方法がある。図１ｂは、Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７およびＲ８がリソースであり、矢印Ｅ１、Ｅ２、Ｅ３、Ｅ４、Ｅ５、Ｅ６、Ｅ７およびＥ８が所有エンティティであるようなグラフを示す。矢印は、所有エンティティが保持しているリソースから指している。矢印は、所有エンティティが要求しているリソースを指している。したがって、図１ｂにおいては以下のとおりである。
【００１６】
１）  エンティティＥ１はＲ１を保持し、Ｒ２を要求している。
【００１７】
２）  エンティティＥ２はＲ２を保持し、Ｒ３を要求している。
【００１８】
３）  エンティティＥ３はＲ３を保持し、Ｒ４を要求している。
【００１９】
４）  エンティティＥ４はＲ４を保持し、Ｒ１およびＲ５を要求している。
【００２０】
５）  エンティティＥ５はＲ５を保持し、Ｒ６を要求している。
【００２１】
６）  エンティティＥ６はＲ６を保持し、Ｒ７を要求している。
【００２２】
７）  エンティティＥ７はＲ７を保持し、Ｒ８を要求している。
【００２３】
８）  エンティティＥ８はＲ８を保持し、Ｒ１を要求している。
【００２４】
デッドロック状況は、図１ａおよび図１ｂにおけるエンティティおよびリソースのサイクルによって示される。図１ａおよび図１ｂにおけるすべてのエンティティがリソースを待ち、これらのエンティティがいずれもリソースを放棄していないので、別のエンティティが続き得る。サイクルを中断するために何かを行なわなければならない。図１ａでは、エンティティ１１０はリソースを要求する最後のエンティティであり、この要求によりサイクルがもたらされたので、エンティティ１１０が保持しているリソースが解放されるよう任意に選択されることとなる。問題は、エンティティ１１０が保持しているリソースが解放されるのに良い候補でないかもしれないことである。
【発明の開示】
【発明が解決しようとする課題】
【００２５】
タイムアウト技術のもとでは、所有エンティティは、リソースの所有権を獲得するためにしきい値時間だけ待つと、デッドロックに関わることになるものと推定される。このタイムアウト技術はデッドロックの検出についてはあまり正確ではない。というのも、リソースの所有権を得る際の遅延が、デッドロック以外の多くの原因に起因する可能性があるからである。
【００２６】
残念なことに、（１）デッドロックサイクルに関わる最も最近要求されたリソース、または（２）「タイムアウトになった」エンティティによって要求されるリソースとなるべきリソース犠牲を選択することにより、著しいオーバーヘッドがもたらされる可能性がある。たとえば、いずれの場合も、犠牲エンティティは、ほとんど完了している、長時間にわたるトランザクションであり得る。犠牲エンティティがトランザクションである場合、全トランザクションを再実行する必要がある。このようなエンティティを終了させることは、最小限のオーバーヘッドを用いて他の何らかの態様でデッドロックを中断し得る場合、特に無駄が多い。
【００２７】
上述に基づき、検出されたデッドロックを中断するより効率的な方法を提供することが望ましい。
【課題を解決するための手段】
【００２８】
発明の概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが記載される。一実施例に従って、選択プロセスが、以下のとおり３つのパスで実行される。
【００２９】
１）  パス１の間に、デッドロックに関与する候補のセットから、候補が犠牲として選択され得ることを示す値にセットされるＣＡＮ−ＢＥ−ＶＩＣＴＩＭ（犠牲であり得る）フラグを有する候補のサブセットを決定する。
【００３０】
２）  パス１により、中に２つ以上の候補を有するサブセットがもたらされる場合、パス２の間に、そのサブセットを処理して、リソースタイプに関連付けられるリソースプライオリティに基づき第２の候補のサブセットを決定する。
【００３１】
３）  第２のパスにより、中に２つ以上の候補を有するサブセットがもたらされる場合、そのサブセットを処理して、実行していたかまたは保持されていた時間が最も短い候補を選択する。
【００３２】
この発明は、添付の図面において、限定のためではなく例示のために示され、同様の参照番号が同様の要素を示す。
【発明を実施するための最良の形態】
【００３３】
好ましい実施例の詳細な説明
デッドロックまたは潜在的なデッドロックの検出に応答して犠牲を選択するための方法および装置が説明される。以下の記載では、説明する目的で、この発明を完全に理解するために多くの特定の詳細が述べられる。しかしながら、これらの特定の詳細なしでこの発明を実施し得ることが当業者には明らかとなるだろう。他の場合では、周知の構造および装置は、この発明を不必要に不明瞭にすることを避けるためにブロック図の形態で示される。
【００３４】
機能的概要
潜在的なデッドロックが検出される際に犠牲を選択するための機構およびシステムが説明される。リソースは、いくつかの理由で、デッドロックの検出に応答して選択される犠牲リソースとなるべきよい候補ではない可能性がある。たとえば、リソースを保持する所有エンティティは、プライオリティの高いプロセスまたはトランザクションであり得、可能な限り早く完了するよう実行する必要がある。このようなエンティティによって保持される、デッドロックの犠牲リソースとなるべきリソースを選択することにより、所有エンティティは許容できない不利益を被ることとなる。同様に、リソースは、リソースを保持する所有エンティティが極めて長時間にわたって実行していた場合、良い犠牲候補とはなり得ない。
【００３５】
これらの問題に対処するために、デッドロックに関わる複数の候補のうちどの候補がデッドロックの解決に用いられる「犠牲」となるべきかを選択するための技術が提供される。この技術は、以下の要因を含み得る１つ以上の要因に基づいて犠牲を選択するステップを含む。
【００３６】
１）  保持されたリソースが解放され得るかまたは要求されたリソースが延期され得るかどうかを示す、各候補に関連付けられた犠牲インジケータの値。
【００３７】
２）  リソースに割当てられたカテゴリおよび／またはプライオリティ。
【００３８】
３）  所有エンティティが実行していたかまたはリソースが保持されていた時間の長さ。
【００３９】
犠牲が選択されると、さまざまな技術を用いてデッドロックを解決することができる。たとえば、１つの技術には、犠牲リソースとするべく選択されたリソースを保持するエンティティをロールバックするステップが含まれる。他の技術には、犠牲リソースを求める要求を失敗させたり、犠牲リソースを求める要求を延期したりするステップが含まれる。さまざまなデッドロック解決技術は、この明細書中に記載される犠牲選択技術とともに用いることができるが、この発明は、犠牲が選択されるとデッドロックを解決するための特定の技術のいずれにも限定されない。
【００４０】
ＣＡＮ−ＢＥ−ＶＩＣＴＩＭ  フラグ
以下に記載される実施例では、犠牲選択動作の第１のパスは、ＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグが「真」または「偽」のどちらにセットされるかに基づく。候補のＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグは、その候補を犠牲として選択できるかどうかを示す値である。このＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグはさまざまな方法でセットされ得る。たとえば、ＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグの値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。さらに、ＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグは、中でもプロセス、トランザクションまたはリソースに関連付けられ得る。ＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグをセットするための方法、およびＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグが関連付けられ得るエンティティの種類のこれらのリストは、網羅的なリストとなるよう意図されるものではない。
【００４１】
リソースプライオリティ
リソースプライオリティを計算するために用いることができるいくつかの技術がある。たとえば、リソースのプライオリティは、アプリケーションの開始時に割当てられる静的数値であり得るか、または、リソースを保持している所有エンティティのリソースの使用および状態に応じてリソースの寿命中に変化する動的数値であり得る。静的プライオリティおよび動的プライオリティをともに用いる実施例では、リソースの動的プライオリティ値をリソースに対する静的プライオリティ値に加えて、複合的なプライオリティを作り得る。
【００４２】
一実施例では、静的プライオリティは、アプリケーションに対するリソースの機能的重要性に基づいてリソースに割当てられる数値として設定される。
【００４３】
保持されたリソースの動的プライオリティは、そのリソースに対する競合の量を計算することにより設定され得る。競合の量は、たとえば、何らかの予め定められた値に最初にセットされ、かつリソースに対するアクセスパターンがしきい値を超えると増加する、変動する値であり得る。同様に、競合の量は、リソースに対するアクセスパターンがしきい値に達しない場合減少することとなる。このしきい値は同じ値かまたは異なる値であってもよい。さらに、いくつかのしきい値があってもよく、各しきい値は、競合値の、増加または減少する異なった量に相互に関連する。
【００４４】
さらに、リソースの動的プライオリティは、その所有エンティティにより既に所有されているかまたは所有される可能性のあるすべてのリソースを調べることによって決定され得る。たとえば、所有エンティティによって保持されるリソースの動的プライオリティは、その所有エンティティによって保持されるすべてのリソースの動的プライオリティの平均をとることにより設定され得る。動的プライオリティを平均して或る動的プライオリティを得るこの方策を用いることにより、プライオリティの高いリソースをいくつか既に所有する所有エンティティに犠牲リソースが属さないことを確実にし得る。
【００４５】
静的プライオリティおよび動的プライオリティを計算するために用いられる入力値は、ユーザにより、インストレーションによってセットされ得るか、またはサービスポリシーに基づいてセットされ得、この場合ユーザおよびインストレーションによってサービスポリシーが取り決められる。これらは、リソースプライオリティを計算するために用いることのできる技術のうちほんのいくつかの例にすぎない。
【００４６】
犠牲を選択するための技術
一実施例に従って、犠牲リソースは、以下のとおり、３つのパスのフィルタリングオペレーションを用いて選択される。
【００４７】
パス１：第１のパスの間に、デッドロックグラフにおいて、セットされたＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するリソースのセットを選択する。このグラフが、セットされたＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを備えるリソースを１つだけ有する場合、このリソースは犠牲であり、そうでない場合パス２に進む。
【００４８】
パス２：第２のパスの間に、パス１から得られたリソースのセットを、プライオリティが同じであるリソースを含むサブセットに分割する。代替的には、パス１からのセットは、プライオリティ範囲によって分割され得る。リソースがプライオリティに従って分割されると、プライオリティの最も低いリソースのサブセットが選択される。プライオリティの最も低いサブセットがリソースを１つだけ有する場合、その単一のリソースは犠牲であり、そうでない場合パス３に進む。
【００４９】
パス２を説明するために、パス１は図１ｂに示されるリソースＲ１〜Ｒ８に対して実行されるものとする。さらに、Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７およびＲ８はすべて、それらの関連するセットされたＣＡＮ−ＢＥ−ＶＩＣＴＩＭフラグを有するものとされる。プライオリティスキーム（すなわち、数値または範囲）に基づき、パス２の間に、パス１の後に残るリソースのセットを分割して以下の３つのセットを作り出す。
【００５０】
Ｓ０＝｛Ｒ１，Ｒ５，Ｒ８｝
Ｓ１＝｛Ｒ２，Ｒ３｝
Ｓ２＝｛Ｒ４，Ｒ６，Ｒ７｝
ここで、Ｓ０＞Ｓ１＞Ｓ２および「＞」は「より高いプライオリティ／プライオリティ範囲」を示す。このシナリオでは、セットＳ２＝｛Ｒ４，Ｒ６ and Ｒ７｝は、パス２の間に選択されることとなる。選択されたセットが２つ以上の候補を含むので、選択プロセスはパス３に進む。
【００５１】
上述のように、リソースのプライオリティは、アプリケーションの開始時にそれに割当てられるいくらか静的な数値であり得、および／または、その所有エンティティの使用および状態に基づき、保持されたリソースの寿命中に変化し続けるいくらか動的な数値であり得る。
【００５２】
パス３：パス３は、パス２の後に残るリソース（すなわち、プライオリティの最も低いセットにおけるリソース）に対して実行される。パス３の間に、セットにおける各リソースの所有エンティティに対する実行時間が決定される。その所有エンティティに対する実行時間が最も短いリソースが犠牲として選択される。
【００５３】
変形例
上述の実施例においては、デッドロック犠牲は、３つのパスを実行することにより選択される。各パスは、異なるファクタに基づいてデッドロック犠牲候補のセットをフィルタする。しかしながら、パスの特定の数、およびこれらのパス中に用いられる特定のファクタは、実現例ごとに異なる可能性がある。たとえば、犠牲候補セットは、リソースプライオリティに基づいてフィルタされる前に、実行時間に基づいてフィルタされてもよい。
【００５４】
同様に、犠牲リソースに対するプライオリティ値を設定するための技術は、実現例によって、ならびに所有エンティティがどのくらい長く実行していたかを判定するのに用いられる技術によっても変わる可能性がある。たとえば、所有エンティティがプロセスである場合、プロセスが実行していた時間は、オペレーションシステムに対して呼出しを行なうことにより判定され得る。一方、所有エンティティがトランザクションである場合、トランザクションの実行時間を得るために用いられる技術は、トランザクションが属するシステムにおいてトランザクションをいかに実現するかによって左右されることとなる。
【００５５】
さらに、所与の異なった重みである複数のファクタを考慮に入れるフィルタリングが、単一のパスにおいて実行され得る。たとえば、１つのパスは、リソースプライオリティおよび実行時間の両方に基づいてフィルタすることができ、プライオリティが比較的高いリソースを有する候補は、その候補よりも他の候補の方が実行時間が極めて長い場合、依然として犠牲として選択され得る。他のファクタは、たとえば、所有エンティティの種類、および所有エンティティに関連付けられるユーザの身元を含み得る。
【００５６】
別の可能な技術では、エンティティがリソースを要求しているがリソースをまだ獲得していない場合に、潜在的なデッドロックにアルゴリズムを適用する。リソースをいかに割当てるかを示す待ちグラフが構成および分析され得る。潜在的なデッドロックが検出される場合、この明細書中に記載される技術を適用して、どのリソースが延期を要求するかを判定し得る。
【００５７】
ハードウェア概要
図２は、この発明の実施例が実現され得るコンピュータシステム２００を示すブロック図である。コンピュータシステム２００は、情報の通信を行なうためのバス２０２または他の通信メカニズムと、情報を処理するための、バス２０２に結合されるプロセッサ２０４とを含む。コンピュータシステム２００はまた、プロセッサ２０４によって実行されるべき情報および命令を記憶するための、バス２０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ２０６を含む。メインメモリ２０６はまた、プロセッサ２０４によって実行されるべき命令の実行中に一時的数値変数または他の中間情報を記憶するために用いられ得る。コンピュータシステム２００はさらに、プロセッサ２０４のための静的情報および命令を記憶するための、バス２０２に結合される読出専用メモリ（ＲＯＭ）２０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置２１０が設けられ、情報および命令を記憶するためにバス２０２に結合される。
【００５８】
コンピュータシステム２００は、コンピュータユーザに情報を表示するための陰極線管（ＣＲＴ）などの表示装置２１２にバス２０２を介して結合され得る。英数字および他のキーを含む入力装置２１４は、バス２０２に結合されて、情報およびコマンド選択をプロセッサ２０４に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ２０４に伝達しかつ表示装置２１２上でのカーソルの動きを制御するための、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御２１６である。この入力装置は、典型的には、２つの軸、すなわち第１の軸（たとえば、ｘ）と第２の軸（たとえば、ｙ）において２自由度を有し、これにより、装置が平面において位置を特定することが可能となる。
【００５９】
この発明は、デッドロックまたは潜在的なデッドロックを解決する良い候補を選択するためのコンピュータシステム２００の用途に関する。このような候補を選択するための命令は、記憶装置２１０などのコンピュータ読出可能媒体からメインメモリ２０６に読込まれ得る。メインメモリ２０６に含まれる命令のシーケンスを実行することにより、プロセッサ２０４がこの明細書中に記載されるプロセスステップを実行する。代替的な実施例においては、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、ハードワイヤード回路を用いてこの発明を実現することができる。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定のいずれの組合せにも限定されない。
【００６０】
この明細書中で用いられる「コンピュータ読出可能媒体」という用語は、実行のためにプロセッサ２０４に命令を与えることにかかわるいずれの媒体をも指す。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むが、これらに限定されない多くの形をとり得る。不揮発性媒体は、たとえば記憶装置２１０などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ２０６などの動的メモリを含む。伝送媒体は、バス２０２を含むワイヤを含んだ、同軸ケーブル、銅ワイヤおよび光ファイバを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形をとり得る。
【００６１】
コンピュータ読出可能媒体の一般的な形は、たとえば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的媒体、ＲＡＭ、ＰＲＯＭおよびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップもしくはカートリッジ、以下に記載される搬送波、またはコンピュータがそこから読出すことのできる他のいずれかの媒体を含む。
【００６２】
さまざまな形のコンピュータ読出可能媒体は、実行のためにプロセッサ２０４に１つ以上の命令の１つ以上のシーケンスを実行することに関与し得る。たとえば、命令は、最初に、リモートコンピュータの磁気ディスク上で実行され得る。リモートコンピュータは、その動的メモリに命令をロードし、モデムを用いて電話線を介してこれらの命令を送り得る。コンピュータシステム２００にとってローカルなモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が赤外線信号に搬送されたデータを受信し得、適切な回路がバス２０２上にデータを置き得る。バス２０２はデータをメインメモリ２０６に搬送し、そこからプロセッサ２０４が命令を取出し、実行する。メインメモリ２０６が受取る命令は、随意には、プロセッサ２０４による実行の前または後に、記憶装置２１０に記憶され得る。
【００６３】
コンピュータシステム２００はまた、バス２０２に結合される通信インターフェイス２１８を含む。通信インターフェイス２１８は、ローカルネットワーク２２２に接続されるネットワークリンク２２０につながる双方向データ通信を提供する。たとえば、通信インターフェイス２１８は、統合サービスデジタル通信網（ＩＳＤＮ）カードまたはモデムであって、データ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス２１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、データ通信接続を適合したＬＡＮに提供し得る。ワイヤレスリンクも実現され得る。このようないずれの実現例においても、通信インターフェイス２１８は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【００６４】
ネットワークリンク２２０は、典型的には、１つ以上のネットワークを介して他のデータサービスにデータ通信を提供する。たとえば、ネットワークリンク２２０は、ローカルネットワーク２２２を介してホストコンピュータ２２４、またはインターネットサービスプロバイダ（ＩＳＰ）２２６によって動作されるデータ機器に接続を提供し得る。ＩＳＰ２２６は、現在一般に「インターネット」２２８と称される世界的なパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク２２２およびインターネット２２８はともに、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を用いる。さまざまなネットワークとネットワークリンク２２０上の信号とを介し、通信インターフェイス２１８を経由する信号は、コンピュータシステム２００へ、およびコンピュータシステム２００からデジタルデータを搬送するものであり、情報を移送する搬送波の例示的な形である。
【００６５】
コンピュータシステム２００は、ネットワーク、ネットワークリンク２２０および通信インターフェイス２１８を介して、プログラムコードを含んだメッセージの送信およびデータの受信を行ない得る。インターネットの例では、サーバ２３０は、インターネット２２８、ＩＳＰ２２６、ローカルネットワーク２２２および通信インターフェイス２１８を介してアプリケーションプログラムのための要求されたコードを伝送し得る。この発明に従って、このようなダウンロードされた１つのアプリケーションは、この明細書中に記載される分散された動作に関与するものについての情報の提供をもたらす。
【００６６】
受信されたコードは、受信されるとプロセッサ２０４によって実行され得、および／または記憶装置２１０もしくは他の不揮発性記憶装置に記憶されて後で実行され得る。この態様では、コンピュータシステム２００は、搬送波の形でアプリケーションコードを獲得し得る。
【００６７】
上述の明細書では、この発明を、その特定の実施例に関連して記載してきた。しかしながら、この発明のより広範な精神および範囲から逸脱することなく、さまざまな変形および変更が可能であることは明らかである。したがって、明細書および図面は、限定的な意味ではなく例示的な意味で理解されるべきである。
【図面の簡単な説明】
【００６８】
【図１ａ】待ちグラフを示すブロック図である。
【図１ｂ】待ちグラフを示すブロック図である。
【図２】この発明の実施例を実現することのできるコンピュータシステムを示すブロック図である。
【図１ａ】
2005502941.tif 000003
【図２】
2005502941.tif 000004
【国際公開パンフレット】
2005502941.tif 000005
2005502941.tif 000006
2005502941.tif 000007
2005502941.tif 000008
2005502941.tif 000009
2005502941.tif 000010
2005502941.tif 000011
2005502941.tif 000012
2005502941.tif 000013
2005502941.tif 000014
2005502941.tif 000015
2005502941.tif 000016
2005502941.tif 000017
2005502941.tif 000018
2005502941.tif 000019
2005502941.tif 000020
2005502941.tif 000021
2005502941.tif 000022
2005502941.tif 000023
2005502941.tif 000024
2005502941.tif 000025
【国際公開パンフレット（コレクトバージョン）】
2005502941.tif 000026
2005502941.tif 000027
【国際調査報告】
2005502941.tif 000028
2005502941.tif 000029
2005502941.tif 000030