(57)【要約】  プロセスまたはスレッドの優先度を、そのプロセスがソフトウエア・ロックを獲得したときに一時的に変更するシステムおよび方法。優先度は、ロックが獲得されたときに変更され、プロセスがそのロックを解放したときにリストアされる。スレッドの優先度は、オペレーティング・システムによって管理されているすべてのロックに関して変更することも可能であり、選択的に変更することも可能である。それに加えて、１つのロックを獲得しているプロセスが、別のロックを獲得しているプロセスと異なる優先度ブーストを受け取るように、変更の量を個別に調整することもできる。さらに、ロック優先度の値を調整することによってコンピュータ・システムをチューニングする方法が提供されている。【選択図】  図２
2004326783.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するための方法であって、
共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるところのソフトウエア・ロックに関する要求を前記スレッドから受け取るステップと
前記ソフトウエア・ロックが利用可能であるか判断するステップと
前記判断するステップに応答し、前記スレッドに、前記共有リソースに対するアクセスを許可するステップと
前記許可するステップに関連して前記スレッドの前記優先度を変更するステップと
を含む方法。
【請求項２】
前記ソフトウエア・ロックに対応する優先度変更値を取出すステップをさらに含み、
前記変更するステップが、前記優先度変更値によって前記優先度を調整するステップを含む、請求項１に記載の方法。
【請求項３】
前記スレッドからリリース・インストラクションを受け取るステップと
前記リリース・インストラクションを受け取るステップに応答して、以前に行った前記アクセスの許可を取り消すステップと
前記取り消すステップに関連して前記スレッドの前記優先度を再調整するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ソフトウエア・ロックに対応する優先度変更値を取出すステップをさらに含み、
前記変更するステップが、前記優先度変更値によって前記優先度を調整するステップを含み、かつ前記再調整するステップが、前記優先度から前記優先度変更値を取り除くステップを含む、請求項３に記載の方法。
【請求項５】
前記変更するステップは、
前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらすステップと
前記優先度と前記新しい優先度の間の差の値を判断するステップと
前記差の値をストアするステップと
前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整するステップと
をさらに含む、請求項１に記載の方法。
【請求項６】
複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るステップに先行して、初期化するステップと
前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するステップに先行して、取出すステップとをさらに含み、
前記変更するステップが、前記取出した優先度変更値によって前記優先度変更値を調整するステップを含む、請求項１に記載の方法。
【請求項７】
前記複数の優先度変更値の初期化に続いて前記コンピュータ・オペレーティング・システムをテストするステップと
前記テストするステップに応答して、前記複数の優先度変更値の１ないし複数の変更を行うステップと
をさらに含む、請求項６に記載の方法。
【請求項８】
１ないし複数のプロセッサと
前記プロセッサによるアクセスが可能なメモリと
前記プロセッサによるアクセスが可能な不揮発性ストレージ・デバイスと
前記プロセッサ、前記メモリ、および前記ストレージ・デバイスの使用をコントロールするためのコンピュータ・オペレーティング・システムであって、共有リソースに対するアクセスのコントロールに使用される１ないし複数のソフトウエア・ロック・データ構造を含むコンピュータ・オペレーティング・システムと
前記コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するためのソフトウエア・ロック・ツールとよりなる情報処理システムであって、
前記ソフトウエア・ロック・ツールが、
前記コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更する手段と
前記ソフトウエア・ロックは、共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるソフトウエア・ロックにして当該ソフトウエア・ロックに関する要求を前記スレッドから受け取るための手段と
前記ソフトウエア・ロックが利用可能であるか判断する手段と
前記判断手段に応答し、前記スレッドに、前記共有リソースに対するアクセスを許可する手段と
前記許可する手段に関連して前記スレッドの前記優先度を変更する手段と
を含むところの情報処理システム。
【請求項９】
前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、
前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含む、請求項８に記載の情報処理システム。
【請求項１０】
前記スレッドからリリース・インストラクションを受け取る手段と
前記リリース・インストラクションを受け取る手段に応答して、以前に行った前記アクセスの許可を取り消す手段と
前記取り消す手段に関連して前記スレッドの前記優先度を再調整する手段と
をさらに含む、請求項８に記載の情報処理システム。
【請求項１１】
前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、
前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含み、かつ前記再調整する手段が、前記優先度から前記優先度変更値を取り除く手段を含む、請求項１０に記載の情報処理システム。
【請求項１２】
前記変更する手段は、
前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらす手段と
前記優先度と前記新しい優先度の間の差の値を判断する手段と
前記差の値をストアする手段と
前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整する手段と
をさらに含む、請求項８に記載の情報処理システム。
【請求項１３】
複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るのに先行して、初期化する手段と
前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するのに先行して、取出す手段とをさらに含み、
前記変更する手段が、前記取出した優先度変更値によって前記優先度変更値を調整する手段を含む、請求項８に記載の情報処理システム。
【請求項１４】
コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するための、コンピュータ動作可能メディア内にストアされたコンピュータ・プログラムであって、
共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるところのソフトウエア・ロックに関する要求を前記スレッドから受け取る手段と
前記ソフトウエア・ロックが利用可能であるか判断する手段と
前記判断手段に応答し、前記スレッドに、前記共有リソースに対するアクセスを許可する手段と
前記許可する手段に関連して前記スレッドの前記優先度を変更する手段と
を含むコンピュータ・プログラム。
【請求項１５】
前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、
前記変更する手段が、前記優先度変更値によって前記優先度を調整するための手段を含む、請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記スレッドからリリース・インストラクションを受け取る手段と
前記リリース・インストラクションを受け取る手段に応答して、以前に行った前記アクセスの許可を取り消すための手段と
前記取り消す手段に関連して前記スレッドの前記優先度を再調整する手段と
をさらに含む、請求項１４に記載のコンピュータ・プログラム。
【請求項１７】
前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、
前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含み、かつ前記再調整する手段が、前記優先度から前記優先度変更値を取り除く手段を含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記変更する手段は、
前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらす手段と
前記優先度と前記新しい優先度の間の差の値を判断する手段と
前記差の値をストアする手段と
前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整する手段と
をさらに含む、請求項１４に記載のコンピュータ・プログラム。
【請求項１９】
複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るのに先行して、初期化する手段と
前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するのに先行して、取出す手段をさらに含み、前記変更する手段が、前記取出した優先度変更値によって前記優先度変更値を調整する手段を含む、請求項１４に記載のコンピュータ・プログラム。
【請求項２０】
前記複数の優先度変更値の初期化に続いて前記コンピュータ・オペレーティング・システムをテストする手段と
前記テストに応答して、前記複数の優先度変更値の１ないし複数の変更を行う手段と
を含む、請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してソフトウエア・ロック効率を向上させるためのシステムおよび方法に関する。より詳細に述べれば、本発明は、ロック処理の間におけるスレッド優先度を増減するためのシステムおよび方法に関する。
【背景技術】
【０００２】
近代的なコンピュータ・システムは、見かけ上、同時に複数のタスクを遂行する。プロセッサは、マルチタスキングを使用し、ラウンド‐ロビン形式に従ってプロセスのサービスを行うことによって複数のプロセスからのインストラクションを処理する。このようにして、あるプロセスが、それがタイム・スライスされている手前の短時間にわたってプロセッサによって実行され、そのセッティングならびにレジスタ値が保存され、続いて別のプロセスが当該プロセッサによって実行される。プロセスまたは『スレッド』は、プロセッサによるハンドリングを必要とする１ないし複数のソフトウエア・アプリケーションに対応するインストラクションのストリームである。ここでは、これらの用語『プロセス』および『スレッド』を、プロセッサにより実行される実行可能インストラクションのストリームを表すために相互交換可能に使用する。１つのプロセスから次のプロセスへ迅速に移動することによって、それぞれのプロセスが同時に実行されているように見える。
【０００３】
オペレーティング・システムは、プロセッサに対するアクセスを統制する。これを目的としてほとんどのオペレーティング・システムは、優先度ベースのスケジューリング・アルゴリズムを採用している。優先度は、コンピュータ・システムに代わって、遂行される機能の重要度および／または緊急度に従ってプログラムに割り当てられる。オペレーティング・システムは、プロセス、もしくはプログラム内の実行可能コードのユニット（以下『スレッド』）に、いつ、およびどの程度の時間にわたってプロセッサへのアクセスが与えられるかについて、これらの優先度を使用して判断する。概して言えば、優先度ベースのスケジューリングは、プロセッサ時間の割り付けを行って、コンピュータ・システムのパフォーマンスを最適化している。たとえば、ユーザの入力応答時間を最小化してスループットを最大化するため、および／またはアプリケーション・プログラムに関する予測可能な、あるいは判断論的な実行時間を最大化するためにコンピュータ・システムを最適化することができる。
【０００４】
コンピュータ・システム内の多くのリソースは、プロセッサによって実行されている各種のプログラムによって共有される。多くの場合は、これらのリソースが、任意の時点においてそのリソースを使用するプロセスが１つだけとなるように、シリアル化される必要がある。リソースに対するアクセスをシリアル化するために、しばしばソフトウエア・ロックが使用される。リソースが別のプロセスによって使用されているときは、プロセスがロックを待機することになる。当該別のプロセスによってそのロックが解放されると、そのプロセスは、そのロックの獲得を試みる。別のプロセスは、そのプロセスがそのロックを解放するまで、そのリソースを使用することができなくなる。このシリアル化によって、共有リソースの効率的な利用が全体的なシステムのスループットの向上を助けることになる。これは、リソースならびに対応するロックが多くのプロセスによって使用される場合に特に当てはまる。
【０００５】
優先度ベースのスケジューリング・アルゴリズムを使用しているオペレーティング・システムにおいては、下位優先度を伴うプロセスが、上位の優先度のプロセスによって封じられることがある。優先度が下位のプロセスが、現在、クリティカルなリソースを所有している場合においてさえもそれが行われる。伝統的なオペレーティング・システムの抱える難題は、下位優先度プロセスの強制排除と、それと同時のクリティカルなリソースの利用の効率的なハンドリングの間における明白な衝突である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、ここで必要とされることは、オペレーティング・システムによって採用されている優先度ベースのスケジューリング・アルゴリズムに過度の影響をもたらすことなく、スレッドの優先度を一時的に変更するシステムおよび方法である。さらにまた、システムの効率を最大化するために、個別のリソースに対応するソフトウエア・ロックのチューニングを可能にするシステムおよび方法も必要とされている。
【課題を解決するための手段】
【０００７】
上記の課題は、スレッドがソフトウエア・ロックを獲得したときに、そのスレッドの優先度を一時的に変更するシステムおよび方法を使用して解決されることが明らかになった。ほとんどの場合に、スレッドの優先度は、そのスレッドが封じられる前にロックによってコントロールされる共有リソースの使用を完了する尤度がより好ましいものとなるように改善される。スレッドの優先度が増加された後は、そのスレッドを、同一の優先度を伴う別のスレッドが封じようとすることが生じにくくなり、しかもその一方において、より上位の優先度を伴うスレッドは、そのスレッドを封じることができる。このようにすれば、システムの優先度ベースのスケジューリング・アルゴリズムを遵守しつつ、クリティカルなロックを保持しているスレッドに対しては先取権付き優先度が与えられる。
【０００８】
スレッドがロックを解放すると、以前にそのスレッドを変更した値を用いて、システムが自動的にそのスレッドの優先度を調整する。たとえば、スレッドの優先度が、ロックの獲得に応答して２０から３０に変更された場合を考えると、ロックの解放に応答して優先度から１０が減じられる。このようにすれば、非効率的なリソースの使用に起因してそのスレッドにペナルティが課せられた場合に、たとえば３０から２８に下げられた場合には、ロックの解放時の優先度は、オリジナルの２０ではなく、１８になる。
【０００９】
一実施態様においては、ロックが、そのロックを獲得しているスレッドが異なる優先度ブーストを受け取るようにチューニングされる。たとえば、１つのクリティカルなロックが、そのロックを獲得したスレッドに対して１０のブーストを提供し、別のロックは、それを獲得したスレッドに対して５のブーストを提供するだけとし、さらに別のロックは、ブーストをまったく提供しないとした場合に、全体的なシステムの効率の向上が見られることがある。このようにすれば、全体的なシステムのパフォーマンスを、個別のブースト値を調整することによってチューニングすることができる。さらに、ある種の状況においては、ロックの優先度を実際に下げると有利になることがあり、その場合には、スレッドがロックを獲得したときに、そのスレッドの優先度に対して負の値を適用することができる。
【００１０】
以上は要約であり、そのため必然的に簡略化、一般化、および詳細の省略を含んでいる、したがって、当業者にあっては、この要約が例示に過ぎず、いかなる形においても限定を意図していないことを認識されるであろう。特許請求の範囲によってのみ定義されるような本発明のこのほかの側面、発明的特徴、および利点は、以下に示す限定を意図しない詳細な記述から明らかになるであろう。
【００１１】
本発明は、添付図面を参照することによってより良好な理解が得られ、その多くの目的、特徴、および利点が当業者に明らかなものとなるであろう。
【発明を実施するための最良の形態】
【００１２】
以下は、本発明の一例の詳細な説明を提供することが意図されたものであり、本発明自体を限定するものと捉えられるべきではない。むしろ多数の変形が、付随する特許請求の範囲に定義される本発明の範囲内に含まれる。
【００１３】
図１は、伝統的な（従来技術の）システムにおいては、スレッドがロックを獲得するときにスレッドの優先度が変更されないことを示したブロック図である。共有リソースを使用するために、与えられた優先度を伴うプロセスが、そのリソースに対するアクセスをコントロールするロックの獲得を試みる（ステップ１００）。リソースが利用可能になると、そのプロセスは、アクセスをコントロールするロックを獲得する（ステップ１１０）。続いてそのプロセスは、そのプロセス自体のオリジナルの（つまり、変更されていない）優先度の値を伴って共有リソースを使用する（ステップ１２０）。このプロセスには、先取権付き優先度が与えられていなかったことから、オペレーティング・システムがロック保持プロセスを先取権のあるものとして扱わず、対等プロセス（すなわち、ロック保持プロセスと等しい優先度を伴うプロセス）がロック保持プロセスを封じるようとすることが起こりやすくなる（ステップ１３０）。
【００１４】
図２は、スレッドがロックを獲得したときにそのスレッドの優先度が変更されることを示したブロック図である。図１に示されている伝統的なシステムと対照してみるが、図２において、同じプロセスが共有リソースをコントロールするロックの獲得を試みる（ステップ１５０）。しかしながら、図１に示されているプロセスとは異なり、図２においては、そのプロセスがロックを保持している間のそのプロセス優先度が変更される（処理の詳細については図４の定義済みプロセス１６０を参照されたい）。続いてそのプロセスは、変更済み（つまり、より先取権の高い）優先度の値を伴って共有リソースを使用する（ステップ１７０）。プロセスに先取権付きの優先度が与えられていることから、対等プロセス（すなわち、ロック保持プロセスのオリジナルの優先度と同じ優先度を伴うプロセス）がロック保持プロセスを封じようとすることが起こりにくくなる（ステップ１３０）。プロセスが封じられようとすることが起こりにくいほど、そのプロセスが共有リソースの使用をより早く完了できるようになり、したがってほかのプロセスのために、より早く共有リソースを解放できることになる。
【００１５】
図３は、ロックの獲得時に優先度が変更されるプロセスのハイ・レベルのフローチャートを示している。新しいロック要求プロセス（プロセスＨ）は、共有リソース２２０に対するアクセスをコントロールするロックを要求する（ステップ２５０）。このロック要求プロセスは、それに関連付けされた優先度２５１を有し、オペレーティング・システムにより、その優先度ベース・スケジューリング・アルゴリズムにおいて使用される。
【００１６】
要求されたロックが現在利用可能か否かの判断が行われる（判断２５５）。そのロックが現在利用可能でない場合には判断２５５が『否定』ブランチ２６２へ分岐し、要求プロセスに関連する情報をキュー２３０に追加する（ステップ２６５）。キュー２３０は、共有リソースへのアクセスをコントロールするロックを待機しているプロセスに関する情報をストアするために使用されるＦＩＦＯキューである。ロックが直ちに利用可能でない場合には要求プロセスがスリープに入れられ（ステップ２７０）、その後は、プロセッサからプロセッシング時間を継続的に受け取ることがなくなるが、そのロックが利用可能になると、それがウェイク・アップされる。図にスリープ中のプロセス２７５として示されているように、１つのロックが利用可能になるまでの間を多くのプロセスがスリープしているということも可能である。
【００１７】
判断２５５に戻るが、ロックが利用可能である場合には、判断２５５が『肯定』ブランチ２５８へ分岐し、それとともにその要求プロセスの優先度が変更され、さらにその要求プロセスが、共有リソース２２０に対するアクセスを受け取る（ステップ２６０）。ロック・コントロール構造２００が使用されて、ロックを現在保有しているプロセスのプロセス識別子を含むロックに関する情報が維持される。
【００１８】
一実施態様においては、優先度の変更値、またはブースト値２１０が、メモリ・エリアから読み出される。このようにすれば、優先度ブースト値を変更し、ロックまたはシステム・パフォーマンスを向上させることができる。それに加えて、優先度に対して所定値による単純なインクリメントが行われないように、アルゴリズムを使用することもできる。たとえば、そのプロセスが優先度の低いプロセスである場合には、その優先度がより多く増加され、その結果、その優先度の低いプロセスは、封じられる前にその共有リソースを終える、より良好な機会を有するようになる。
【００１９】
図４は、スレッドがロックを獲得するときにそのスレッドの優先度を変更し、そのスレッドがロックを解放するときにそのスレッドの優先度をリストアするために採用されるステップを示したフローチャートである。この処理は、３００において開始され、続いて所定の優先度の値を有するプロセス３０５からロック要求を受け取る（ステップ３１０）。
【００２０】
要求されたロックが利用可能であるか否かについての判断が行われる（判断３２０）。そのロックが利用可能でない場合には、判断３２０が『否定』ブランチ３２５へ分岐し、それにより要求プロセスは、そのロックが利用可能になるまでを待機する（ステップ３３０）。この間はそのプロセスを『空転』させさせておく、つまりスリープに入れずにロックを待機させておくことも可能であり、あるいは、そのロックが利用可能になるまでスリープさせておくこともできる。
【００２１】
ロックが利用可能であるか（その場合には判断３２０が『肯定』ブランチ３３５へ分岐する）、あるいは待機プロセスの間にそのロックが利用可能になると、さらに、そのロックに関するそのプロセスの優先度を変更するか否かについての判断が行われる（判断３４０）。ある種の環境においては、システム内の任意のロックが獲得されたときに優先度を変更すると有利であり、別の環境においては、選択されたロックが獲得されたときに限って優先度を変更すると有利になる。プロセスの優先度が、このロックを獲得した結果として変更される場合には、判断３４０が『肯定』ブランチ３４５へ分岐し、それにおいては優先度の変更値またはブースト値が検索され（ステップ３５０）、ストアされ（ステップ３５５）、相応じてその変更値によりそのプロセスの優先度を変更することによってそれが適用され（ステップ３６０）、かつロック・コントロール構造がセットされる（ステップ３７５）。前述したように、一実施態様においては、優先度の変更値が一定値であり、別の実施態様においては、優先度の変更値が可変であり、異なるプロセスが異なるブーストのレベルを受け取るようにできる。また、一実施態様においては、プロセスの優先度を変更するステップおよびロック・コントロール構造をセットするステップが、これら２つのステップの間にそのプロセスが封じられる機会をほとんど、もしくはまったく伴わずに連続して、かつ迅速に遂行されるように、アトミック、もしくは擬似アトミック形式で遂行される。
【００２２】
判断３４０に戻るが、このロックを獲得しているプロセスの優先度が変更されない場合には、判断３４０が『否定』ブランチ３６５へ分岐し、それにおいては優先度の変更値が、そのプロセスの優先度が変更されなかったことを表すゼロにセットされ（ステップ３７０）、そのプロセスがロックを獲得するようにロック・コントロール構造がセットされる（ステップ３７５）。
【００２３】
プロセスは、ロックを獲得した後、そのロックによってアクセスがコントロールされている共有リソースからの値の読み出しもしくはそれに対する値の書き込みを生じる可能性のある、そのプロセスのインストラクションのクリティカルなセクションを実行する（ステップ３８０）。プロセスがその共有リソースの使用を完了すると、そのプロセスは、別のプロセスがその共有リソースを使用することができるようにロックを解放し（ステップ３８５）、そのプロセスの現在の優先度から、ステップ３５５においてストアされた変更値を減じることによって、そのプロセスの優先度がリストアされる（ステップ３９０）。ここで注意されたいが、ステップ３５５においてプロセスのオリジナルの優先度をストアし、ステップ３９０においてリストアすることも可能であるが、変更値によって優先度を調整することは、そのプロセスが共有リソースを使用している間に生じたあらゆる優先度の変化がそのまま残されることを保証する。たとえば、そのプロセスによるリソースの非効率的な使用に起因してそのプロセスにペナルティが適用され、そのプロセスの優先度が下げられることがある。これらのペナルティがシステムによって評価されたものであることから、そのプロセスの優先度がリストアされたときにその種のペナルティが保存されることは有利であると見られる。それに加えて、一実施態様においては、プロセスがロックを保持している間に限って増加された優先度を有し、その後はそれを持たないように、ロックを解放するステップおよびそのプロセスの優先度をリストアするステップがアトミックもしくは擬似アトミック形式で遂行される。その後３９５において、ロック・ブースト処理が終了する。
【００２４】
図５は、ロック優先度ブースト値を変更することによってコンピュータ・システムをチューニングするために採用されるステップを示したフローチャートである。この処理は、４００において開始され、それとともに最初のロックが優先度チューニングのために選択される（ステップ４０５）。ロック変更値は、人間のチューニング・スペシャリスト４１５（つまり、コンピュータ・システムのチューニングに関する技能訓練を受けた人員）もしくは自動化されたチューニング・プロセス４２０（つまり、ニューラル・ネットワークもしくはそのほかの形式の人工知能を使用してロック変更値を判断するプロセス）から受け取られる（ステップ４２５）。
【００２５】
受け取ったロック変更値は、セットされるか、ロック優先度データ・メモリ領域４３５内にストアされる（ステップ４３０）。続いて、追加のロックのチューニングが必要であるか否かについての判断が行われる（判断４４５）。チューニングの必要な追加のロックが存在する場合には、判断４４５が『肯定』ブランチ４５０へ分岐し、それにおいて次にチューニングが行われることになるロックを選択し（ステップ４５５）、そのロックに関するロック変更値を受け取るために処理がループ・バックし、ロック優先度データ・メモリ領域内にその値をストアする。このループは、チューニングが行われるべきロックがなくなるまで繰り返され、なくなった時点において判断４４５が『否定』ブランチ４６０へ分岐し、新しくストアされたロック変更値を用いるシステムのテストが行われる（ステップ４６５）。
【００２６】
ステップ４５６においては、不揮発性メモリ・ストレージ・デバイス上にストアされているテスト・スクリプト４７０が読み出され、ロック・ブースト・プロセスを使用して各種のロッキング・シナリオが実行される（あらかじめ判断済みのプロセス４７５、処理の詳細については図４参照）。このロック・ブースト・プロセスは、メモリ領域４３５内にストアされているロック変更値を使用する。時間的なロックの長さといったこのテストの結果が保持されることはもとより、全体的なシステムのスループット値がテスト結果データストレージ４８０に書き込まれる。
【００２７】
システムのテストに続いてテスト結果が分析される（ステップ４８５）。これらの結果の分析は、人間のチューニング・スペシャリスト４１５、自動化されたプロセス４２０、またはこれらの組み合わせによって行うことができる。この分析に応答して、追加のロック優先度チューニングが必要であるか否かに関する判断が行われる（判断４９０）。追加のチューニングが必要とされる場合には、判断４９０が『肯定』ブランチ４９２へ分岐し、そこから処理がループ・バックしてロックならびにそれらに対応するロック変更値が選択される。このループは、追加のチューニングが必要となくなるまで継続され、必要がなくなった時点において、判断４９０が『否定』ブランチ４９４へ分岐し、４９５においてロック・チューニング処理が終了する。
【００２８】
図６は、ここで述べているシステムおよび方法を遂行することのできるコンピュータ・システムの簡略化した一例とする情報処理システム５０１を示している。コンピュータ・システム５０１は、プロセッサ５００を備え、それがホスト・バス５０５に結合されている。ホスト・バス５０５には、レベル２（Ｌ２）キャッシュ・メモリ５１０も結合されている。ホスト対ＰＣＩブリッジ５１５は、メイン・メモリ５２０に結合されており、キャッシュ・メモリおよびメイン・メモリ・コントロール機能を備え、かつバス・コントロールを提供して、ＰＣＩバス５２５、プロセッサ５００、Ｌ２キャッシュ５１０、メイン・メモリ５２０、およびホスト・バス５０５の間の転送のハンドリングを行う。ＰＣＩバス５２５は、たとえばＬＡＮカード５３０を含めた各種のデバイスのためのインターフェースを提供する。ＰＣＩ対ＩＳＡブリッジ５３５は、ＰＣＩバス５２５とＩＳＡバス５４０の間の転送、ユニバーサル・シリアル・バス（ＵＳＢ）機能５４５、ＩＤＥデバイス機能５５０、電力管理機能５５５のハンドリングを行うバス・コントロールを提供し、さらに、そのほかの図示していない、リアルタイム・クロック（ＲＴＣ）、ＤＭＡコントロール、割り込みサポート、およびシステム・マネジメント・バス・サポートといった機能エレメントを含むことができる。周辺デバイスならびに入力／出力（Ｉ／Ｏ）デバイスを各種のインターフェース５６０（たとえば、ＩＳＡバス５４０に結合されているパラレル・インターフェース５６２、シリアル・インターフェース５６４、赤外線（ＩＲ）インターフェース５６６、キーボード・インターフェース５６８、マウス・インターフェース５７０、および固定ディスク（ＦＤＤ）５７２））に取り付けることができる。それに代えて、ＩＳＡバス５４０に取り付けられる上位Ｉ／Ｏコントローラ（図示せず）によって多くのＩ／Ｏデバイスの便宜を図ることもできる。
【００２９】
ＢＩＯＳ  ５８０は、ＩＳＡバス５４０に結合されており、各種のロー・レベルのシステム機能およびシステムのブート機能に必要なプロセッサ実行可能コードが組み込まれている。ＢＩＯＳ  ５８０は、任意のコンピュータ可読メディア内にストア可能であり、それには、磁気ストレージ・メディア、光学ストレージ・メディア、フラッシュ・メモリ、ランダム・アクセス・メモリ、読み出し専用メモリ、およびインストラクションをエンコーディングした信号（たとえば、ネットワークからの信号）を伝達する通信メディアが含まれる。このコンピュータ・システム５０１に別のコンピュータ・システムをアタッチし、ネットワークを介してファイルをコピーするために、ＬＡＮカード５３０がＰＣＩ対ＩＳＡブリッジ５３５に結合されている。同様に、電話回線接続を使用してコンピュータ・システム５０１をＩＳＰに接続し、インターネットに接続するために、シリアル・ポート５６４およびＰＣＩ対ＩＳＡブリッジ５３５にモデム５７５が接続されている。
【００３０】
図６に示されているコンピュータ・システムは、ここに記述されているプロセスを実行することができるが、このコンピュータ・システムは、純粋にコンピュータ・システムの一例とする。当業者であれば、このほかの多くのコンピュータ・システム設計によって、ここに記述されているプロセスを遂行し得ることを認識されよう。
【００３１】
本発明の好ましい具体化の１つは、クライアント・アプリケーション、つまり、たとえばコンピュータのランダム・アクセス・メモリ内に常駐することのできるコード・モジュール内のインストラクションのセット（プログラム・コード）である。コンピュータから要求されるまで、このインストラクションのセットは、別のコンピュータ・メモリ内、たとえばハードディスク・ドライブ内、もしくは光ディスク（最終的にＣＤ‐ＲＯＭドライブにおける使用のため）もしくはフレキシブル・ディスク（最終的にフレキシブル・ディスク・ドライブにおける使用のため）等のリムーバブル・メモリ内にストアされるようにしてもよく、あるいはインターネットもしくはそのほかのコンピュータ・ネットワークを介してダウンロードされるようにしてもよい。したがって、本発明は、コンピュータ内において使用されるコンピュータ・プログラムとして具体化することができる。それに加えて、記述されている各種の方法は、ソフトウエアによって選択的にアクティブ化されるか、あるいは再構成される汎用コンピュータ内において都合よく具体化されるが、当業者であれば認識されるように、その種の方法は、ハードウエア、ファームウエア、あるいは必要とされる方法のステップを遂行するために構成される、より特化された装置内において実行することができる。
【００３２】
以上、本発明の特定の実施態様について示し、説明してきたが、当業者にとっては、これにおける教示を基礎として本発明およびより広いその側面から逸脱することなく、変更ならびに修正を行い得ることが明らかなものとなろう。したがって、これに付随する特許請求の範囲は、本発明の真の精神および範囲に含まれるようなあらゆる変更ならびに修正を、その範囲内に包含しているものとする。さらに言えば、本発明は、付随する特許請求の範囲によってのみ定義されることを理解されるべきとする。また当業者にあっては理解されることになろうが、被導入請求要素に特定の数の概念が意図されている場合には、その種の意図が請求項内において明示的に具陳されており、その種の具陳のない場合には、その種の限定が存在しない。たとえば、理解の補助として限定を意図しない例を述べれば、これに付随する特許請求の範囲の請求項には、請求要素を導入するための『少なくとも１つ』および『１ないし複数』という前置句の使用が含まれている。しかしながらその種の句の使用は、数の特定がないか『ある』の前置きによる請求要素の導入が、その種の被導入請求要素を含む任意の特定請求項を、その種の要素を１つだけ含む発明に限定することを暗示しているものと解釈されるべきでなく、それは、同一の請求項に前置句『少なくとも１つ』もしくは『１ないし複数』または数の特定がないか『ある』の前置された請求要素を含む場合であっても例外としない、同じことが請求項における『前記』の使用に関しても言える。
【００３３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３４】
（１）コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するための方法であって、共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるところのソフトウエア・ロックに関する要求を前記スレッドから受け取るステップと、前記ソフトウエア・ロックが利用可能であるか判断するステップと、前記判断するステップに応答し、前記スレッドに、前記共有リソースに対するアクセスを許可するステップと、前記許可するステップに関連して前記スレッドの前記優先度を変更するステップ、を含む方法。
（２）前記ソフトウエア・ロックに対応する優先度変更値を取出すステップをさらに含み、前記変更するステップが、前記優先度変更値によって前記優先度を調整するステップを含む、上記（１）に記載の方法。
（３）前記スレッドからリリース・インストラクションを受け取るステップと、前記リリース・インストラクションを受け取るステップに応答して、以前に行った前記アクセスの許可を取り消すステップと、前記取り消すステップに関連して前記スレッドの前記優先度を再調整するステップ、をさらに含む、上記（１）に記載の方法。
（４）前記ソフトウエア・ロックに対応する優先度変更値を取出すステップをさらに含み、前記変更するステップが、前記優先度変更値によって前記優先度を調整するステップを含み、かつ前記再調整するステップが、前記優先度から前記優先度変更値を取り除くステップを含む、上記（３）に記載の方法。
（５）前記変更するステップは、前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらすステップと、前記優先度と前記新しい優先度の間の差の値を判断するステップと、前記差の値をストアするステップと、前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整するステップと、をさらに含む、上記（１）に記載の方法。
（６）複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るステップに先行して、初期化するステップと、前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するステップに先行して、取出すステップとをさらに含み、前記変更するステップが、前記取出した優先度変更値によって前記優先度変更値を調整するステップを含む、上記（１）に記載の方法。
（７）前記複数の優先度変更値の初期化に続いて前記コンピュータ・オペレーティング・システムをテストするステップと、前記テストするステップに応答して、前記複数の優先度変更値の１ないし複数の変更を行うステップと、をさらに含む、上記（６）に記載の方法。
（８）１ないし複数のプロセッサと、前記プロセッサによるアクセスが可能なメモリと、前記プロセッサによるアクセスが可能な不揮発性ストレージ・デバイスと、前記プロセッサ、前記メモリ、および前記ストレージ・デバイスの使用をコントロールするためのコンピュータ・オペレーティング・システムであって、共有リソースに対するアクセスのコントロールに使用される１ないし複数のソフトウエア・ロック・データ構造を含むコンピュータ・オペレーティング・システム、前記コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するためのソフトウエア・ロック・ツールとよりなる情報処理システムであって、前記ソフトウエア・ロック・ツールが、前記コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更する手段と、前記ソフトウエア・ロックは、共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるソフトウエア・ロックにして当該ソフトウエア・ロックに関する要求を前記スレッドから受け取るための手段と、前記ソフトウエア・ロックが利用可能であるか判断する手段と、前記判断手段に応答し、前記スレッドに、前記共有リソースに対するアクセスを許可する手段と、前記許可する手段に関連して前記スレッドの前記優先度を変更する手段と、を含むところの情報処理システム。
（９）前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含む、上記（８）に記載の情報処理システム。
（１０）前記スレッドからリリース・インストラクションを受け取る手段と、前記リリース・インストラクションを受け取る手段に応答して、以前に行った前記アクセスの許可を取り消す手段と、前記取り消す手段に関連して前記スレッドの前記優先度を再調整する手段と、をさらに含む、上記（８）に記載の情報処理システム。
（１１）前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含み、かつ前記再調整する手段が、前記優先度から前記優先度変更値を取り除く手段を含む、上記（１０）に記載の情報処理システム。
（１２）前記変更する手段は、前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらす手段と、前記優先度と前記新しい優先度の間の差の値を判断する手段と、前記差の値をストアする手段と、前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整する手段と、をさらに含む、上記（８）に記載の情報処理システム。
（１３）複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るのに先行して、初期化する手段と、前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するのに先行して、取出す手段とをさらに含み、前記変更する手段が、前記取出した優先度変更値によって前記優先度変更値を調整する手段を含む、上記（８）に記載の情報処理システム。
（１４）コンピュータ・オペレーティング・システムによって実行されている実行のスレッドの優先度を変更するための、コンピュータ動作可能メディア内にストアされたコンピュータ・プログラムであって、共有リソースに対するアクセスをコントロールするのに使用されるデータ構造であるところのソフトウエア・ロックに関する要求を前記スレッドから受け取る手段と、前記ソフトウエア・ロックが利用可能であるか判断するための手段と、前記判断手段に応答し、前記スレッドに、前記共有リソースに対するアクセスを許可する手段と、前記許可する手段に関連して前記スレッドの前記優先度を変更する手段と、を含むコンピュータ・プログラム。
（１５）前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、前記変更する手段が、前記優先度変更値によって前記優先度を調整するための手段を含む、上記（１４）に記載のコンピュータ・プログラム。
（１６）前記スレッドからリリース・インストラクションを受け取る手段と、前記リリース・インストラクションを受け取る手段に応答して、以前に行った前記アクセスの許可を取り消すための手段と、前記取り消す手段に関連して前記スレッドの前記優先度を再調整する手段と、をさらに含む、上記（１４）に記載のコンピュータ・プログラム。
（１７）前記ソフトウエア・ロックに対応する優先度変更値を取出す手段をさらに含み、前記変更する手段が、前記優先度変更値によって前記優先度を調整する手段を含み、かつ前記再調整する手段が、前記優先度から前記優先度変更値を取り除く手段を含む、上記（１６）に記載のコンピュータ・プログラム。
（１８）前記変更する手段は、前記スレッドの前記優先度に対してアルゴリズムを適用し新しい優先度をもたらす手段と、前記優先度と前記新しい優先度の間の差の値を判断する手段と、前記差の値をストアする手段と、前記スレッドが前記ソフトウエア・ロックをリリースするのに応答して、前記差の値により前記スレッドの前記新しい優先度を再調整する手段と、をさらに含む、上記（１４）に記載のコンピュータ・プログラム。
（１９）複数の優先度変更値のそれぞれが、異なるソフトウエア・ロックに対応しているところの前記複数の優先度変更値を、前記要求を受け取るのに先行して、初期化する手段と、前記要求されたソフトウエア・ロックに対応する前記優先度変更値を、前記変更するのに先行して、取出す手段をさらに含み、前記変更する手段が、前記取出した優先度変更値によって前記優先度変更値を調整する手段を含む、上記（１４）に記載のコンピュータ・プログラム。
（２０）前記複数の優先度変更値の初期化に続いて前記コンピュータ・オペレーティング・システムをテストする手段と、前記テストに応答して、前記複数の優先度変更値の１ないし複数の変更を行う手段と、を含む、上記（１９）に記載のコンピュータ・プログラム。
【図面の簡単な説明】
【００３５】
【図１】伝統的な（従来技術の）システムにおいては、スレッドがロックを獲得するときにスレッドの優先度が変更されないことを示したブロック図である。
【図２】スレッドがロックを獲得したときにそのスレッドの優先度が変更されることを示したブロック図である。
【図３】ロックの獲得時に優先度が変更されるプロセスのハイ・レベルのフローチャートである。
【図４】スレッドがロックを獲得したときにそのスレッドの優先度を変更し、そのスレッドがロックを解放したときにそのスレッドの優先度をリストアするために採用されるステップを示したフローチャートである。
【図５】ロック優先度ブースト値を変更することによってコンピュータ・システムをチューニングするために採用されるステップを示したフローチャートである。
【図６】ここに述べられている本発明を具体化することのできるコンピューティング・デバイスのブロック図である。
【符号の説明】
【００３６】
２００  ロック・コントロール構造
２２０  共有リソース
２３０  キュー
２５１  優先順位
２７５  スリープ中のプロセス
３０５  プロセス
４１５  調整スペシャリスト
４２０  調整プロセス
４３５  ロック優先順位データ・メモリ領域
４７０  テスト・スクリプト
４８０  テスト結果ストレージ
５００  プロセッサ
５０１  コンピュータ・システム
５０５  ホスト・バス
５１０  Ｌ２キャッシュ／レベル２キャッシュ・メモリ
５１５  ホスト対ＰＣＩブリッジ
５２０  メイン・メモリ
５２５  ＰＣＩバス
５３０  ＬＡＮカード
５３２  ファイバ・チャンネル・カード
５３５  ＰＣＩ対ＩＳＡブリッジ
５４０  ＩＳＡバス
５４５  ユニバーサル・シリアル・バス（ＵＳＢ）機能
５５０  ＩＤＥデバイス機能
５５５  電力管理機能
５６０  各種のインターフェース
５６２  パラレル・インターフェース
５６４  シリアル・インターフェース／シリアル・ポート
５６６  赤外線（ＩＲ）インターフェース
５６８  キーボード・インターフェース
５７０  マウス・インターフェース
５７２  固定ディスク（ＦＤＤ）
５７５  モデム
５８０  ＢＩＯＳ
【図１】
2004326783.tif 000003
【図２】
2004326783.tif 000004
【図３】
2004326783.tif 000005
【図４】
2004326783.tif 000006
【図５】
2004326783.tif 000007
【図６】
2004326783.tif 000008