(57)【要約】ブロック転送メッセージをロック許可メッセージとして解釈することによって、マルチノードシステム内でロックを得ることおよびデータ項目を転送することに関連する性能を向上させるための方法および装置が提供される。通例、データ項目のホルダが、データ項目（たとえば、ブロック）をそのデータ項目のリクエスタに転送するとき、ホルダは、そのデータ項目に対するそのロックをダウンコンバートし、ダウンコンバートが実行されたことを表わすメッセージをこのデータ項目のマスタに送信する。続いて、マスタは、ロック許可メッセージをデータ項目のリクエスタに送信して、データ項目に対するロックが許可されたことをリクエスタに知らせる。ブロック転送メッセージをロック許可メッセージとして解釈することによって、ダウンコンバートメッセージおよびロック許可メッセージが除去され得る。これによって、結果として、性能の向上が得られる。
2004529443.tif 000002
【特許請求の範囲】
【請求項１】
リソースへのアクセスを管理するための方法であって、前記方法は、
前記リソース上でのロックモードを求めてロックモードリクエストをリクエスタから前記リソースのマスタに送信する、コンピュータによって実現されるステップと、
前記リソースを前記リクエスタにおいて前記リソースのホルダから受信する、コンピュータによって実現されるステップと、
前記マスタからの明白なロックモード許可を受信することを待つことなく、前記リクエスタに対して前記ロックモードリクエストが許可されたかのように前記リソースにアクセスする、コンピュータによって実現されるステップとを含む、方法。
【請求項２】
前記リソースを前記リクエスタにおいて受信する前記ステップが起こるかを検出する、コンピュータによって実現されるステップと、
前記リクエスタが前記リソースを受信する場合、
前記リクエスタから前記マスタにロック取得メッセージを送信して、前記リクエスタが前記リソースに対するロックモードをとったことを前記マスタに知らせる、コンピュータによって実現されるステップとをさらに含む、請求項１に記載の方法。
【請求項３】
リソースへのアクセスを管理するための方法であって、前記方法は、
リクエスタが前記リソースを必要としているというインフォームロックホルダメッセージをホルダにおいて受信する、コンピュータによって実現されるステップを含み、前記ホルダは、現在、前記リソースおよび前記リソース上の第１のロックモードを保持し、前記方法はさらに、
前記インフォームロックホルダメッセージの受信に応答して、ステータスメッセージを前記リソースのマスタに送信することなしに前記リソースを前記リクエスタに転送する、コンピュータによって実現されるステップを含み、前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、前記方法はさらに、
前記ホルダが維持するロックモード記録を更新して、前記ホルダが前記リソースに対して前記第１のロックモードから第２のロックモードへとダウンコンバートしたことを表わす、コンピュータによって実現されるステップを含む、方法。
【請求項４】
更新ロックメッセージを前記マスタに送信する、コンピュータによって実現されるステップをさらに含み、前記更新ロックメッセージは、前記リソースに対する前記第２のロックモードを表わす、請求項３に記載の方法。
【請求項５】
請求項３に記載の方法であって、
送信側からのメッセージを前記ホルダにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記メッセージは、前記リソース上の第３のロックモードを含み、前記方法はさらに、
前記第１のロックモードと前記第３のロックモードとが整合しないことを検出する、コンピュータによって実現されるステップと、
ロックステータスメッセージを前記送信側に送信する、コンピュータによって実現されるステップとを含み、
前記ロックステータスメッセージは、前記第１のロックモードを含む、請求項３に記載の方法。
【請求項６】
前記リソースを複数のリクエスタに転送するために必要なすべての情報を含む、単一の一括されたインフォームロックホルダメッセージを前記ホルダにおいて受信する、コンピュータによって実現されるステップと、
前記リソースを前記複数のリクエスタに転送する、コンピュータによって実現されるス
テップとをさらに含む、請求項３に記載の方法。
【請求項７】
ロックアクセスメッセージを前記ホルダからマスタに送信する、コンピュータによって実現されるステップをさらに含む、請求項３に記載の方法。
【請求項８】
リソースへのアクセスを管理するための方法であって、前記方法は、
リクエスタが複数のリソースのうちのある特定のリソースを必要とすることを表わすリクエストメッセージをマスタにおいて受信する、コンピュータによって実現されるステップを含み、前記マスタは、前記複数のリソースに対応する複数のロックモード記録を維持し、前記方法はさらに、
前記マスタからホルダへとインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記ホルダに対して示す、コンピュータによって実現されるステップと、
前記リクエスタからロックアクセスメッセージを受信する、コンピュータによって実現されるステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対するロックモードをとったことを表わし、前記方法はさらに、
前記ロックアクセスメッセージを受信したことに応答して、前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップを含み、
前記更新は、前記リクエスタが前記特定のリソース上で前記ロックモードをとったことを表わす、方法。
【請求項９】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録を受信したことに応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップは、前記特定のリソースに関連する前記ホルダからのいずれかのステータスメッセージを受信する前に実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項８に記載の方法。
【請求項１０】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録を受信したことに応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップは、前記特定のリソースに関連する前記ホルダからのステータスメッセージを受信することなく実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項８に記載の方法。
【請求項１１】
複数のリクエスタが前記特定のリソースを必要としていることを表わす複数のリクエストメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップと、
前記マスタから前記ホルダへと前記インフォームロックホルダメッセージを送信する、コンピュータによって実現されるステップとをさらに含み、前記インフォームロックホルダメッセージは、前記ホルダが前記特定のリソースを前記複数のリクエスタに転送するために必要な、前記複数のリクエストメッセージからのすべての情報を含む、請求項８に記載の方法。
【請求項１２】
請求項８に記載の方法であって、
送信側からのメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記メッセージは、前記特定のリソース上の第２のロックモードを含み、前記方法はさらに、
前記ロックモードと前記第２のロックモードとが整合しないことを検出する、コンピュータによって実現されるステップと、
ロックステータスメッセージを前記送信側に送信する、コンピュータによって実現されるステップとを含み、
前記ロックステータスメッセージは、前記ロックモードを含む、請求項８に記載の方法。
【請求項１３】
請求項８に記載の方法であって、
第２のリクエストメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記リクエストメッセージと前記第２のリクエストメッセージとは両方とも、専有ロックモードで前記リソースを求めるリクエストを含み、前記方法はさらに、
前記マスタが前記リクエスタから前記ロックアクセスメッセージを受信するまで、前記第２のリクエストメッセージを待ち行列に入れる、コンピュータによって実現されるステップを含む、請求項８に記載の方法。
【請求項１４】
リソースへのアクセスを管理するための方法であって、前記方法は、
リクエスタが複数のリソースのうちのある特定のリソースを必要としていることを表わすリクエストメッセージをマスタにおいて受信する、コンピュータによって実現されるステップを含み、前記マスタは、前記複数のリソースに対応する複数のロックモード記録を維持し、前記方法はさらに、
複数のホルダから１つのホルダを指定する、コンピュータによって実現されるステップを含み、前記複数のホルダはすべて、前記特定のリソースに対するそれぞれのロックモードを有し、前記方法はさらに、
複数のブロードキャストインフォームロックホルダメッセージを前記１つのホルダ以外の前記複数のホルダに送信し、前記リクエスタが前記特定のリソースを必要としていることを示す、コンピュータによって実現されるステップと、
前記１つのホルダ以外の前記複数のホルダから複数の更新ロックメッセージを受信する、コンピュータによって実現されるステップとを含み、
前記複数の更新ロックメッセージは、前記複数のホルダのそれぞれのロックモードを表わし、前記方法はさらに、
前記マスタから前記１つのホルダにインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記１つのホルダに対して示す、コンピュータによって実現されるステップと、
ロックアクセスメッセージを前記リクエスタから受信する、コンピュータによって実現されるステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対してロックモードをとったことを表わし、前記方法はさらに、
前記ロックアクセスメッセージを受信したことに応答して、ステータスメッセージを受信することなく前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップを含み、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、
前記更新は、前記リクエスタが前記特定のリソース上でロックモードをとったことを表わす、方法。
【請求項１５】
コンピュータシステムであって、
プロセッサと、
コンピュータによって実現される以下のステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶したメモリとを含み、前記以下のステップは、
リソース上のロックモードを求めてロックモードリクエストをリクエスタからリソースのマスタに送信するステップと、
前記リソースを前記リクエスタにおいて前記リソースのホルダから受信するステップと、
前記マスタからの明白なロックモード許可を受信することを待つことなく、前記リクエスタに対して前記ロックモードリクエストが許可されたかのように前記リソースにアクセスするステップとを含む、コンピュータシステム。
【請求項１６】
前記メモリは、コンピュータによって実現される以下のステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
前記リソースを前記リクエスタにおいて受信する前記ステップが起こるかを検出するステップと、
前記リクエスタが前記リソースを受信する場合、
ロック取得メッセージを前記リクエスタから前記マスタに送信して、前記リクエスタが前記リソースに対してロックモードをとったことを前記マスタに知らせるステップとを含む、請求項１５に記載のコンピュータシステム。
【請求項１７】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリとを含み、前記メモリは、
複数のリソースのうちのある特定のリソースのロックモードに対応する、複数のロックモード記録のうちのある特定のロックモード記録を含み、マスタが、前記複数のリソースに対応する前記複数のロックモード記録を維持し、前記メモリは、
コンピュータによって実現される以下のステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
リクエスタが前記複数のリソースのうちの前記特定のリソースを必要としていることを表わすリクエストメッセージを前記マスタにおいて受信するステップを含み、前記マスタは、前記複数のリソースに対応する前記複数のロックモード記録を維持し、前記以下のステップはさらに、
前記マスタからホルダにインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記ホルダに対して示すステップと、
前記リクエスタからロックアクセスメッセージを受信するステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対して前記ロックモードをとったことを表わし、前記以下のステップはさらに、
前記ロックアクセスメッセージを受信したことに応答して、ステータスメッセージを受信することなく前記複数のロックモード記録のうちの前記特定のロックモード記録に対して更新を実行するステップを含み、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、
前記更新は、前記リクエスタが前記特定のリソース上でロックモードをとったことを表わす、コンピュータシステム。
【請求項１８】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録のうちの特定のロックモード記録に対して更新を実行する、コンピュータによって実現される前記ステップは、前記特定のリソースに関連する前記ホルダからのいずれかのステータスメッセージを受信する前に実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項１７に記載のコンピュータシステム。
【請求項１９】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録を受信したことに応答して前記複数のロックモード記録のうちの特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップは、前記特定のリソースに関連する前記ホルダからの前記ステータスメッセージを受信することなく実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項１７に記載のコンピュータシステム。
【請求項２０】
前記メモリは、コンピュータによって実現される以下のステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
複数のリクエスタが前記特定のリソースを必要としていることを表わす複数のリクエストメッセージを前記マスタにおいて受信するステップと、
前記マスタから前記ホルダに前記インフォームロックホルダメッセージを送信するステップとを含み、前記インフォームロックホルダメッセージは、前記ホルダが前記特定のリソースを前記複数のリクエスタに転送するために必要な、前記複数のリクエストメッセージからのすべての情報を含む、請求項１７に記載のコンピュータシステム。
【請求項２１】
前記メモリは、コンピュータによって実現される以下のステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
送信側からのメッセージを前記マスタにおいて受信するステップを含み、
前記メッセージは、前記特定のリソース上の第２のロックモードを含み、前記以下のステップはさらに、
前記ロックモードと前記第２のロックモードとが整合しないことを検出するステップと、
ロックステータスメッセージを前記送信側に送信するステップとを含み、
前記ロックステータスメッセージは、前記ロックモードを含む、請求項１７に記載のコンピュータシステム。
【請求項２２】
請求項１７に記載のコンピュータシステムであって、
前記マスタにおいて第２のリクエストメッセージを受信する、コンピュータによって実現されるステップをさらに含み、
前記リクエストメッセージおよび前記第２のリクエストメッセージは両方とも、専有ロックモードでリソースを求めるリクエストを含み、前記コンピュータシステムはさらに、
前記マスタが前記リクエスタから前記ロックアクセスメッセージを受信するまで、前記第２のリクエストメッセージを待ち行列に入れる、コンピュータによって実現されるステップを含む、請求項１７に記載のコンピュータシステム。
【請求項２３】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリとを含み、前記メモリは、
複数のリソースのうちのある特定のリソースのロックモードに対応する、複数のロックモード記録のうちのある特定のロックモード記録を含み、マスタが、前記複数のリソースに対応する前記複数のロックモード記録を維持し、前記メモリはさらに、
コンピュータによって実現される以下のステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
リクエスタが前記複数のリソースのうちの前記特定のリソースを必要としていることを表わすリクエストメッセージをマスタにおいて受信するステップを含み、前記マスタは、
前記複数のリソースに対応する前記複数のロックモード記録を維持し、前記以下のステップはさらに、
複数のホルダから１つのホルダを指定するステップを含み、前記複数のホルダはすべて、前記特定のリソースに対するそれぞれのロックモードを有し、前記以下のステップはさらに、
複数のブロードキャストインフォームロックホルダメッセージを前記１つのホルダ以外の前記複数のホルダに送信し、前記リクエスタが前記特定のリソースを必要としていることを示すステップと、
前記１つのホルダ以外の前記複数のホルダから複数の更新ロックメッセージを受信するステップとを含み、
前記複数の更新ロックメッセージは、前記複数のホルダのそれぞれのロックモードを表わし、前記以下のステップはさらに、
前記マスタから前記１つのホルダにインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記１つのホルダに対して示すステップと、
ロックアクセスメッセージを前記リクエスタから受信するステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対してロックモードをとったことを表わし、前記以下のステップはさらに、
前記ロックアクセスメッセージを受信したことに応答して、ステータスメッセージを受信することなく前記複数のロックモード記録のうちの特定のロックモード記録に対して更新を実行するステップを含み、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、
前記更新は、前記リクエスタが前記特定のリソース上でロックモードをとったことを表わす、コンピュータシステム。
【請求項２４】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリとを含み、前記メモリは、
リソースおよび前記リソース上の第１のロックモードと、
前記リソースに関連するロックモード記録とを含み、前記メモリは、
コンピュータによって実現される以下のステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
リクエスタが前記リソースを必要としているというインフォームロックホルダメッセージをホルダにおいて受信するステップを含み、前記ホルダは、現在、前記リソースおよび前記リソース上の前記第１のロックモードを保持し、前記以下のステップはさらに、
前記インフォームロックホルダメッセージを受信したことに応答して、前記リソースのマスタにステータスメッセージを送信することなく前記リソースを前記リクエスタに転送するステップを含み、前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、前記以下のステップはさらに、
前記ホルダによって維持される前記ロックモード記録を更新して前記ホルダが前記リソースに対して前記第１のロックモードから第２のロックモードにダウンコンバートしたことを表わすステップを含む、コンピュータシステム。
【請求項２５】
前記メモリは、更新ロックメッセージを前記マスタに送信する、コンピュータによって実現されるステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、
前記更新ロックメッセージは、前記リソースに対する前記第２のロックモードを表わす、請求項２４に記載のコンピュータシステム。
【請求項２６】
前記メモリは、コンピュータによって実現される以下のステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
送信側からのメッセージを前記ホルダにおいて受信するステップを含み、
前記メッセージは、前記リソース上の第３のロックモードを含み、前記以下のステップはさらに、
前記第１のロックモードと前記第３のロックモードとが整合しないことを検出するステップと、
ロックステータスメッセージを前記送信側に送信するステップとを含み、
前記ロックステータスメッセージは、前記第１のロックモードを含む、請求項２４に記載のコンピュータシステム。
【請求項２７】
前記メモリは、コンピュータによって実現される以下のステップをさらに含む、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶し、前記以下のステップは、
前記リソースを複数のリクエスタに転送するために必要なすべての情報を含む単一の一括されたインフォームロックホルダメッセージを前記ホルダにおいて受信するステップと、
前記リソースを前記複数のリクエスタに転送するステップとを含む、請求項２４に記載のコンピュータシステム。
【請求項２８】
リソースへのアクセスを管理するための１つ以上の命令シーケンスを担持するコンピュータ読出可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
前記リソース上のロックモードを求めてロックモードリクエストをリクエスタから前記リソースのマスタに送信するステップと、
前記リクエスタにおいて前記リソースのホルダから前記リソースを受信するステップと、
前記マスタからの明白なロックモード許可を受信すること待つことなしに、前記リクエスタに対して前記ロックモードリクエストが許可されたかのように前記リソースにアクセスするステップとを含む、コンピュータ読出可能な媒体。
【請求項２９】
以下のステップを実行するための命令シーケンスをさらに含み、前記以下のステップは、
前記リクエスタにおいて前記リソースを受信する前記ステップが起こるかを検出するステップと、
前記リクエスタが前記リソースを受信する場合、
前記リクエスタから前記マスタへとロック取得メッセージを送信して、前記リクエスタが前記リソースに対してロックモードをとったことを前記マスタに知らせるステップとを含む、請求項２８に記載のコンピュータ読出可能な媒体。
【請求項３０】
リソースへのアクセスを管理するための１つ以上の命令シーケンスを担持するコンピュータ読出可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
リクエスタが前記リソースを必要としているというインフォームロックホルダメッセージをホルダにおいて受信するステップを含み、前記ホルダは、現在、前記リソースおよび前記リソース上の第１のロックモードを保持し、前記以下のステップはさらに、
前記インフォームロックホルダメッセージの受信に応答して、ステータスメッセージを
前記リソースのマスタに送信することなく前記リソースを前記リクエスタに転送するステップを含み、前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、前記以下のステップはさらに、
前記ホルダが維持するロックモード記録を更新して、前記ホルダが前記リソースに対して前記第１のロックモードから第２のロックモードにダウンコンバートしたことを表わすステップを含む、コンピュータ読出可能な媒体。
【請求項３１】
更新ロックメッセージを前記マスタに送信するステップを実行するための命令シーケンスをさらに含み、
前記更新ロックメッセージは、前記リソースに対する前記第２のロックモードを表わす、請求項３０に記載のコンピュータ読出可能な媒体。
【請求項３２】
以下のステップを実行するための命令シーケンスをさらに含み、前記以下のステップは、
送信側からのメッセージを前記ホルダにおいて受信するステップを含み、
前記メッセージは、前記リソース上の第３のロックモードを含み、前記以下のステップはさらに、
前記第１のロックモードと前記第３のロックモードとが整合しないことを検出するステップと、
ロックステータスメッセージを前記送信側に送信するステップとを含み、
前記ロックステータスメッセージは、前記第１のロックモードを含む、請求項３０に記載のコンピュータ読出可能な媒体。
【請求項３３】
前記リソースを複数のリクエスタに転送するために必要なすべての情報を含む単一の一括されたインフォームロックホルダメッセージを前記ホルダにおいて受信するステップと、
前記リソースを前記複数のリクエスタに転送するステップとを実行するための命令シーケンスをさらに含む、請求項３０に記載のコンピュータ読出可能な媒体。
【請求項３４】
ロックアクセスメッセージを前記ホルダからマスタに送信する、コンピュータによって実現されるステップをさらに含む、請求項３０に記載の方法。
【請求項３５】
リソースへのアクセスを管理するための１つ以上の命令シーケンスを担持するコンピュータ読出可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに以下ステップを実行させ、前記以下のステップは、
リクエスタが複数のリソースのうちのある特定のリソースを必要としていることを表わすリクエストメッセージをマスタにおいて受信するステップを含み、前記マスタは、前記複数のリソースに対応する複数のロックモード記録を維持し、前記以下のステップはさらに、
前記マスタからホルダにインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記ホルダに対して示すステップと、
ロックアクセスメッセージを前記リクエスタから受信するステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対してロックモードをとったことを表わし、前記以下のステップはさらに、
前記ロックアクセスメッセージの受信に応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行するステップを含み、
前記更新は、前記リクエスタが前記特定のリソース上でロックモードをとったことを表わす、コンピュータ読出可能な媒体。
【請求項３６】
前記ロックアクセスメッセージの受信に応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する前記ステップは、前記特定のリソースに関連する前記ホルダからのいずれかのステータスメッセージの受信の前に実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項３７】
前記ロックアクセスメッセージの受信に応答して前記複数のロックモード記録の受信に応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する前記ステップは、前記特定のリソースに関連する前記ホルダからのステータスメッセージを受信することなく実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項３８】
複数のリクエスタが前記特定のリソースを必要としていることを表わす複数のリクエストメッセージを前記マスタにおいて受信するステップと、
前記マスタから前記ホルダに前記インフォームロックホルダメッセージを送信するステップとを実行するための命令シーケンスをさらに含み、
前記インフォームロックホルダメッセージは、前記ホルダが前記特定のリソースを前記複数のリクエスタに転送するために必要な、前記複数のリクエストメッセージからのすべての情報を含む、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項３９】
以下のステップを実行するための命令シーケンスをさらに含み、前記以下のステップは、
送信側からのメッセージを前記マスタにおいて受信するステップを含み、
前記メッセージは、前記特定のリソース上の第２のロックモードを含み、前記以下のステップはさらに、
前記ロックモードと前記第２のロックモードとが整合しないことを検出するステップと、
ロックステータスメッセージを前記送信側に送信するステップとを含み、
前記ロックステータスメッセージは、前記ロックモードを含む、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項４０】
以下のステップを実行するための命令シーケンスをさらに含み、前記以下のステップは、
第２のリクエストメッセージを前記マスタにおいて受信するステップを含み、
前記リクエストメッセージおよび前記第２のリクエストメッセージは両方とも、専有ロックモードで前記リソースを求めるリクエストを含み、前記以下のステップはさらに、
前記マスタが前記リクエスタから前記ロックアクセスメッセージを受信するまで、前記第２のリクエストメッセージを待ち行列に入れるステップを含む、請求項３５に記載のコンピュータ読出可能な媒体。
【請求項４１】
リソースへのアクセスを管理するための１つ以上の命令シーケンスを担持するコンピュータ読出可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
リクエスタが複数のリソースのうちのある特定のリソースを必要としていることを表わすリクエストメッセージをマスタにおいて受信するステップを含み、前記マスタは、前記複数のリソースに対応する複数のロックモード記録を維持し、前記以下のステップはさらに、
複数のホルダから１つのホルダを指定するステップを含み、前記複数のホルダはすべて
、前記特定のリソースに対するそれぞれのロックモードを有し、前記以下のステップはさらに、
前記１つのホルダ以外の複数のホルダに複数のブロードキャストインフォームロックホルダメッセージを送信し、前記リクエスタが前記特定のリソースを必要としていることを示すステップと、
前記１つのホルダ以外の前記複数のホルダから複数の更新ロックメッセージを受信するステップとを含み、
複数の更新ロックメッセージは、前記複数のホルダのそれぞれのロックモードを表わし、前記以下のステップはさらに、
前記マスタから前記１つのホルダへとインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記１つのホルダに対して示すステップと、
前記リクエスタからロックアクセスメッセージを受信するステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対してロックモードをとったことを示し、前記以下のステップはさらに、
前記ロックアクセスメッセージの受信に応答して、ステータスメッセージを受信することなく前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行するステップを含み、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、
前記更新は、前記リクエスタが前記特定のリソース上でロックモードをとったことを表わす、コンピュータ読出可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、データ項目をリクエストする１つのエンティティ、および別のエンティティからの、このデータ項目に関連するロックに付随する呼出し時間およびメッセージトラフィックを減じるための技術に関する。
【背景技術】
【０００２】
発明の背景
スケーラビリティを向上させるために、いくつかのデータベースおよびファイルシステムは、（各々が別々に動作する）１つよりも多くのデータベースまたはファイルサーバが、ディスク媒体等の共有記憶装置に並行してアクセスすることを許可する。各データベースまたはファイルサーバは、ディスクブロック等の共有データ項目をキャッシュするためのキャッシュを有する。このようなマルチノードシステムは、ここで、クラスタと呼ばれる。クラスタに付随する１つの問題点は、データ項目を得ることに関連したオーバーヘッドおよびこのデータ項目に関連したロックである。
【０００３】
あるデータ項目へのアクセスを望むエンティティが、ここで、データ項目の「リクエスタ」と呼ばれる。データ項目にアクセスする権利を現在保持する１つ以上のエンティティが、ここで、データ項目のホルダと呼ばれる。クラスタ内のすべてのノードのために、データ項目に関連したロックを把握することを担うエンティティが、ここで、データ項目のマスタと呼ばれる。データ項目のマスタ、ホルダ、およびリクエスタは、１つのノード上の別々のプロセスであり得、別々のノード上のプロセスであり得、または、いくつかは、同じノード上のプロセスであって、他は別個のノード上にあり得る。
【０００４】
典型的なシナリオでは、ホルダは、最新バージョンのデータ項目をそのキャッシュ内に保持する。リクエスタは、データ項目上での、あるレベルのアクセス、したがって、ロックをリクエストする。リクエスタが必要とするロックのタイプは、リクエスタが実行することを望むアクセスのタイプに左右される。したがって、ロックリクエストは、通例、望まれるロックの「ロックモード」を特定する。結果的に、ある特定のタイプのロックを得ることは、「ある特定のモードでロックを得ること」とも呼ばれ得る。たとえば、データ項目を読出すためには、Ｓロック（たとえば、共有ロック）が得られなければならない。データ項目を修正するためには、Ｘロック（たとえば、専有ロック）が得られなければならない。Ｘロックが保持されるためには、他のホルダは、他のいずれのロックも保持してはならない。しかしながら、いくつかのホルダは、Ｓロックを並行して保持してもよい。
【０００５】
リクエスタがデータ項目およびこのデータ項目に関連したロックを得るためには、さまざまなメッセージが交換されなければならない。図１Ａおよび図１Ｂを参照して、図１Ａは、マスタ１００、ホルダ１１０、およびリクエスタ１２０が別々のノード上に存在する、クラスタを表わすブロック図である。さらに、リクエスタ１２０は、Ｓロックを必要とし、ホルダ１１０は、既にＸロックを有する。図１Ｂは、図１Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図１Ｂは、これらのメッセージに関連し得るパラメータも示す。
【０００６】
多くの場合、ノードＡ上のホルダ１１０とノードＢ上のリクエスタ１２０との間の接続は、高速接続である。ノードＢ上のリクエスタ１２０とノードＣ上のマスタ１００との間の接続は、より遅い接続である。
【０００７】
最初、ホルダ１１０は、データ項目およびこのデータ項目に対するＸロックを有する。続いて、リクエスタ１２０が、このデータ項目へのアクセスおよびそれに対するＳロックを必要とする。データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＳロックを得るために、ノードＢ上のリクエスタ１２０は、ロックリクエストメッセージをノードＣ上のマスタ１００に送信する。ロックリクエストメッセージには、リクエストされるデータ項目が最終的に転送される記憶場所およびリクエスタ１２０がＳロックを必要とすることを表わす所望のロックモードが付随する。
【０００８】
マスタ１００がロックリクエストメッセージを受信すると、マスタ１００は、メッセージをノードＡ上のホルダ１１０に送って、共有モードでデータ項目を必要とするリクエスタ１２０が存在することを、ホルダ１１０に知らせる（たとえば、ロックホルダに知らせる）。
【０００９】
ホルダ１１０は、リクエストされたデータ項目をリクエスタの特定の記憶場所に転送する。ホルダ１１０は、メモリからメモリへの転送を行なって、データ項目をリクエスタ１２０に転送する。加えて、ノードＡ上のホルダ１１０は、そのロックをＸロックからＳロックへとダウンコンバートし、マスタ１００に、このダウンコンバージョンを知らせる。リクエストされたデータ項目の転送（たとえば、ＴＢＭ）およびダウンコンバートメッセージは、並行して送られ得る。
【００１０】
マスタ１００がダウンコンバートメッセージを受信すると、マスタ１００は、リクエスタ１２０にロック許可メッセージを送信することによって、ノードＢ上のリクエスタ１２０に対してＳロックを許可する。リクエスタ１２０がロック許可メッセージを受信した後にのみ、リクエスタ１２０は、データ項目にアクセスし得る。
【００１１】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得る（たとえば、リクエスタ１２０がロック許可メッセージを受信する）までの時間は、４つの小さなメッセージ（たとえば、ロックリクエストメッセージ、インフォームロックホルダ、ダウンコンバートメッセージ、およびロック許可メッセージ）である。トラフィックは、４つの小さなメッセージ（ロックリクエストメッセージ、インフォームロックホルダ、ダウンコンバートメッセージ、およびロック許可メッセージ）およびリクエストされるデータ項目の１つの転送である。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
クラスタ内の動作速度を上げるために、リクエストするデータ項目にアクセスできる前にリクエスタが待たなければならない時間量を減じる技術を提供することが望ましい。
【課題を解決するための手段】
【００１３】
発明の概要
マルチノードシステム内でロックを得ることおよびデータ項目を転送することに関連した性能を向上させるための方法および装置が提供される。説明される技術は、キャッシュを有するエンティティがリソースへのアクセスを共有するいずれかの状況で適用可能である。このような状況は、ファイルシステムおよびデータベースシステムを含むが、これらに限定されているわけではない。この発明の１つの局面に従うと、リクエスタにブロック転送メッセージをロック許可メッセージとして解釈させることによって、向上した性能が達成される。したがって、リクエスタは、マスタからの明示的なロック許可を待つ必要なしに、それが受信されるとすぐにデータ項目にアクセスできる。
【発明を実施するための最良の形態】
【００１４】
この発明は、同じ参照番号が同様の要素を指す添付の図において、限定としてではなく、例として示される。
【００１５】
好ましい実施例の詳細な説明
ブロック転送メッセージをロック許可メッセージとして解釈することによって、ブロック（たとえば、データ項目）の転送およびクラスタ内でロックを得ることに関連した性能を向上させるための方法および装置が、ここで説明される。以下の説明では、この発明の完全な理解を提供するために、説明の目的で多くの具体的な詳細が述べられる。しかしながら、これらの具体的な詳細がなくても、この発明を実施できることは、当業者には明らかであろう。他の例では、この発明を不必要に曖昧なものにしないために、周知の構造および装置は、ブロック図の形で示される。
【００１６】
以下で説明される技術は、キャッシュを有するエンティティがリソースへのアクセスを共有するいずれかの状況で適用可能である。このような状況は、ファイルシステムおよびデータベースシステムを含むが、これらに限定されているわけではない。ファイルシステムの状況で用いられる場合、ファイルシステムブロックは、用語の部分の転送ブロックメッセージの議論において以下で説明されるように、データ項目ヘッダ内に冗長フィールドを有し得ない。データ項目ヘッダ内の冗長フィールドを用いる代わりに、新しいロックモードおよびロールが、データ位置とは別個のヘッダ位置に置かれ得る。さらに、リクエストメモリアドレスは、ヘッダおよびデータ位置を含まなければならない。ヘッダおよびデータは、インタコネクト内でスキャタ／ギャザー動作を通して送信され得る。
【００１７】
用語
以下の用語を用いて、この発明の実施例を説明するためにここに提供される多くのシナリオ内で交換されるメッセージを表す。
【００１８】
１）  ロックリクエストメッセージ（ＬＲＭ）：リクエスタは、ＬＲＭをマスタに送信する。いくつかのシステムでは、リクエスタは、データ項目がコピーされるべき記憶場所をＬＲＭ内に含み得る。
【００１９】
２）  インフォームロックホルダーメッセージ(Inform Lock Holders Message)（ＩＬＨ）：マスタは、ＩＬＨをホルダに送信して、データ項目に対するロックを得ることに関心がある（つまり、データ項目にアクセスすることを望む）リクエスタが存在することをホルダに知らせる。リクエスタが専有ロックを望む場合、ＩＬＨは、データ項目上でＳロックを保持する多くのホルダに送信され得る。
【００２０】
３）  転送ブロックメッセージ（ＴＢＭ）：ホルダは、ホルダのキャッシュ内にあるデータ項目（たとえば、ブロック）をＴＢＭとともにリクエスタに転送する。転送ブロックメッセージの受信は、リクエスタによって、データ項目のホルダからのロック許可として解釈される。
【００２１】
ＴＢＭは、データ項目の内容だけでなく、ホルダのロック状態情報も含む。ロック状態情報は、単純にロックモードから構成され得る。いくつかのシステムでは、ロック状態情報は、ホルダのキャッシュ内で保持されるデータ項目のバージョン番号またはどのノードがデータ項目を送信したのかというある表示を追加的に含み得る。データ項目に関連した情報を送信する１つの技術は、この情報をデータ項目のヘッダ内の冗長フィールド内に記憶することである。データ項目ヘッダフィールドは、リクエストしているノードがデータ項目を受信した後にこれらの「冗長」フィールドを再構成できる場合に、「冗長的」と考えられる。冗長フィールドの例は、データベースブロックアドレスおよびデータベースブロックタイプである。
【００２２】
データ項目に関連する情報を送信するための第２の技術は、別個のヘッダおよびペイロードフィールドを単一の基本となるメッセージで送信する「スキャタ／ギャザ」技術を用いることである。たとえば、典型的な書込／送信動作は、send(some＿dest, some＿buffer, buffer＿length)等の呼出を行なうことによって、実行され得る。ベクトル送信／書込は、バッファのリストまたはアレイを取り、それらを１つの動作内に置き、以下のようにする。
v［0］.buf＝buf1;
v［0］.len＝buflen1;
v［1］.buf＝buf2;
v［1］.len＝buflen2;
vsend(some＿dest,2/*size of vector*/,v);
一方、受信／読出は、以下のようになり得る。
v［0］.buf＝buf1;
v［0］.len＝buflen1;
v［1］.buf＝buf2;
v［1］.len＝buflen2;
vread(some＿dest,2,v);
これらの動作が用いられる通常の様態は、ヘッダ情報をペイロードから分けることである。ファイルシステムに対して提供される例では、ロックメッセージ情報は、buf1であり得、実際のブロックは、buf2内にあり得る。両方の動作をＡＰＩ内で説明することによって、基本となるシステムが、２つの動作に見えるものを１つの動作にすることが可能となる。この技術がメッセージングシステム内で用いられる場合、結果は、ワイヤ上の１つのメッセージであり、これは、大きな利点となる。
【００２３】
データ項目に関連する情報を送信するための第３の技術は、ＴＢＭとともにロック状態情報を含むのではなく、ロック状態情報を含む別個のステータスメッセージ（たとえば、ＬＳＭ）を送信することであるが、別個のステータスメッセージの送信は、並列な「ベクトル」送信を通しての別個のＬＳＭおよび別個のＴＢＭの送信をシステムが許容しない限りは、プロトコルの有用性を減じるおそれがある。並列な「ベクトル」送信をサポートするこのようなシステム内では、別個のＬＳＭは、プロトコルの効率を減じない。
【００２４】
４）  ブロードキャストインフォームロックホルダメッセージ(Broadcast Inform LockHolders Message)（ＢＩＬＨ）：マスタは、１つのホルダ以外のすべての共有ロックホルダ（たとえば、ある特定のデータ項目に対する共有ロックのホルダすべて）にＢＩＬＨを送信して、共有ロックホルダが現在共有ロックを保持しているデータ項目に対するロックを得ることに、あるリクエスタが関心を示していることを共有ロックホルダに知らせる。
【００２５】
５）  ダウンコンバートメッセージ（ＤＣＭ）：ホルダは、そのロックを（たとえば、専有モードから共有モードに）ダウンコンバートし、ＤＣＭをマスタに送信することによって、ロックがダウンコンバートされたことをマスタに知らせる。
【００２６】
６）  更新ロックモード（ＵＬＭ）：１つよりも多くのホルダが、データ項目に対するリクエストに応答してそれらがそれらのロックモードを変更／更新したことをマスタに知らせる必要がある場合、ホルダは、ロックidおよびこのロックidに関連した新しいロックモードとともに、ＵＬＭをマスタに送信する。
【００２７】
７）  ロック許可メッセージ（ＬＧＭ）：マスタは、ＬＧＭをリクエスタに送信して、ロックがリクエスタに対して与えられたことをリクエスタに知らせる。
【００２８】
８）  ロックステータスメッセージ（ＬＳＭ）：２つのエンティティ（たとえば、マスタ、リクエスタ、ホルダ）が、それらのそれぞれのロックステータスが整合しないことを認識した場合、２つのエンティティは、ＬＳＭとともにステータスを交換する。たとえば、マスタが、ロックステータスを含むＬＲＭをホルダから受信し、このホルダからのロックステータスが、マスタが有するロックステータスと整合しない場合、マスタは、マスタのロックステータスとともにＬＳＭをホルダに送信する。次に、ホルダは、ロックステータスを含むＬＳＭを、ホルダがそれを認識しているように、マスタに送り返す。したがって、マスタとホルダとは、ある特定のデータ項目に対するそれらのロックステータスを再び同じにすることができる。
【００２９】
ロック取得(assume)メッセージ
上述のように、通例、データ項目のホルダが、データ項目を、そのデータ項目のリクエスタに転送するとき、ホルダは、そのデータ項目に対するそのロックをダウンコンバートし、メッセージをこのデータ項目のマスタに送信し、ダウンコンバートが実行されたことを示す。続いて、マスタは、ロック許可メッセージをデータ項目のリクエスタに送信して、リクエスタがデータ項目に対するロックを許可されたことをリクエスタに知らせる。
【００３０】
対照的に、リクエスタがマスタからのロック許可メッセージを待たない技術が提供される。むしろ、リクエスタは、ホルダからのデータ項目の受信を暗示的なロック許可メッセージとして解釈する。リクエスタがブロック転送メッセージをロック許可メッセージとして解釈することによって、ダウンコンバートメッセージおよびロック許可メッセージが除去され得、これによって結果として、向上した性能が得られる。
【００３１】
最後に、データ項目のマスタは、どのエンティティがデータ項目上でロックを保持するのかについて知らされなければならない。ホルダがダウンコンバートメッセージをマスタに送信しない実施例では、マスタは、ある他のメカニズムを通してこの情報を得なければならない。一実施例によると、ホルダが既にそのロックモードをダウンコンバートし、さらにはリクエスタが新しいロックモードをとったことをマスタが知ることができるように、リクエスタまたはホルダのいずれかが、ロック取得メッセージ（ＬＡＭ）をマスタに送信する。
【００３２】
機能的概要
図２Ａは、マスタ２００、ホルダ２１０、およびリクエスタ２２０がクラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。さらに、リクエスタ２２０は、Ｓロックを必要とし、ホルダ２１０は、Ｘロックを既に有する。図２Ｂは、図２Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図２Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００３３】
ホルダ２１０は、現在、データ項目およびこのデータ項目に対するＸロックを有する。リクエスタ２２０は、このデータ項目へのアクセスおよびそれに対するＳロックを必要とする。リクエスタ２２０がこのデータ項目へのアクセスをＳモードで得ることができるように、以下のステップが実行される。
【００３４】
１）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＳロックを得るために、リクエスタ２２０は、ＬＲＭをマスタ２００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所およびリクエスタ２２０がＳロックを必要とすることを表わす所望のロックモードが付随する。
【００３５】
２）  マスタがＩＬＨをホルダに送信する
マスタ２００がＬＲＭを受信すると、マスタ２００は、ＩＬＨをホルダ２１０に送信して、共有モードでデータ項目を必要とするリクエスタ２２０が存在することをホルダ２１０に知らせる。
【００３６】
３）  ホルダがＴＢＭをリクエスタに送信する
ホルダ２１０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス２２０）を用いてＴＢＭとともに転送する。ホルダ２１０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ２２０に転送する。
【００３７】
Ｓロックのリクエスタ２２０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを待つ必要性をなくす。さらに、ホルダ２１０がＸロックを有しており、Ｘロックが保持されているのと同じときには、他のホルダは、他のいずれのロックも保持し得ないため、ホルダ２１０は、データ項目を転送する際に、そのロックをＸロックからＳロックにダウンコンバートする。一実施例に従うと、このダウンコンバートは、ホルダ２１０上で局所的に維持されるロック情報を変更することによって行なわれるが、ホルダ２１０は、ＤＣＭを用いてこのダウンコンバージョンをマスタ２００に知らせることはない。
【００３８】
４）  リクエスタがＬＡＭをマスタに送信する
リクエスタ２２０は、ＬＡＭをマスタ２００に送信し、ホルダ２１０によって転送された、データ項目に対するＳロックを、リクエスタ２２０がとったことを表わす。ＬＡＭに応答して、マスタ２００は、データ項目に対するそのロック情報を修正して、リクエスタ２２０とホルダ２１０との両方がデータ項目上でＳロックを有することを表わす。この発明の別の実施例に従うと、リクエスタ２２０がＬＡＭをマスタ２００に送信するのではなく、ホルダ２１０が、ＴＢＭをリクエスタ２２０に送信するのと並行して、ＬＡＭをマスタ２００に送信し得る。
【００３９】
多くの場合、ノードＡ上のホルダ２１０とノードＢ上のリクエスタ２２０との間の接続は、高速接続である。ノードＢ上のリクエスタ２２０とノードＣ上のマスタ２００との間の接続は、より遅い接続である。この構成は、ここで説明されるすべてのシナリオに当てはまると仮定される。
【００４０】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、２つの小さなメッセージと１つのデータ項目転送（たとえば、ＬＲＭ、ＩＬＨ、ＴＢＭ）である。全トラフィックは、３つの小さなメッセージと１つのデータ項目転送（たとえば、ＬＲＭ、ＩＬＨ、ＬＡＭ、およびＴＢＭ）である。
【００４１】
同じノード上のマスタおよびリクエスタ
図３Ａは、マスタ３１０およびリクエスタ３２０が、同じノード、ノードＢ  ３００上の別個のプロセスであり、かつホルダ３３０が、別個のノード、ノードＡ  ３３０上にある、クラスタを示すブロック図である。リクエスタ３２０は、Ｓロックを必要とし、ホルダ３３０は、既にＸロックを有する。図３Ｂは、図３Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図３Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００４２】
ホルダ３３０は、現在、データ項目およびこのデータ項目に対するＸロックを有する。リクエスタ３２０は、このデータ項目へのアクセスおよびそれに対するＳロックを必要とする。リクエスタ３２０がこのデータ項目へのアクセスをＳモードで得ることができるように実行されるステップは、２つの事柄以外は、図２Ａおよび図２Ｂと同じである。１つは、メッセージＬＲＭおよびＬＡＭは、別個のノード上の２つのプロセスではなく、同じノード上の２つのプロセス間で送信され、したがって、手続の呼出であることである。２つ目は、ＬＡＭが必須でないことである。なぜならば、リクエスタ３２０が、ホルダ３３０のロックをダウンコンバートするようにマスタ３１０のロック構造を更新し得るためである。
【００４３】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、１つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＩＬＨ、ＴＢＭ）である。全トラフィックも、１つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＩＬＨ、ＴＢＭ）である。メッセージＬＲＭおよびＬＡＭは、呼出し時間または全トラフィックの一部と考えられない。なぜならば、これらのメッセージは、同じノード上のプロセス間にあり、したがって、手続の呼出として扱われるためである。
【００４４】
同じノード上のマスタおよびホルダ
図４Ａは、マスタ４１０およびホルダ４２０が、同じノード、ノードＡ（ボックス４００）上の別個のプロセスであり、かつリクエスタ４３０が別個のノード、ノードＢ（ボックス４３０）上にある、クラスタを示すブロック図である。リクエスタ４３０は、Ｓロックを必要とし、ホルダ４２０は、既にＸロックを有する。図４Ｂは、図４Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図４Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００４５】
ホルダ４２０は、現在、データ項目およびこのデータ項目に対するＸロックを有する。続いて、リクエスタ４３０は、このデータ項目へのアクセスおよびそれに対するＳロックを必要とする。リクエスタ４３０がこのデータ項目へのアクセスをＳモードで得ることができるように実行されるステップは、２つの事柄以外は、図２Ａおよび図２Ｂと同じである。１つは、メッセージＩＬＨは、別個のノード上の２つのプロセス間ではなく、同じノード上の２つのプロセス間で送信されることである。２つ目は、リクエスタ４３０からマスタ４１０へのＬＡＭは、必須でないことである。その理由は、ホルダ４２０がＩＬＨを受信した後、ホルダ４２０は、ホルダのローカルロックモードをダウンコンバートし得、同時に、ホルダ４２０は、マスタ４１０のロック構造内のリクエスタ４３０のロックモードも更新し得るためである。
【００４６】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、２つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＬＡＭ、ＴＢＭ）である。全トラフィックも、２つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＬＡＭ、ＴＢＭ）である。ＬＡＭが除去されると、呼出し時間は、１つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＴＢＭ）であり、全トラフィックも、１つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＴＢＭ）である。メッセージＩＬＨは、呼出し時間または全トラフィックの一部として考えられない。なぜならば、ＩＬＨは、同じノード上のプロセス間にあり、したがって、手続の呼出として扱われるためである。
【００４７】
Ｓロックのリクエスタおよび多数の共有ロックホルダ
図５Ａは、マスタ５００、２つのホルダ（ボックス５１０および５３０）、およびリクエスタ５２０が、クラスタ内の別個のノード上にある、クラスタを示すブロック図である。さらに、リクエスタ５２０は、Ｓロックを必要とし、ホルダ（ボックス５１０および５３０）は、既にＳロックを有する。リクエスタ５２０もＳロックを得るようにするために、２つのＳロックホルダ（ボックス５１０および５３０）は、それらのそれぞれのＳロックを放棄する必要はない。図５Ｂは、図５Ａ内に示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図５Ｂは、これらのメッセージに関連し得るパラメータも示す。リクエスタ５２０がこのデータ項目へのアクセスをＳモードで得ることができるように実行されるステップは、ノードＡおよびノードＣ上の共有ロックホルダ（ボックス５１０および５２０）のうちの１つのみをマスタ５００が選んでＩＬＨを送信すること以外は、図２Ａおよび図２Ｂと同じである。
【００４８】
図５Ａに示されるように、マスタ５００は、ＩＬＨをホルダ５１０に送信する。さまざまな方法が、マスタ５００によって用いられて、どのホルダ（５１０または５３０）にＩＬＨが送信されるべきかが選ばれ得る。このような２つの可能性は、以下のとおりである。
【００４９】
１）  最新の、Ｓロックを許可されたもの（grantee of the S lock）を選ぶ。なぜならば、それが、キャッシュ内にデータ項目を有する可能性がより高いためである。または、
２）  マスタと同じノード上にＳロックホルダが存在する場合、マスタと同じノード上にあるＳロックホルダを選んで、メッセージトラフィックを減じる。
どのホルダにＩＬＨを送信するべきかを選ぶための上述の可能性は、多数のホルダが存在する他のシナリオにも当てはまる。ここから、図５Ａおよび図５Ｂのステップは、それぞれ、図２Ａおよび図２Ｂと同じである。
【００５０】
多数の共有ロックホルダおよびＸロックのリクエスタ
図６Ａは、マスタ６００、３つのホルダ（ボックス６１０、６２０、６３０）、およびリクエスタ６４０が、クラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。リクエスタ６４０は、Ｘロックを必要とし、３つのホルダ（ボックス６１０、６２０、６３０）は、既にＳロックを有する。リクエスタ６４０がＸロックを得るためには、３つのホルダ（ボックス６１０、６２０、６３０）は、それらのそれぞれのＳロックを放棄する必要がある。図６Ｂは、図６Ａ内に示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図６Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００５１】
リクエスタ６４０がこのデータ項目へのアクセスをＸモードで得ることができるように、以下のステップが実行される。
【００５２】
１）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＸロックを得るために、リクエスタボックス６４０は、ＬＲＭをマスタ６００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所およびリクエスタ６４０がＳロックを必要とすることを表わす所望のロックモードが付随する。
【００５３】
２）  マスタがＢＩＬＨを１つのホルダ以外のすべてのホルダに送信する
マスタ６００がＬＲＭを受信すると、マスタ６００は、１つ（ホルダ６３０）以外のすべてのホルダ（ボックス６１０、６２０）にＢＩＬＨを同時に送信して、専有モードでデータ項目を必要とするリクエスタ６４０が存在することを他のホルダ（ボックス６１０、６２０）に知らせる。
【００５４】
３）  知らせを受けたホルダは、ＵＬＭを用いてマスタに応答する
知らせを受けたホルダ（ボックス６１０、６２０）は、それらのそれぞれのＳロックをリリースし、それらのロック（たとえば、６１０および６２０上のホルダ）がリリースされたことを示すＵＬＭを用いてマスタ６００に応答し返す。ＵＬＭは、知らせを受けたホルダ（ボックス６１０、６２０）によって、ほぼ同時にマスタ６００へと送り出される。
【００５５】
４）  マスタがＩＬＨを最後のホルダに送信する
マスタ６００がＵＬＭのうちの最後のＵＬＭを受信すると、マスタ６００は、このシナリオではホルダ６３０である、Ｓロックホルダのうちの最後のホルダにＩＬＨを送信して、専有モード（たとえば、Ｘロック）でデータ項目を必要とするリクエスタ６４０が存在することをこの最後のホルダ６３０に知らせる。
【００５６】
５）  最後のホルダがＴＢＭをリクエスタに送信する
最後のホルダ６３０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス６４０）を用いてＴＢＭとともに転送する。この最後のホルダ６３０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ６４０に転送する。Ｘロックのリクエスタ６４０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを除去する。さらに、ホルダ６３０はＳロックを有しており、他のホルダは、Ｘロックが保持されている同じときに他のいずれのロックも保持し得ないため、最後のホルダ６３０は、データ項目をリクエスタ６４０に転送する際に、そのＳロックをリリースする。
【００５７】
６）  リクエスタがＬＡＭをマスタに送信する
リクエスタ６４０は、ＬＡＭをマスタ６００に送信して、リクエスタ６４０へと転送された、データ項目に対するＸロックを、リクエスタ６４０がとったことを表わす。
【００５８】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、４つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＢＩＬＨ、ＵＬＭ、ＩＬＨ、ＴＢＭ）である。全トラフィックは、Ｓロックホルダの数に左右される。
【００５９】
マスタは、ロック取得メッセージの前に、ロックリクエストメッセージを受信する
図７Ａは、マスタ７００、ホルダ７１０、およびリクエスタ７２０がクラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。さらに、リクエスタ７２０は、Ｘロックを必要とし、ホルダ７１０は、既にＸロックを有する。図７Ｂは、図７Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図７Ｂは、これらのメッセージに関連し得るパラメータも示す。ホルダ７１０は、現在、データ項目およびこのデータ項目に対するＸロックを有する。続いて、リクエスタ７２０は、このデータ項目へのアクセスおよびそれに対するＸロックを必要とする。
【００６０】
リクエスタ７２０がこのデータ項目へのアクセスをＸモードで得ることができるように、以下のステップが実行される。
【００６１】
１）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＸロックを得るために、リクエスタ７２０は、ＬＲＭをマスタ７００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所およびリクエスタ７２０がＸロックを必要とすることを表わす所望のロックモードが付随する。
【００６２】
２）  マスタがＩＬＨをホルダに送信する
マスタ７００がＬＲＭを受信すると、マスタ７００は、ＩＬＨをホルダ７１０に送信して、専有モードでデータ項目を必要とするリクエスタ７２０が存在することをホルダ７１０に知らせる。
【００６３】
３）  ホルダがＴＢＭをリクエスタに送信する
ホルダ７１０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス７２０）を用いてＴＢＭとともに転送する。ホルダ７１０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ７２０に転送する。Ｘロックのリクエスタ７１０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを除去する。さらに、ホルダ７１０がＸロックを有しており、Ｘロックが保持されているのと同じときに他のホルダは他のいずれのロックも保持し得ないため、ホルダ７１０は、データ項目を転送する際に、そのＸロックをリリースする。Ｘロックのホルダ７１０は、ＤＣＭを用いてマスタ７００にリリースを知らせない。
【００６４】
４）  リクエスタは、ＬＡＭをマスタに送信するが、マスタは、それをＬＲＭの後に受信する
ａ）  リクエスタ７２０は、ＬＡＭをマスタ７００に送信して、リクエスタ７２０へと転送されたデータ項目に対するＸロックをリクエスタ７２０がとったことを示す。
【００６５】
ｂ）  しかしながら、もはや、それがホルダであるとみなしていないホルダ７１０は、リクエスタ７２０が送信したＬＡＭをマスタ７００が受信し得る前に、ＬＲＭを送信して、この同じデータ項目に対して再びＸロックをリクエストする。
【００６６】
５）  マスタがＬＳＭをホルダに送信する
マスタ７００が、ホルダ７１０からＬＲＭ（図７Ａのメッセージ４ｂを指す）を受取ると、マスタ７００は、ノードＣ上のマスタのロック記録（ボックス７００）とノードＡ上のホルダのロック記録（ボックス７１０）との間で、関連のデータ項目に関して不整合が存在すると判断する。この時点では、マスタ７００は、新しいホルダ７２０がノードＢ上に存在することを示すＬＡＭを待っている。しかしながら、マスタ７００が実際にこのＬＡＭを受信するまで、マスタのロック記録（ボックス７００）は、依然として、ホルダ７１０がノードＡ上にあることを示す。ロック記録を同じにするために、マスタ７００は、マスタの、記録されたロックモードとともにＬＳＭをノードＡ上のホルダ７１０に送信する。
【００６７】
６）  ホルダがＬＳＭをマスタに送信する
ホルダ７１０がマスタ７００からＬＳＭを受信すると、ホルダ７１０は、ホルダの、記録されたロックモード（ボックス７１０）が、このデータ項目に関して、マスタの、記録されたロックモード（ボックス７００）と同じでないことを判断する。ホルダ７１０は、このデータ項目に関する、ホルダの、記録されたロックモード（ボックス７１０）とともにＬＳＭをマスタ７００に送信することによって、この判断に応答する。マスタ７００がホルダ７１０からＬＳＭを受信すると、マスタ７００とホルダ７１０とは、このデータ項目に関連するロックモードに関して同じにされる。
【００６８】
マスタがリクエスタ７２０からＬＡＭを受信すると、マスタ７００は、そのロック情報を変更して、リクエスタ７２０がＸロックを有することを表わし、リクエスタ７２０にＩＬＨを送信して、新しいリクエスタ（前のホルダ）７２０がロックを望むことを新しいホルダ（前のリクエスタ）７２０に知らせる。ここから、通常の態様で、処理が続けられる。
【００６９】
ステップ５および６は、正確な結果をもたらすが、ステップ５および６は、必須ではない。マスタ７００がＬＲＭ（４ｂ）を受信するとき、マスタ７００は、正しいロック状態を判断し、マスタ７００のローカルロック状態を暗黙的に更新してもよい。これは、ホットブロックに関して特に重要である。なぜならば、前のホルダ７１０がＴＢＭ（３）の直後にリクエストを送信する確率が高いためである。
【００７０】
データ転送中の切断
図８Ａは、マスタ８００、ホルダ８１０、およびリクエスタ８２０がクラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。さらに、データ項目の送信は、リクエスタ８２０に到達しない。本発明のこの実施例を論じる目的では、ロックモードは、問題とはならない。図８Ｂは、図８Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図８Ｂは、これらのメッセージに関連し得るパラメータも示す。ホルダ８１０は、現在、データ項目およびこのデータ項目に対するＸロックを有する。続いて、リクエスタ８２０は、このデータ項目へのアクセスおよびそれに対するロックを必要とする。リクエスタ８２０がこのデータ項目へのアクセスおよび適切なロックを得ることができるように、以下のステップが実行される。
【００７１】
１）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＳロックを得るために、リクエスタ８２０は、ＬＲＭをマスタ８００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所および所望のロックモードが付随する。
【００７２】
２）  マスタがＩＬＨをホルダに送信する
マスタ８００がＬＲＭを受信すると、マスタ８００は、ＩＬＨをホルダ８１０に送信して、示されるロックモードでデータ項目を必要とするリクエスタ８２０が存在することをホルダ８１０に知らせる。
【００７３】
３）  ホルダがＴＢＭをリクエスタに送信する
ホルダ８１０は、リクエストされたデータ項目をリクエスタの（ボックス８２０）記憶場所を用いてＴＢＭとともに転送する。しかしながら、あるエラーのために、リクエストされたデータ項目の転送は、完了されない。したがって、ロックのリクエスタ８２０は、データ項目の受信をロック許可として解釈することができない。さらに、ホルダ８１０は、ホルダ８２０がロックをとったことを表わすＬＡＭをマスタ８００に送信しない。
【００７４】
一実施例によると、この種のエラー状態は、ＩＬＨが送信されているエンティティが保持するロックモードに対するマスタの現在の認識をすべてのＩＬＨメッセージとともにマスタ８００に含ませることによって、対処される。たとえば、ホルダ８１０がリソース上で専有ロックを有することを、マスタ８００における情報が依然として示している場合、マスタ８００は、別のノードがそのリソース上のロックをリクエストするとき、ホルダ８１０にＩＬＨを送信する。マスタ８００は、そのＩＬＨとともに、ホルダ８１０がリソース上でＸロックを有することをマスタ８００が認識していることを表わすデータを含む。
【００７５】
ホルダ８１０が、ホルダ８１０のロックステータス記録に整合しないロックステータスとともにＩＬＨメッセージを受信すると、ホルダ８１０は、ＩＬＨを拒絶し、データ項目に対するホルダのロックステータスに関して、マスタ８００を更新し得る。たとえば、ホルダ８１０は、ＬＳＭをマスタ８００に送信してホルダ８１０がそのロックモードをダウングレードしたことを示すことによって、Ｘロックモードを表わすＩＬＨに応答し得る。ＴＢＭが来ないことをリクエスタ８２０が判断すると、リクエスタ８２０は、ＬＲＭをマスタ８００に再送信することによって、再試行する。
【００７６】
多数のＳロックリクエスタ
図９Ａは、マスタ９００、ホルダ９１０、および２つのリクエスタ（ボックス９２０および９３０）が、クラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。さらに、リクエスタ９２０および９３０は、Ｓロックを必要とし、ホルダ９１０は、既にＸロックを有する。リクエスタ９２０および９３０は、それらのＳロックリクエストをほぼ同時に送信し、マスタ９００は、Ｓロックリクエストをほぼ同時に受信する。図９Ｂは、図９Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図９Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００７７】
リクエスタ９２０および９３０がこのデータ項目へのアクセスをＳモードで得ることができるように、以下のステップが実行される。
【００７８】
１）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＳロックを得るために、リクエスタ９２０および９３０は、ＬＲＭをマスタ９００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される、リクエスタ９２０および９３０に関連した記憶場所およびリクエスタ９２０および９３０がＳロックを必要とすることを示す所望のロックモードが付随する。マスタは、ほぼ同時に、リクエスタ９２０および９３０からＬＲＭを受信する。
【００７９】
２）  マスタがＩＬＨをホルダに送信する
マスタ９００がＬＲＭを受信すると、マスタ９００は、ＩＬＨをホルダ９１０に送信して、共有モードでデータ項目を必要とする２つのリクエスタ９２０および９３０が存在することをホルダ９１０に知らせる。リクエスタ９２０および９３０の各々のために別個のＩＬＨをホルダ９１０へと送り出すのではなく、マスタ９００は、データ項目がコピーされる必要のある、リクエスタ９２０と９３０との両方のための記憶場所を１つのＩＬＨ内に含むことによって、リクエストを１つのＩＬＨにまとめる。
【００８０】
３）  ホルダがＴＢＭをリクエスタに送信する
ホルダ９１０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス９２０および９３０）を用いてＴＢＭとともに転送する。ホルダ９１０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ９２０および９３０に転送する。
【００８１】
Ｓロックのリクエスタ９２０および９３０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを待つ必要性をなくす。さらに、ホルダ９１０はＸロックを有しており、Ｘロックが保持されるのと同じときに他のホルダは他のいずれのロックも保持し得ないため、ホルダ９１０は、データ項目を転送する際に、そのロックをＸロックからＳロックへとダウンコンバートする。一実施例に従うと、このダウンコンバートは、ホルダ９１０上で局所的に維持されるロック情報を変更することによって実行されるが、ホルダ９１０は、ＤＣＭを用いてこのダウンコンバージョンをマスタ９００に知らせない。
【００８２】
４）  リクエスタがＬＡＭをマスタに送信する
リクエスタ９２０および９３０は、ＬＡＭをマスタ９００に送信して、リクエスタ９２０および９３０が、ホルダ９１０が転送したデータ項目に対してそれらのそれぞれのＳロックをとったことを示す。ＬＡＭに応答して、マスタ９００は、データ項目に対するそのロック情報を修正して、リクエスタ９２０、リクエスタ９３０、およびホルダ９１０が、データ項目上でＳロックを有することを表わす。
【００８３】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、２つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＩＬＨ、ＴＢＭ）である。全トラフィックは、５つの小さなメッセージおよび２つのデータ項目転送（たとえば、２つのＬＲＭ、１つのＩＬＨ、２つのＬＡＭ、および２つのＴＢＭ）である。
【００８４】
ロックリクエストメッセージのタイミング問題
図１０Ａは、マスタ１０００、ホルダ１０１０、およびリクエスタ１０２０がクラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。ホルダ１０１０は、Ｓロックを有し、ロックモードをＸロックにまで上げる必要がある。さらに、リクエスタ１０２０も、Ｘロックを必要とする。このシナリオにおいて注目される１つのポイントは、マスタ１０００が、リクエスタ１０２０からＬＲＭを受信し、その直後、ホルダ１０１０のロックモードをＳからＸに上げることをリクエストするホルダ１０１０からＬＲＭを受信することである。図１０Ｂは、図１０Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図１０Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００８５】
ホルダ１０１０は、現在、データ項目およびこのデータ項目に対するＳロックを有する。ホルダ１０１０とリクエスタ１０２０との両方が、このデータ項目に対するアクセスを専有モードで必要としており、したがって、このデータ項目に対してＸロックを必要とする。リクエスタ１０２０がこのデータ項目に対するアクセスをＸモードで得ることができるように、以下のステップが実行される。
【００８６】
１ａ）  リクエスタがＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、このデータ項目に対してＸロックを得るために、リクエスタ１０２０は、ＬＲＭをマスタ１０００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所およびリクエスタ１０２０がＸロックを必要とすることを示す所望のロックモードが付随する。
【００８７】
１ｂ）  ロックをＳからＸに上げるために、ホルダは、ＬＲＭをマスタに送信する
ホルダ１０１０が既にＳモードで有しているデータ項目上で専有モードを得るために、ホルダ１０１０は、このデータ項目に対するロックモードをＳからＸに上げることをリクエストするＬＲＭをマスタ１０００に送信する。しかしながら、マスタ１０００は、ホルダ１０１０のＬＲＭを受信する前に、リクエスタ１０２０のＬＲＭを既に受信していた。
【００８８】
２）  マスタがＩＬＨをホルダに送信する
マスタ１０００がリクエスタ１０２０からＬＲＭを受信すると、マスタ１０００は、ＩＬＨをホルダ１０１０に送信して、専有モードでデータ項目を必要とするリクエスタ１０２０が存在することをホルダ１０１０に知らせる。ホルダ１０１０は、それ自体とリクエスタ１０２０との間に矛盾が存在することを認識する。
【００８９】
３）  ホルダがＴＢＭをリクエスタに送信する
ホルダ１０１０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス１０２０）を用いてＴＢＭとともに転送する。ホルダ１０１０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ１０２０に転送する。
【００９０】
ロックのリクエスタ１０２０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを待つ必要性をなくす。さらに、ホルダ１０１０はＸロックを有しており、Ｘロックが保持されているのと同じときには、他のホルダは、他のいずれのロックも保持し得ないため、ホルダ１０１０は、データ項目をリクエスタ１０２０に転送する際に、そのロックを放棄する。Ｘロックのホルダ１０１０は、ホルダ１０１０がそのロックを放棄したという事実をＤＣＭを用いてマスタ１０００に知らせることはない。
【００９１】
４）  ホルダがＬＲＭをマスタに再送信する
この時点で、もはやホルダではないホルダ１０１０は、別のＬＲＭをマスタ１０００に送信することによって、問題となっているデータ項目に対するＸロックを得ることを再び試みる。しかしながら、リクエスタ１０２０が既に、このデータ項目に対するＸロックを有する。したがって、この時点では、以前のホルダ１０１０は、他のいずれかの新しいリクエスタのように扱われ、以前のホルダ１０１０の新しいリクエストは、他の任意のペンディングリクエストの後ろで待ち行列に入れられる。
【００９２】
５）  リクエスタがＬＡＭをマスタに送信する
リクエスタ１０２０は、ＬＡＭをマスタ１０００に送信し、ホルダ１０１０によって転送されたデータ項目に対するＸロックをリクエスタ１０２０がとったことを表わす。ＬＡＭに応答して、マスタ１０００は、データ項目に対するそのロック情報を修正して、以前のホルダ１０１０は、もはやこのデータ項目上でロックを有さず、リクエスタ１０２０がこの同じデータ項目上でＸロックを有することを表わす。マスタ１０００がリクエスタ１０２０からＬＡＭを受信した後、マスタ１０００は、現在はリクエスタであるノードＡ  １０１０を他のいずれかのリクエスタのように扱う。したがって、マスタ１０００は、ノードＡ  １０１０の代わりに、ノードＢ  １０２０にＩＬＨを送信する。
【００９３】
このシナリオでは、呼出し時間、または、最初のリクエスト（たとえば、ＬＲＭ）からデータ項目が用いられ得るとき（たとえば、ＴＢＭの完了）までの時間は、２つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＩＬＨ、ＴＢＭ）である。全トラフィックは、３つの小さなメッセージおよび１つのデータ項目転送（たとえば、ＬＲＭ、ＩＬＨ、ＬＡＭ、およびＴＢＭ）である。
【００９４】
ロックステータスの不整合
図１１Ａは、マスタ１１００、６２０ホルダ（ボックス１１１０および１１２０）、およびリクエスタ１１３０がクラスタ内の別個のノード上に存在する、クラスタを示すブロック図である。２つのホルダ（ボックス１１１０および１１２０）は、既にＳロックを有する。ホルダ１１１０は、ロックモードをＳからＸに上げることをリクエストする。さらに、リクエスタ１１３０は、Ｘロックを必要とする。リクエスタ１１３０がＸロックを得るためには、２つのホルダ（ボックス１１１０および１１２０）は、それらのそれぞれのＳロックを放棄する必要がある。図１１Ｂは、図１１Ａに示されるシナリオによって用いられ得るメッセージのスクリプトを示す。図１１Ｂは、これらのメッセージに関連し得るパラメータも示す。
【００９５】
リクエスタ１１３０がこのデータ項目へのアクセスをＸモードで得ることができるように、以下のステップが実行される。
【００９６】
１）  リクエスタがＬＲＭをマスタに送信し、ホルダもＬＲＭをマスタに送信する
データ項目へのアクセスをリクエストし、さらにはこのデータ項目に対してＸロックを得るために、リクエスタ１１３０は、ＬＲＭをマスタ１１００に送信する。ＬＲＭには、リクエストされたデータ項目が最終的に転送される記憶場所およびリクエスタ１１３０がＸロックを必要とすることを表わす所望のロックモードが付随する。
【００９７】
ほぼ同時に、ホルダ１１１０も、ＬＲＭをマスタ１１００に送信し、ホルダ１１１０のロックがＳからＸに上げられることをリクエストする。しかしながら、このシナリオに従うと、ホルダ１１１０が送信するＬＲＭは、マスタ１１００への到着が遅れる。ＬＲＭは、ホルダ１１１０がＬＲＭを送信したときの、ホルダ１１１０の所望のロックモードと現在のロックモードとの両方を含む。
【００９８】
２）  マスタがＢＩＬＨを１つのホルダ以外のすべてのホルダに送信する
マスタ１１００がＬＲＭを受信すると、マスタ１１００は、ＢＩＬＨを１つ（ホルダ１１２０）以外のすべてのホルダ（ボックス１１１０）に同時に送信して、専有モードでデータ項目を必要とするリクエスタ１１３０が存在することを他のホルダ（ボックス１１１０）に知らせる。
【００９９】
３）  知らせを受けたホルダは、ＵＬＭとともにマスタに応答する
知らせを受けたホルダ１１１０は、ホルダ１１１０が保持するＳロックをリリースし、ホルダ１１１０がロックをリリースしたことを表わすＵＬＭとともに、マスタ１１００に応答し返す。ホルダ１１１０は、ＵＬＭをマスタ１１００に送信する。マスタ１１００は、マスタ１１００が担当するすべてのエンティティに関するロックモードを維持するため、マスタ１１００は、マスタ１１００上に存在するホルダ１１１０のロックモードを更新して、マスタ１１００がホルダ１１１０からＬＲＭを受信するとき、ホルダ１１１０がロックをリリースしたこと（たとえば、ナル）を示す。
【０１００】
４）  マスタがＩＬＨを最後のホルダに送信する
マスタ１１００がＵＬＭを受信すると、マスタ１１００は、このシナリオではホルダ１１２０である、Ｓロックホルダのうちの最後のホルダにＩＬＨを送信して、専有モード（たとえば、Ｘロック）でデータ項目を必要とするリクエスタ１１３０が存在することをこの最後のホルダ１１２０に知らせる。
【０１０１】
５）  最後のホルダがＴＢＭをリクエスタに送信する
最後のホルダ１１２０は、リクエストされたデータ項目をリクエスタの記憶場所（ボックス１１３０）を用いてＴＢＭとともに転送する。この最後のホルダ１１２０は、メモリからメモリへの転送を実行して、データ項目をリクエスタ１１３０に転送する。Ｘロックのリクエスタ１１３０は、データ項目の受信をロック許可として解釈し、ＬＧＭおよびＤＣＭを除去する。さらに、ホルダ１１２０がＳロックを有しており、Ｘロックが保持されているのと同じときには、他のホルダは他のいずれのロックも保持し得ないため、最後のホルダ１１２０は、データ項目をリクエスタ１１３０に転送する際に、そのＳロックをリリースする。
【０１０２】
６）  リクエスタがＬＡＭをマスタに送信する
リクエスタ１１３０は、ＬＡＭをマスタ１１００に送信し、リクエスタ１１３０へと転送されたデータ項目に対するＸロックを、リクエスタ１１３０がとったことを表わす。
【０１０３】
７）  マスタが以前のホルダからＬＲＭを受信する
この時点で、以前のホルダ１１１０からのＬＲＭが、マスタ１１００に到着する。マスタ１１００は、ホルダ１１１０はリリースまたはナルのロックモードを有するとみなす。しかしながら、ホルダ１１１０が送信したＬＲＭは、ホルダ１１１０の現在のノードはＳであることを示す。なぜならば、ホルダ１１１０がＬＲＭを送信したときには、ホルダ１１１０のロックモードはＳであったためである。したがって、マスタ１１００およびホルダ１１１０は、ロックステータスメッセージ（たとえば、ＬＳＭ）を交換することによって、互いを更新する。
【０１０４】
８）  マスタがＬＳＭを以前のホルダに送信する
マスタ１１００は、マスタ１１００の認識に従ったロックモードとともに、ＬＳＭをホルダ１１１０に送信する。
【０１０５】
９）  以前のホルダがＬＳＭをマスタに送信する
ホルダ１１１０は、ホルダ１１１０の認識に従ったロックモードとともに、ＬＳＭをマスタ１１００に送信する。次に、マスタ１１０およびホルダ１１１０は、最初にリクエストされたデータ項目のロックのモードに関して同じにされる。
【０１０６】
ハードウェア概要
図１２は、この発明の実施例が実現され得るコンピュータシステム１２００を例示するブロック図である。コンピュータシステム１２００は、情報を伝達するためのバス１２０２または他の通信メカニズムと、情報を処理するためにバス１２０２に結合されるプロセッサ１２０４とを含む。コンピュータシステム１２００は、プロセッサ１２０４によって実行されるべき情報および命令を記憶するための、バス１２０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置等のメインメモリ１２０６も含む。メインメモリ１２０６は、プロセッサ１２０４によって実行されるべき命令の実行中に一時変数または他の中間情報を記憶するためにも用いられ得る。コンピュータシステム１２００は、プロセッサ１２０４のための命令および静的情報を記憶するための、バス１２０２に結合されるリードオンリメモリ（ＲＯＭ）１２０８または他の静的記憶装置をさらに含む。磁気ディスクまたは光ディスク等の記憶装置１２１０が設けられ、バス１２０２に結合されて、情報および命令を記憶する。
【０１０７】
コンピュータシステム１２００は、情報をコンピュータユーザに対して表示するための陰極線管（ＣＲＴ）等のディスプレイ１２１２にバス１２０２を介して結合され得る。英数字および他のキーを含む入力装置１２１４が、バス１２０２に結合されて、情報およびコマンド選択をプロセッサ１２０４に伝達する。別の種類のユーザ入力装置は、方向情報およびコマンド選択をプロセッサ１２０４に伝達し、さらにはディスプレイ１２１２上でのカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キー等のカーソル制御部１２１６である。この入力装置は、通例、２つの軸、第１の軸（たとえば、ｘ）および第２の軸（たとえば、ｙ）による２自由度を有し、これは、装置が平面において位置を特定することを可能にする。
【０１０８】
この発明は、ｐｉｎｇに関連したオーバーヘッドを減じるためのコンピュータシステム１２００の使用に関する。この発明の一実施例に従うと、ｐｉｎｇに関連したオーバーヘッドは、プロセッサ１２０４が、メインメモリ１２０６内に含まれる１つ以上の命令の１つ以上のシーケンスを実行したことに応答して、コンピュータシステム１２００によって減じられる。このような命令は、記憶装置１２１０等の別のコンピュータ読出可能な媒体からメインメモリ１２０６上に読出され得る。メインメモリ１２０６内に含まれる命令シーケンスの実行は、プロセッサ１２０４に、ここで説明されるプロセスステップを実行させる。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合わせて、ハードワイヤード回路が用いられて、この発明が実現され得る。したがって、この発明の実施例は、いずれかの特定の組合せのハードウェア回路およびソフトウェアに限定されるわけではない。
【０１０９】
ここで用いられるような用語「コンピュータ読出可能な媒体」は、実行のために命令をプロセッサ１２０４に提供することに関与するいずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むが、それらに限定されているわけではない多くの形をとり得る。不揮発性媒体は、たとえば、記憶装置１２１０等の光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ１２０６等のダイナミックメモリを含む。送信媒体は、バス１２０２を含むワイヤを含んだ、同軸ケーブル、銅線、および光ファイバを含む。送信媒体は、電波および赤外線データ通信中に生成されるような音波または光波の形もとり得る。
【０１１０】
一般的な形のコンピュータ読出可能な媒体は、たとえば、フロッピー（Ｒ）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他のいずれかの磁気媒体、ＣＤ−ＲＯＭ、他のいずれかの光媒体、パンチカード、紙テープ、孔のパターンを備えた他のいずれかの物理的な媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のいずれかのメモリチップまたはカートリッジ、以下で説明されるような搬送波、またはコンピュータが読出すことのできる他のいずれかの媒体を含む。
【０１１１】
さまざまな形のコンピュータ読出可能な媒体は、実行のために１つ以上の命令の１つ以上のシーケンスをプロセッサ１２０４に運ぶことに関与し得る。たとえば、命令は、最初はリモートコンピュータの磁気ディスク上で保持され得る。リモートコンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信し得る。コンピュータシステム１２００にとってローカルであるモデムが、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し得る。赤外線検出器が、赤外線信号で運ばれるデータを受信し、適切な回路がデータをバス１２０２上に置き得る。バス１２０２は、データをメインメモリ１２０６へと運び、ここから、プロセッサ１２０４が命令を取出し実行する。メインメモリ１２０６が受取る命令は、プロセッサ１２０４による実行の前または後のいずれかに、記憶装置１２１０上に任意で記憶され得る。
【０１１２】
コンピュータシステム１２００は、１つ以上の記憶装置（たとえば、ディスクドライブ１２５５）上のデータがコンピュータシステム１２００と１つ以上の他のＣＰＵ（たとえば、ＣＰＵ１２５１）との両方にとってアクセス可能である、共有ディスクシステムに属する。例示されるシステムでは、ディスクドライブ１２５５への共有アクセスは、システムエリアネットワーク１２５３によって提供される。しかしながら、さまざまなメカニズムが代わりに用いられて共有アクセスを提供してもよい。
【０１１３】
コンピュータシステム１２００は、バス１２０２に結合される通信インターフェイス１２１８も含む。通信インターフェイス１２１８は、ローカルネットワーク１２２２に接続されるネットワークリンク１２２０に双方向データ通信結合を提供する。たとえば、通信インターフェイス１２１８は、統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであって、データ通信接続を対応する種類の電話線に提供し得る。別の例として、通信インターフェイス１２１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、データ通信接続を互換性のあるＬＡＮに提供し得る。ワイヤレスリンクも実現され得る。このようないずれかの実現例では、通信インターフェイス１２１８は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を送受信する。
【０１１４】
ネットワークリンク１２２０は、通例、１つ以上のネットワークを通して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク１２２０は、インターネットサービスプロバイダ（ＩＳＰ）１２２６によって作動させられるデータ装置またはホストコンピュータ１２２４への接続をローカルネットワーク１２２２を通して提供し得る。ＩＳＰ１２２６は、一般に現在「インターネット」１２２８と呼ばれるワールドワイドパケットデータ通信ネットワークを通してデータ通信サービスを提供する。ローカルネットワーク１２２２およびインターネット１２２８は両方とも、デジタルデータストリームを運ぶ電気信号、電磁信号、または光信号を用いる。コンピュータシステム１２００へと、および、コンピュータシステム１２００からデジタルデータを運ぶ、ネットワークリンク１２２０上にあり通信インターフェイス１２１８を通る信号およびさまざまなネットワークを通る信号は、情報を運ぶ搬送波の例示的な形である。
【０１１５】
コンピュータシステム１２００は、ネットワーク、ネットワークリンク１２２０、および通信インターフェイス１２１８を通して、プログラムコードを含むメッセージを送信し、プログラムコードを含むデータを受信し得る。インターネットの例では、サーバ１２３０が、アプリケーションプログラムのためのリクエストされたコードをインターネット１２２８、ＩＳＰ  １２２６、ローカルネットワーク１２２２、および通信インターフェイス１２１８を通して送信し得る。
【０１１６】
コードが受信されると、受信されたコードは、プロセッサ１２０４によって実行され得、および／または、後の実行のために、記憶装置１２１０または他の不揮発性記憶装置に記憶され得る。この様態で、コンピュータシステム１２００は、搬送波の形でアプリケーションコードを得ることができる。
【０１１７】
上の明細書では、この発明は、その具体的な実施例を参照しながら説明されてきた。しかしながら、この発明のより広い思想および範囲から逸脱することなく、それに対してさまざまな変形例および変更例が作成され得ることは明らかであろう。したがって、明細書および図面は、限定的な意味ではなく、例示的な意味で理解されるべきである。
【図面の簡単な説明】
【０１１８】
【図１Ａ】最新バージョンのデータ項目の、キャッシュからキャッシュへの転送およびこのデータ項目に関連したロックを例示するブロック図である。
【図１Ｂ】図１Ａに対応するメッセージスクリプトを示す図である。
【図２Ａ】クラスタ内の別個のノード上のマスタ、ホルダ、およびリクエスタを例示するブロック図である。
【図２Ｂ】図２Ａに対応するメッセージスクリプトを示す図である。
【図３Ａ】同じノード上のマスタおよびリクエスタを例示するブロック図である。
【図３Ｂ】図３Ａに対応するメッセージスクリプトを示す図である。
【図４Ａ】同じノード上のマスタおよびホルダを例示するブロック図である。
【図４Ｂ】図４Ａに対応するメッセージスクリプトを示す図である。
【図５Ａ】共有ロックのリクエスタおよび多数の共有ロックホルダを例示するブロック図である。
【図５Ｂ】図５Ａに対応するメッセージスクリプトを示す図である。
【図６Ａ】専有ロックのリクエスタおよび多数の共有ロックホルダを例示するブロック図である。
【図６Ｂ】図６Ａに対応するメッセージスクリプトを示す図である。
【図７Ａ】マスタが、ロック取得メッセージを受信する前にロックリクエストメッセージを受信する状態を例示するブロック図である。
【図７Ｂ】図７Ａに対応するメッセージスクリプトを示す図である。
【図８Ａ】データ項目の転送中の切断をどのように扱うかを例示するブロック図である。
【図８Ｂ】図８Ａに対応するメッセージスクリプトを示す図である。
【図９Ａ】１つよりも多くの共有ロックリクエスタからの並行するロックリクエストをどのように扱うかを例示するブロック図である。
【図９Ｂ】図９Ａに対応するメッセージスクリプトを示す図である。
【図１０Ａ】ロックリクエストメッセージに関するタイミング問題をどのように扱うかを例示するブロック図である。
【図１０Ｂ】図１０Ａに対応するメッセージスクリプトを示す図である。
【図１１Ａ】ロックステータスの不整合をどのように扱うかを例示するブロック図である。
【図１１Ｂ】図１１Ａに対応するメッセージスクリプトを示す図である。
【図１２】この発明の実施例が実現され得るコンピュータシステムのブロック図である。
【図１Ａ】
2004529443.tif 000003
【図１Ｂ】
2004529443.tif 000004
【図２Ａ】
2004529443.tif 000005
【図２Ｂ】
2004529443.tif 000006
【図３Ａ】
2004529443.tif 000007
【図３Ｂ】
2004529443.tif 000008
【図４Ａ】
2004529443.tif 000009
【図４Ｂ】
2004529443.tif 000010
【図５Ａ】
2004529443.tif 000011
【図５Ｂ】
2004529443.tif 000012
【図６Ａ】
2004529443.tif 000013
【図６Ｂ】
2004529443.tif 000014
【図７Ａ】
2004529443.tif 000015
【図７Ｂ】
2004529443.tif 000016
【図８Ａ】
2004529443.tif 000017
【図８Ｂ】
2004529443.tif 000018
【図９Ａ】
2004529443.tif 000019
【図９Ｂ】
2004529443.tif 000020
【図１０Ａ】
2004529443.tif 000021
【図１０Ｂ】
2004529443.tif 000022
【図１１Ａ】
2004529443.tif 000023
【図１１Ｂ】
2004529443.tif 000024
【図１２】
2004529443.tif 000025
【国際公開パンフレット】
2004529443.tif 000026
2004529443.tif 000027
2004529443.tif 000028
2004529443.tif 000029
2004529443.tif 000030
2004529443.tif 000031
2004529443.tif 000032
2004529443.tif 000033
2004529443.tif 000034
2004529443.tif 000035
2004529443.tif 000036
2004529443.tif 000037
2004529443.tif 000038
2004529443.tif 000039
2004529443.tif 000040
2004529443.tif 000041
2004529443.tif 000042
2004529443.tif 000043
2004529443.tif 000044
2004529443.tif 000045
2004529443.tif 000046
2004529443.tif 000047
2004529443.tif 000048
2004529443.tif 000049
2004529443.tif 000050
2004529443.tif 000051
2004529443.tif 000052
2004529443.tif 000053
2004529443.tif 000054
2004529443.tif 000055
2004529443.tif 000056
2004529443.tif 000057
2004529443.tif 000058
2004529443.tif 000059
2004529443.tif 000060
2004529443.tif 000061
2004529443.tif 000062
2004529443.tif 000063
2004529443.tif 000064
2004529443.tif 000065
2004529443.tif 000066
2004529443.tif 000067
2004529443.tif 000068
2004529443.tif 000069
2004529443.tif 000070
2004529443.tif 000071
2004529443.tif 000072
2004529443.tif 000073
2004529443.tif 000074
2004529443.tif 000075
2004529443.tif 000076
2004529443.tif 000077
2004529443.tif 000078
2004529443.tif 000079
2004529443.tif 000080
2004529443.tif 000081
2004529443.tif 000082
2004529443.tif 000083
2004529443.tif 000084
2004529443.tif 000085
2004529443.tif 000086
2004529443.tif 000087
2004529443.tif 000088
2004529443.tif 000089
2004529443.tif 000090
2004529443.tif 000091
【国際公開パンフレット（コレクトバージョン）】
2004529443.tif 000092
2004529443.tif 000093
【手続補正書】
【提出日】平成15年9月26日(2003.9.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リソースへのアクセスを管理するための方法であって、前記方法は、
前記リソース上でのロックモードを求めてロックモードリクエストをリクエスタから前記リソースのマスタに送信する、コンピュータによって実現されるステップと、
前記リソースを前記リクエスタにおいて前記リソースのホルダから受信する、コンピュータによって実現されるステップと、
前記マスタからの明白なロックモード許可を受信することを待つことなく、前記リクエスタに対して前記ロックモードリクエストが許可されたかのように前記リソースにアクセスする、コンピュータによって実現されるステップとを含む、方法。
【請求項２】
前記リソースを前記リクエスタにおいて受信する前記ステップが起こるかを検出する、コンピュータによって実現されるステップと、
前記リクエスタが前記リソースを受信する場合、
前記リクエスタから前記マスタにロック取得メッセージを送信して、前記リクエスタが前記リソースに対するロックモードをとったことを前記マスタに知らせる、コンピュータによって実現されるステップとをさらに含む、請求項１に記載の方法。
【請求項３】
リソースへのアクセスを管理するための方法であって、前記方法は、
リクエスタが前記リソースを必要としているというインフォームロックホルダメッセージをホルダにおいて受信する、コンピュータによって実現されるステップを含み、前記ホルダは、現在、前記リソースおよび前記リソース上の第１のロックモードを保持し、前記方法はさらに、
前記インフォームロックホルダメッセージの受信に応答して、ステータスメッセージを前記リソースのマスタに送信することなく前記リソースを前記リクエスタに転送する、コンピュータによって実現されるステップを含み、前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージであり、前記方法はさらに、
前記ホルダが維持するロックモード記録を更新して、前記ホルダが前記リソースに対して前記第１のロックモードから第２のロックモードへとダウンコンバートしたことを表わす、コンピュータによって実現されるステップを含む、方法。
【請求項４】
更新ロックメッセージを前記マスタに送信する、コンピュータによって実現されるステップをさらに含み、前記更新ロックメッセージは、前記リソースに対する前記第２のロックモードを表わす、請求項３に記載の方法。
【請求項５】
請求項３に記載の方法であって、
送信側からのメッセージを前記ホルダにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記メッセージは、前記リソース上の第３のロックモードを含み、前記方法はさらに、
前記第１のロックモードと前記第３のロックモードとが整合しないことを検出する、コンピュータによって実現されるステップと、
ロックステータスメッセージを前記送信側に送信する、コンピュータによって実現されるステップとを含み、
前記ロックステータスメッセージは、前記第１のロックモードを含む、請求項３に記載の方法。
【請求項６】
前記リソースを複数のリクエスタに転送するために必要なすべての情報を含む、単一の一括されたインフォームロックホルダメッセージを前記ホルダにおいて受信する、コンピュータによって実現されるステップと、
前記リソースを前記複数のリクエスタに転送する、コンピュータによって実現されるステップとをさらに含む、請求項３に記載の方法。
【請求項７】
ロックアクセスメッセージを前記ホルダからマスタに送信する、コンピュータによって実現されるステップをさらに含む、請求項３に記載の方法。
【請求項８】
リソースへのアクセスを管理するための方法であって、前記方法は、
リクエスタが複数のリソースのうちのある特定のリソースを必要とすることを表わすリクエストメッセージをマスタにおいて受信する、コンピュータによって実現されるステップを含み、前記マスタは、前記複数のリソースに対応する複数のロックモード記録を維持し、前記方法はさらに、
前記マスタからホルダへとインフォームロックホルダメッセージを送信して、前記リクエスタが前記特定のリソースを必要としていることを前記ホルダに対して示す、コンピュータによって実現されるステップと、
前記リクエスタからロックアクセスメッセージを受信する、コンピュータによって実現されるステップとを含み、前記ロックアクセスメッセージは、前記リクエスタが前記特定のリソースに対するロックモードをとったことを表わし、前記方法はさらに、
前記ロックアクセスメッセージを受信したことに応答して、前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップを含み、
前記更新は、前記リクエスタが前記特定のリソース上で前記ロックモードをとったことを表わす、方法。
【請求項９】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録を受信したことに応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップは、前記特定のリソースに関連する前記ホルダからのいずれかのステータスメッセージを受信する前に実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項８に記載の方法。
【請求項１０】
前記ロックアクセスメッセージを受信したことに応答して前記複数のロックモード記録を受信したことに応答して前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行する、コンピュータによって実現されるステップは、前記特定のリソースに関連する前記ホルダからのステータスメッセージを受信することなく実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項８に記載の方法。
【請求項１１】
複数のリクエスタが前記特定のリソースを必要としていることを表わす複数のリクエストメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップと、
前記マスタから前記ホルダへと前記インフォームロックホルダメッセージを送信する、コンピュータによって実現されるステップとをさらに含み、前記インフォームロックホルダメッセージは、前記ホルダが前記特定のリソースを前記複数のリクエスタに転送するために必要な、前記複数のリクエストメッセージからのすべての情報を含む、請求項８に記載の方法。
【請求項１２】
請求項８に記載の方法であって、
送信側からのメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記メッセージは、前記特定のリソース上の第２のロックモードを含み、前記方法はさらに、
前記ロックモードと前記第２のロックモードとが整合しないことを検出する、コンピュータによって実現されるステップと、
ロックステータスメッセージを前記送信側に送信する、コンピュータによって実現されるステップとを含み、
前記ロックステータスメッセージは、前記ロックモードを含む、請求項８に記載の方法。
【請求項１３】
請求項８に記載の方法であって、
第２のリクエストメッセージを前記マスタにおいて受信する、コンピュータによって実現されるステップをさらに含み、
前記リクエストメッセージと前記第２のリクエストメッセージとは両方とも、専有ロックモードで前記リソースを求めるリクエストを含み、前記方法はさらに、
前記マスタが前記リクエスタから前記ロックアクセスメッセージを受信するまで、前記第２のリクエストメッセージを待ち行列に入れる、コンピュータによって実現されるステップを含む、請求項８に記載の方法。
【請求項１４】
請求項８に記載の方法であって、
複数のホルダから１つのホルダを指定する、コンピュータによって実現されるステップをさらに含み、前記複数のホルダはすべて、前記特定のリソースに対するそれぞれのロックモードを有し、前記方法はさらに、
複数のブロードキャストインフォームロックホルダメッセージを前記１つのホルダ以外の前記複数のホルダに送信し、前記リクエスタが前記特定のリソースを必要としていることを示す、コンピュータによって実現されるステップと、
前記１つのホルダ以外の前記複数のホルダから複数の更新ロックメッセージを受信する、コンピュータによって実現されるステップとを含み、
前記複数の更新ロックメッセージは、前記複数のホルダのそれぞれのロックモードを表し、
前記インフォームロックホルダメッセージを前記マスタから前記ホルダに送信するステップでは、前記インフォームロックホルダメッセージは、前記マスタから前記１つのホルダへと送信されて、前記リクエスタが前記特定のリソースを必要としていることを前記１つのホルダに対して示し、
前記複数のロックモード記録のうちのある特定のロックモード記録に対して更新を実行するステップでは、前記更新は、前記ロックアクセスメッセージの受信に応答して、ステータスメッセージを受信することなく実行され、
前記ステータスメッセージは、ダウンコンバートメッセージまたはリリースロックメッセージである、請求項８に記載の方法。
【請求項１５】
コンピュータシステムであって、
プロセッサと、
請求項１または２に記載の方法の、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶したメモリとを含む、コンピュータシステム。
【請求項１６】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリとを含み、前記メモリは、
リソースおよび前記リソース上の第１のロックモードと、
前記リソースに関連するロックモード記録とを含み、前記メモリは、
請求項３から７のいずれかに記載の方法の、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶した、コンピュータシステム。
【請求項１７】
コンピュータシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリとを含み、前記メモリは、
複数のリソースのうちのある特定のリソースのロックモードに対応する、複数のロックモード記録のうちのある特定のロックモード記録を含み、マスタが、前記複数のリソースに対応する前記複数のロックモード記録を維持し、前記メモリは、
請求項８から１４のいずれかに記載の方法の、コンピュータによって実現されるステップを前記プロセッサに実行させる前記コンピュータシステムの命令を記憶した、コンピュータシステム。
【請求項１８】
リソースへのアクセスを管理するための１つ以上の命令シーケンスを担持するコンピュータ読出可能な媒体であって、１つ以上のプロセッサによる前記１つ以上の命令シーケンスの実行は、前記１つ以上のプロセッサに請求項１から１４のいずれかに記載の方法を実行させる、コンピュータ読出可能な媒体。
【国際調査報告】
2004529443.tif 000094
2004529443.tif 000095
2004529443.tif 000096