(57)【要約】      （修正有）【課題】複数の仮想計算機によるロックをまとめて管理し、そのロックによって保護される共用データにアクセスするための技法を提供する。【解決手段】第１および第２の仮想計算機と、第１および第２の仮想計算機によって共用されるメモリを定義する。ロック構造は共用メモリ内に定義される。ロック構造は、共用メモリ内の共用データに関するロックのホルダをリストすることができる。第１の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得する。ロックを獲得した後、第１の仮想計算機は共用データにアクセスする。ロック構造および共用データは、第１の仮想計算機により直接アクセス可能である。第２の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得する。ロックを獲得した後、第２の仮想計算機は共用データにアクセスする。【選択図】図１
2004326753.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システムにおいて、前記コンピュータ・システムが、
前記共用メモリ内のロック構造であって、前記共用メモリ内の共用データに関するロックのホルダをリストすることができるロック構造を有し、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第１のプログラム機能と、前記共用データにアクセスするために前記第１の仮想計算機が前記ロックを獲得した後でアクティブになる第２のプログラム機能とを含み、前記ロック構造が前記第１のプログラム機能により直接アクセス可能であり、前記共用データが前記第２のプログラム機能により直接アクセス可能であり、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第３のプログラム機能と、前記共用データにアクセスするために前記第２の仮想計算機が前記ロックを獲得した後でアクティブになる第４のプログラム機能とを含み、前記ロック構造が前記第３のプログラム機能により直接アクセス可能であり、前記共用データが前記第４のプログラム機能により直接アクセス可能である、コンピュータ・システム。
【請求項２】
前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のメモリ内に常駐し、前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のメモリ内に常駐する、請求項１に記載のコンピュータ・システム。
【請求項３】
前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１のプログラム機能が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第３のプログラム機能が開始される、請求項１に記載のコンピュータ・システム。
【請求項４】
前記共用データが共用ファイルである、請求項１に記載のコンピュータ・システム。
【請求項５】
前記共用データが共用ディレクトリである、請求項１に記載のコンピュータ・システム。
【請求項６】
現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、請求項１に記載のコンピュータ・システム。
【請求項７】
現在、共用ロックを保持する２つ以上の仮想計算機と、現在、ロックを待っている２つ以上の仮想計算機が存在することができる、請求項６に記載のコンピュータ・システム。
【請求項８】
前記第１のプログラム機能が前記ロック構造を操作して、前記第１の仮想計算機が（ａ）前記ロックを所有すること、（ｂ）前記ロックを所有しないこと、（ｃ）前記ロックを待っていることを示すことができ、
前記第３のプログラム機能が前記ロック構造を操作して、前記第２の仮想計算機が（ａ）前記ロックを所有すること、（ｂ）前記ロックを所有しないこと、（ｃ）前記ロックを待っていることを示すことができる、請求項１に記載のコンピュータ・システム。
【請求項９】
前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように、前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、請求項１に記載のコンピュータ・システム。
【請求項１０】
第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システム内の共用データにアクセスするための方法において、前記方法が、
前記共用メモリ内のロック構造を定義するステップであって、前記ロック構造が前記共用メモリ内の共用データに関するロックのホルダをリストすることができるステップと、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするステップであって、前記ロック構造および前記共用データが前記第１の仮想計算機により直接アクセス可能であるステップと、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするステップであって、前記ロック構造および前記共用データが前記第２の仮想計算機により直接アクセス可能であるステップとを有する方法。
【請求項１１】
前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１の仮想計算機が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第２の仮想計算機が開始される、請求項１０に記載の方法。
【請求項１２】
現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、請求項１０に記載の方法。
【請求項１３】
前記第１の仮想計算機が前記ロックを獲得するステップが、前記第１の仮想計算機内の第１のプログラム機能を実行することによって実行され、前記第１の仮想計算機が前記共用データにアクセスするステップが、前記第１の仮想計算機内の第２のプログラム機能を実行することによって実行され、
前記第２の仮想計算機が前記ロックを獲得するステップが、前記第２の仮想計算機内の第３のプログラム機能を実行することによって実行され、前記第２の仮想計算機が前記共用データにアクセスするステップが、前記第２の仮想計算機内の第４のプログラム機能を実行することによって実行され、
前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、請求項１０に記載の方法。
【請求項１４】
第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システム内の共用データにアクセスするためのコンピュータ・プログラム記録媒体において、前記コンピュータ・プログラム記録媒体が、
コンピュータ可読媒体と、
前記共用メモリ内のロック構造を定義するための第１のプログラム命令であって、前記ロック構造が前記共用メモリ内の共用データに関するロックのホルダをリストすることができる第１のプログラム命令と、
前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするために前記第１の仮想計算機において実行される第２のプログラム命令であって、前記ロック構造および前記共用データが前記第１の仮想計算機により直接アクセス可能である第２のプログラム命令と、
前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするために前記第２の仮想計算機において実行される第３のプログラム命令であって、前記ロック構造および前記共用データが前記第２の仮想計算機により直接アクセス可能である第３のプログラム命令とを有し、
前記第１、第２、および第３のプログラム命令が前記媒体上に記録される、コンピュータ・プログラム記録媒体。
【請求項１５】
第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリと、前記第１の仮想計算機にとって専用のメモリを定義するコンピュータ・システムにおいて、前記コンピュータ・システムが、
前記共用メモリ内のロック構造であって、前記専用メモリ内の共用データに関するロックのホルダをリストすることができるロック構造を有し、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第１のプログラム機能と、前記共用データにアクセスするために前記第１の仮想計算機が前記ロックを獲得した後でアクティブになる第２のプログラム機能とを含み、前記ロック構造が前記第１のプログラム機能により直接アクセス可能であり、前記共用データが前記第２のプログラム機能により直接アクセス可能であり、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第３のプログラム機能と、前記共用データへのアクセスを前記第１の仮想計算機から要求するために前記第２の仮想計算機が前記ロックを獲得した後でアクティブになる第４のプログラム機能とを含み、前記ロック構造が前記第３のプログラム機能により直接アクセス可能であり、前記共用データが前記第４のプログラム機能により直接アクセス可能でない、コンピュータ・システム。
【請求項１６】
前記第２のプログラム機能が前記ロックなしで前記共用データにアクセスできず、前記第４のプログラム機能が前記ロックなしで前記共用データへのアクセスを前記第１の仮想計算機から要求できないように、前記ロックが前記第２および第４のプログラム機能に関するものである、請求項１５に記載のコンピュータ・システム。
【請求項１７】
前記ロックが前記共用データに関するものである、請求項１５に記載のコンピュータ・システム。
【請求項１８】
前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のメモリ内に常駐し、前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のメモリ内に常駐する、請求項１５に記載のコンピュータ・システム。
【請求項１９】
前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１のプログラム機能が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第３のプログラム機能が開始される、請求項１５に記載のコンピュータ・システム。
【請求項２０】
前記共用データが共用ファイルである、請求項１５に記載のコンピュータ・システム。
【請求項２１】
現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、請求項１５に記載のコンピュータ・システム。
【請求項２２】
現在、共用ロックを保持する２つ以上の仮想計算機と、現在、ロックを待っている２つ以上の仮想計算機が存在することができる、請求項２１に記載のコンピュータ・システム。
【請求項２３】
前記第１のプログラム機能が前記ロック構造を操作して、（ａ）前記第１の仮想計算機がロックを所有することを示すために前記ロックを入手し、（ｂ）前記第１の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除し、（ｃ）前記第１の仮想計算機がロックを待っていることを示すために前記ロックを待ち、
前記第３のプログラム機能が前記ロック構造を操作して、（ａ）前記第２の仮想計算機がロックを所有することを示すために前記ロックを入手し、（ｂ）前記第２の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除し、（ｃ）前記第２の仮想計算機がロックを待っていることを示すために前記ロックを待つ、請求項１５に記載のコンピュータ・システム。
【請求項２４】
前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、請求項１５に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、仮想計算機オペレーティング・システムにおける共用リソースに関するロックの管理に対処する。
【背景技術】
【０００２】
仮想計算機オペレーティング・システムは、現在では周知のものであり、共通基本部分と、共通基本部分によって形成される個別ユーザ部分とを含む。ＩＢＭのｚ／ＶＭオペレーティング・システムでは、共通基本部分は「制御プログラム」または「ＣＰ」と呼ばれ、各ユーザ部分は「仮想計算機」または「ゲスト」と呼ばれている。仮想計算機またはゲストは、実メモリ、ＣＰＵ、入出力(Ｉ／Ｏ)などの実リソースの仮想共用／パーティション化である。ゲスト・オペレーティング・システムは各仮想計算機上で実行され／動作し、１つまたは複数のアプリケーションがゲスト・オペレーティング・システム上で動作する。各アプリケーションおよびゲスト・オペレーティング・システムは、それ自体の専用の実コンピュータ上で動作している場合と同様の挙動を示す。
【０００３】
一部のコンピューティング環境では、リソースが複数のプログラム間で共用される。共用リソースは、共用データ（共用ファイルおよび共用ディレクトリを含む）と共用処理ルーチンからなる。たとえば、ＶＭ／ＣＭＳでは、仮想計算機にとって専用のメモリのいくつかの部分が同じ仮想計算機内の複数のプログラム間で共用される。ＶＭ／ＣＭＳは専用ロックを使用して、共用メモリへのアクセスを並列にすることができる時期と、このようなアクセスを順次にしなければならない時期を決定する。また、ＶＭ／ＣＭＳでは、同じ仮想計算機内のすべてのプログラムが外部記憶媒体にアクセスするために使用する、仮想計算機にとって専用の処理ルーチンが存在する。ＶＭ／ＣＭＳは専用ロックを使用して、共用処理ルーチンを並列実行可能な時期と、このようなルーチンを順次実行しなければならない時期を決定する。ＶＭ／ＣＭＳはリソースを共用する際に有効であるが、単一仮想計算機内のリソースの共用に制限されている。
【０００４】
ＩＢＭのＶＭ／ＳＰ６オペレーティング・システムおよびＩＢＭのＶＭ／ＥＳＡオペレーティング・システムの後続のリリースでは、複数の仮想計算機（共通基本部分を有する）間で共有すべきデータは１つのサーバ仮想計算機の専用メモリ内に常駐する。同様に、ロック管理構造はサーバ仮想計算機内に常駐する。このデータは、すべての仮想計算機が共用データへのアクセスを要求するためにサーバ仮想計算機との通信を要求することによって、複数の仮想計算機によって共用される。このような通信は、高オーバヘッドであるＴＣＰ／ＩＰ、ＩＵＣＶ（ユーザー間通信機能）、またはゲストＬＡＮメッセージ（後述する）の形になっている。その場合、サーバ仮想計算機はその専用ロックを使用して、共用データへのアクセスをアービトレート（arbitrate）する。共用処理ルーチンの使用をアービトレートするために、同様の配置を使用する。上記の配置は複数の仮想計算機による共用リソースへのアクセスを可能にするが、要求側仮想計算機とサーバ仮想計算機との間の高オーバヘッドの通信プロトコルが必要となる。
【非特許文献１】ＩＢＭ資料「z/VM4.2.0 General Information」（文書番号：ＧＣ２４−５９９１−０３）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、本発明の一般的な一目的は、効果的かつ効率よく共用リソースへのアクセスを可能にする、仮想計算機オペレーティング・システム内の機能性を提供することにある。
【０００６】
本発明の他の目的は、仮想計算機オペレーティング・システムの共用メモリ内の共用リソースに関するロックを効果的かつ効率よく管理する、仮想計算機オペレーティング・システム内の機能性を提供することにある。
【０００７】
本発明の他の目的は、仮想計算機の専用メモリ内の共用リソースに関するロックを効果的かつ効率よく管理する、仮想計算機オペレーティング・システム内の機能性を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、複数の仮想計算機によるロックをまとめて管理し、そのロックによって保護される共用データにアクセスするための技法にある。コンピュータ・システムは、第１および第２の仮想計算機と、第１および第２の仮想計算機によって共用されるメモリを定義する。ロック構造は共用メモリ内に定義される。ロック構造は、共用メモリ内の共用データに関するロックのホルダをリストすることができる。第１の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得する。ロックを獲得した後、第１の仮想計算機は共用データにアクセスする。ロック構造および共用データは、第１の仮想計算機により直接アクセス可能である。第２の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得する。ロックを獲得した後、第２の仮想計算機は共用データにアクセスする。ロック構造および共用データは、第２の仮想計算機により直接アクセス可能である。
【０００９】
本発明の他の実施形態によれば、コンピュータ・システムは、第１および第２の仮想計算機と、第１および第２の仮想計算機によって共用されるメモリと、第１の仮想計算機に対する専用のメモリを定義する。ロック構造は共用メモリ内に常駐する。ロック構造は、専用メモリ内の共用データに関するロックのホルダをリストすることができる。第１の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得するための第１のプログラム機能を含む。また、第１の仮想計算機は、共用データにアクセスするために第１の仮想計算機がロックを獲得した後でアクティブになる第２のプログラム機能も含む。ロック構造は第１のプログラム機能により直接アクセス可能であり、さらに共用データは第２のプログラム機能により直接アクセス可能である。第２の仮想計算機は、ロック構造の操作により使用可能なときに共用データに関するロックを獲得するための第３のプログラム機能を含む。また、第２の仮想計算機は、共用データへのアクセスを第１の仮想計算機から要求するために第２の仮想計算機がロックを獲得した後でアクティブになる第４のプログラム機能も含む。ロック構造は第３のプログラム機能により直接アクセス可能である。共用データは第４のプログラム機能により直接アクセス可能ではない。
【発明を実施するための最良の形態】
【００１０】
【実施例１】
【００１１】
次に、全体を通して同様の参照番号が同様の要素を示す図面を詳細に参照すると、図１は、全体が１０で示される本発明の第１の実施形態によるコンピュータ・システムを示している。コンピュータ・システム１０は、物理的コンピュータ２０（ＣＰＵ２３を含む）と、仮想計算機オペレーティング・システム１１とを含む。一例として、仮想計算機オペレーティング・システムは、本発明を含むように修正されたＩＢＭのｚ／ＶＭバージョン４．２．０または４．３．０にすることができる。ｚ／ＶＭ４．２．０の詳細は、POBox 29570,IBM Publications, Raleigh, North Carolina 27626-0570にあるInternational Business Machines Corp.からまたはwww.IBM.com/shop/publications/orderにあるＷＷＷで入手可能なＩＢＭ資料「z/VM 4.2.0 GeneralInformation」（文書番号：ＧＣ２４−５９９１−０３）に開示されている。本発明は他のサーバ・コンピュータまたはパーソナル・コンピュータでも実現可能であるが、オペレーティング・システム１１はＩＢＭのｚＳｅｒｉｅｓメインフレームなどの物理的コンピュータ１０で実行される。オペレーティング・システム１１は、共通基本部分２１（ｚ／ＶＭオペレーティング・システムでは「ＣＰ」と呼ぶ）を含む。共通基本部分２１は、物理的コンピュータのリソース（ＣＰＵおよびメモリを含む）をロジカル・パーティション化して、ユーザ部分１２、１４、１６（ｚ／ＶＭオペレーティング・システムでは「仮想計算機」または「ゲスト仮想計算機」と呼ぶ）を形成する。また、共通基本部分は、メモリの仮想化、デバイスの仮想化、ＣＰＵの仮想化などの機能も実行する。ゲスト・オペレーティング・システム２２、２４、２６は、ユーザ部分１２、１４、１６上でそれぞれ実行され、アプリケーション３２、３４、３６は、ゲスト・オペレーティング・システム２２、２４、２６上でそれぞれ実行される。各オペレーティング・システム上では複数のアプリケーションが実行されている可能性がある。一例として、ゲスト・オペレーティング・システム２２および２４はＬｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）オペレーティング・システムであり、ゲスト・オペレーティング・システム２６はＩＢＭのＣＭＳオペレーティング・システムである。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（商標）オペレーティング・システム、Ｕｎｉｘ（商標）オペレーティング・システム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＳｏｌａｒｉｓ（商標）オペレーティング・システム、またはＨｅｗｌｅｔｔ  ＰａｃｋａｒｄのＨＰ  ＵＸオペレーティング・システムなど、ユーザ部分で実行中の他のゲスト・オペレーティング・システムも実現可能である。一例として、アプリケーション３２、３４、３６は、ＩＢＭのＤＢ２データベース管理アプリケーション、ＩＢＭのＷｅｂＳｐｈｅｒｅアプリケーション、通信アプリケーションなどにすることができる。アプリケーション３２、３４、３６は共用データへのアクセスを要求する可能性を除いて、そのアプリケーションの性質は本発明の一部を形成するものではない。
【００１２】
各仮想計算機は、その専用データ、アプリケーション、それぞれ仮想計算機１２、１４、１６内のデータ・アクセス機能６２、６４、６６（「ＤＡＦ」）およびロック・アクセス機能（「ＬＡＦ」）７２、７４、７６などのオペレーティング・システム機能のために、それ自体の専用メモリを有する。その結果として、各仮想計算機には、個別の物理的コンピュータ内のように他の仮想計算機からのプライバシの手段が与えられる。また、仮想計算機間のロジカル・パーティションは、仮想ＣＰＵと他の仮想デバイスを各仮想計算機に割り振ることによって提供される。「仮想ＣＰＵ」は実ＣＰＵ（複数も可）の一部分であって、ゲスト・オペレーティング・システムにとってそれ自体のＣＰＵのように見える部分である。コンピュータ１０は、すべての仮想計算機１２、１４、１６によって共用されるメモリ領域２５も含む。「共用」されているので、各仮想計算機は、共用メモリ２５と、適切なアドレスによって共用メモリに記憶されたデータおよびデータ構造に直接アクセスすることができる。本発明によれば、共用ファイル８０および９７と共用ディレクトリ９８を含む共用データ７８は共用メモリ内に位置する（ただし、ＤＡＦとＬＡＦはそれぞれの仮想計算機の専用メモリ内に位置する）。その結果として、各ＤＡＦは、それからデータを読み取り、そこにデータを書き込むために、共用ファイルと共用ディレクトリにアクセスすることができる。以下により詳細に説明するように、各ＤＡＦは共用メモリ２５内の共用データ７８へのアクセスを管理する。より詳細に後述する共用ロック構造５８も共用メモリ２５内に常駐する。その結果として、各ＬＡＦは共用ロック構造５８にもアクセスすることができる。各ＬＡＦは、共用データに関するロックを入手または解除するために共用ロック構造を管理する。各ＤＡＦ６２、６４、６６およびＬＡＦ７２、７４、７６は、共用データへのアクセスを可能にし、それぞれのアプリケーション３２、３４、３６およびそれぞれのオペレーティング・システム２２、２４、２６によって行われる読取り要求および書込み要求に関する対応するロックを管理する。
【００１３】
図１に示す状態では、仮想計算機１２および１６は同時に共用ファイル８０からデータを読み取っており、仮想計算機１４は共用ファイル８０への書込みを待っている。以下に説明するように、書込み操作は仮想計算機１２および１６が読み取っているデータを改変することになると考えられるので、仮想計算機１２または１６が共用ファイル８０へのそれぞれのアクセスを完了するまで仮想計算機１４は共用ファイル８０に書き込むことができない。仮想計算機１２の場合、読取り要求９２はアプリケーション３２から発生し、そのアプリケーション３２が実行のためにその要求をオペレーティング・システム２２に渡している。同様に、仮想計算機１６の場合、読取り要求９６はアプリケーション３６から発生し、そのアプリケーション３６が実行のためにその要求をオペレーティング・システム２６に渡している。仮想計算機１４の場合、書込み要求はオペレーティング・システム２４から発生している。しかし、各仮想計算機内の読取り要求および書込み要求の発生源は本発明にとって重要なものではない。
【００１４】
図２は、コンピュータ・システム１０の共用メモリ２５内のロック構造または制御ブロック５８をより詳細に示している。また、図２は、ロック構造５８の効果を仮想計算機へのロック・チェーン（lock chain）９０および関連矢印により象徴的に示している。仮想計算機１２および１６は同時に共用ファイル８０に関する共用ロック９１を保持している。仮想計算機１４は、共用ファイル８０に対する排他ロックについて仮想計算機１２および１６を待っているプレース・ホルダ９２を有している。これは、実際にはロック構造または制御ブロック５８内に記録され、仮想計算機１２および１６が同時に共用ファイル８０に関する共用ロック９１を保持し、仮想計算機１４が共用ファイル８０に関する排他ロックについて仮想計算機１２および１６を待っていることを示す。制御ブロック５８の「ウェイタ・リスト」９５は、ロックに関する上記の所有権、ウェイタ（複数も可）の順序、および各ロックの性質を示し、すなわち、仮想計算機１２および１６は現在、共用方式でロック９１を保持し、仮想計算機１４は現在、排他方式でロックを待っている。図示した実施形態では、ファイル９７およびディレクトリ９８それぞれに関し、追加の個別ロック構造または制御ブロック５９および６１が存在する。制御ブロック５９および６１のそれぞれは原理／構造において制御ブロック５８と同様であるが、制御ブロック５９および６１のそれぞれの状態は仮想計算機のダイナミクス、すなわち、現在、ファイル９７に関するロックを保持している仮想計算機がある場合にどの仮想計算機が保持しているか、現在、ファイル９７に関するロックを待っている仮想計算機がある場合にどの仮想計算機が待っているか、ならびに現在、ディレクトリ９８に関するロックを保持している仮想計算機がある場合にどの仮想計算機が保持しているか、現在、ディレクトリ９８に関するロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかに依存する。個別ロックにより、他のファイルまたはディレクトリに対して各仮想計算機が保持するロックの排他または共用という性質にかかわらず、複数の仮想計算機は同時にファイル８０および９７とディレクトリ９８にアクセスすることができる。たとえば、仮想計算機１２がファイル８０に関する排他ロックを有している場合、仮想計算機１４は同時にファイル９７に関する排他ロックを有することができ、仮想計算機１６は同時にディレクトリ９８に関する排他ロックを有することができる。それぞれのロックを備えた他の共用データ構造も同様に共用メモリ２５に含めることができる。
【００１５】
図３は、共用メモリ内の共用ファイル、ディレクトリ、またはその他のデータ構造に関するロックを入手して、それにアクセスしようと試みている仮想計算機内の各ＬＡＦ、ＤＡＦ、その他の機能の操作７００を示している。以下の例では、仮想計算機は共用ファイルに関するロックを要求する（ステップ７０１）。仮想計算機が共用ファイルを読み取りたいと希望する場合、仮想計算機は共用ロックのみを要求する必要がある。しかし、仮想計算機が共用ファイルに書き込みたいと希望する場合、仮想計算機は排他ロックを要求することになる。要求が排他ロックに関するものである場合、判断７０２は判断７０４に至る。判断７０４では、ＬＡＦは、要求したロックが現在、他の仮想計算機（共用方式または排他方式のいずれかで）によって保持されているかどうかを判定する。保持されている場合、排他ロックは現行リクエスタにとって使用不能であり、ＬＡＦは、要求側仮想計算機が「ウェイタ・リスト」上にあって、待機待ち行列(wait queue）上に登録されていることを示すように制御ブロック５８を更新する（ステップ７０５）。次に、ＬＡＦは、その仮想計算機が実行すべき他の作業を有するかどうかを判定する（判断７０６）。有していない場合、ＬＡＦは、「状況(status)」というカテゴリで制御ブロック５８内に項目(entry)を作成し、要求側仮想計算機が「アイドル(idle)」状態であることを示す（ステップ７０８）。次にＬＡＦによって要求側仮想計算機は、覚醒した(awaken)ときに読み取るようにこの仮想計算機がプログラミングされるという項目を他の制御ブロック内に作成した後で「アイドル／休止(idle/quiescent)」状態に入る（ステップ７１０）。次に、要求側仮想計算機は割込みを待ち（判断７１２）、その時点でその仮想計算機は覚醒し、他の制御ブロックを読み取ることになる。この他の制御ブロックは、そのＬＡＦを呼び出すよう仮想計算機に通知する（ステップ７１３）。もう一度、判断７０６を参照すると、要求側仮想計算機（この時点ではロックを獲得できないもの）が実行すべき他の作業を有する場合、ＬＡＦは、ゲスト・オペレーティング・システムまたはアプリケーションに制御を返して、その他の作業を実行することになる（ステップ７０７）。その後、ゲスト・オペレーティング・システムはＬＡＦを呼び出すことになる（ステップ７１３）。
【００１６】
判断７１２またはステップ７０７を介してステップ７１３でＬＡＦが呼び出されると、ＬＡＦは制御ブロック５８を読み取って、その仮想計算機がロックを保持する資格があるかどうかを判定することになり、すなわち、要求したロックが排他である場合、他のいかなる仮想計算機も現在、ロックを保持していないと判断し、要求したロックが共用である場合、他のいかなる仮想計算機も現在、排他方式でロックを保持していないと判断することになる（判断７１５）。仮想計算機がロックを保持する資格がない場合、ＬＡＦは判断７０６に戻り、前述の処理を続行する。しかし、その時点で仮想計算機がロックを保持する資格がある場合、ＬＡＦはロックを獲得する（ステップ７２２）。このロックの獲得は、制御ブロック５８に対する対応する更新、すなわち、要求側仮想計算機がその時点でロックを保持しており、ウェイタではないという表示によって実施される。次に、ＬＡＦは要求側仮想計算機のＤＡＦを呼び出して、共用メモリ２５からのデータの読取りまたは共用メモリ２５へのデータの書込みのいずれかのために適切なアドレスによって共用データに直接アクセスする（ステップ７２４）。その後、ＤＡＦは、仮想計算機が共用データに対するそのアクセスを完了したことをＬＡＦに通知し、ＬＡＦはロックを「解除(release)」する（ステップ７２８）。応答として、ＬＡＦは、要求側仮想計算機がもはやロックを保持していないことを示すように制御ブロック５８を更新する。また、ＬＡＦは、他の仮想計算機が現在、ロックを待っているかどうかを制御ブロック５８から判定する（判断７３０）。待っていない場合、ＬＡＦの処理は完了し、制御はＬＡＦの仮想計算機のゲスト・オペレーティング・システムまたはアプリケーションに返される（ステップ７３２）。待っている場合、ＬＡＦは、「待ち」というマークが付けられた第１の仮想計算機が「アイドル」状態であるかどうかを制御ブロック５８から判定する（判断７３４）。アイドル状態ではない場合、ＬＡＦは、この非アイドル状態で待っている仮想計算機がその現行作業項目をいつ完了するかをチェックすることになるという項目を他の制御ブロックに作成する（ステップ７３６）。この項目は、そのＬＡＦを呼び出してステップ７２２でロックを獲得しようと試みるよう、待っている仮想計算機に通知することになる（ステップ７１３）。その場合、非アイドル状態で待っている仮想計算機に対しこの時点で割込みを行うことは破壊的すぎると考えられるので、ＬＡＦに関する処理が完了する（ステップ７３２）。もう一度、判断７３４を参照すると、待っている仮想計算機がアイドル状態である場合、ＬＡＦは、割込みが行われたときに待っている仮想計算機のＬＡＦを呼び出すための項目を他の制御ブロック内に作成し、待っている仮想計算機に対する割込みを発行する（ステップ７３８）。それはとにかくアイドル状態であるので、これは待っている仮想計算機にとって破壊的なものにはならないだろう。次に、要求側仮想計算機のＬＡＦはその処理を完了し、それ自体の仮想計算機のオペレーティング・システムまたはアプリケーションに制御を返す（ステップ７３２）。割込みの受信後、アイドル状態で待っている仮想計算機（ステップ７１２）は覚醒することになり、ステップ７２２でロックを獲得することができる。
【００１７】
もう一度、判断７０４を参照すると、要求したロックが現在、何かに保持されていない場合、ＬＡＦは要求側仮想計算機に対し「非アイドル」として制御ブロック５８の「状況」カテゴリにマークを付け（ステップ７２０）、その要求側仮想計算機にロックを授与する（ステップ７２２）。ＬＡＦは前述の処理を続行する。もう一度、判断７０２を参照すると、仮想計算機が要求したロックが、共用ファイル８０の読取りなど、共用である場合、ＬＡＦは、ロックが現在、排他方式で保持されているかどうかを判定する（判断７４０）。保持されていない場合（すなわち、いかなるロックも現在、保持されていないかまたは共用ロックのみが現在、保持されている場合）、ＬＡＦは、ステップ７２０に移行し、前述の処理を続行する。しかし、ロックが現在、他の仮想計算機によって排他方式で保持されている場合、ＬＡＦは、ステップ７０５に移行して要求側仮想計算機をウェイタ・リストに追加し、前述のように続行する。
【実施例２】
【００１８】
図４および図５は、本発明の第２の実施形態によるコンピュータ・システム１１０を示している。システム１１０はシステム１０と同様のものであるが、システム１１０では共用ファイル１８０が仮想計算機１２の専用メモリ内に常駐する。システム１０では、共用ファイル８０が共用メモリ２５内に常駐する。また、システム１１０（システム１０のように共用メモリ２５からではなく）では、仮想計算機１２の専用メモリ内の共用ファイルにアクセスするために、後述するようにＤＡＦ１６２、１６４、１６６に対して対応する変更が行われている。システム１０および１１０はいずれも共用メモリ２５内に同じロック構造５８を有する。システム１１０のＬＡＦ１７２、１７４、１７６（システム１０のＬＡＦ７２、７４、７６のように）は、適切なアドレスによって共用メモリからのロック構造５８に直接アクセスすることができる。ＬＡＦ１７２、１７４、１７６がＬＡＦ７２、７４、７６と異なる点は、ＬＡＦ１７２、１７４、１７６がＤＡＦ１６２、１６４、１６６に関するロックを制御するのに対し、ＬＡＦ７２、７４、７６が共用データに関するロックを制御することである。この違いの理由は、ＤＡＦ１６２、１６４、１６６が共用データにアクセスするために相当な時間を必要とし、実際に共用データにアクセスする時間より多くなる可能性があることであり、ＤＡＦ１６２、１６４、１６６の動作全体の間、競合(conflict)を回避しなければならない。対照的に、システム１０の場合のように共用データが共用メモリ内に常駐する場合、共用データへの実際のアクセスはかなり速くなる。
【００１９】
図６は、仮想計算機１２の専用メモリ内の共用ファイル、ディレクトリ、またはその他のデータ構造に関するロックを入手しようと試みているシステム１１０の各仮想計算機１２、１４、１６内の各ＬＡＦ１７２、１７４、１７６、各ＤＡＦ１６２、１６４、１６６、その他の機能の操作８００を示している。
【００２０】
上記のように、ＬＡＦ１７２、１７４、１７６は、何がロックされるかを除き、ＬＡＦ７２、７４、７６と同様のものである。システム１０ではＬＡＦ７２、７４、７６が共用データをロックするのに対し、システム１１０ではＬＡＦ１７２、１７４、１７６がＤＡＦ１６２、１６４、１６６をロックする。したがって、ＤＡＦ１６２は、ＬＡＦ１７２が最初にロックを入手せずにそれ自体の専用メモリ内の共用データ１８０からのデータにアクセスするように動作することはできない。また、ＤＡＦ１６４は、ＬＡＦ１７４が最初にロックを入手せずに仮想計算機１２からの共用データ１８０を要求するように動作することはできない。同様に、ＤＡＦ１６６は、ＬＡＦ１７６が最初にロックを入手せずに仮想計算機１２からの共用データ１８０を要求するように動作することはできない。
【００２１】
また、上記のように、ＤＡＦ１６２、１６４、１６６は、共用データにアクセスする方法を除き、ＤＡＦ６２、６４、６６と同様のものである。これは、機能７００ではステップ７２４であったが、機能８００ではステップ８２４である。上記で説明したように、ステップ７２４では、すべての要求側仮想計算機が適切なアドレスによって共用メモリからの共用データに直接アクセスする。しかし、システム１１０では、共用データは共用メモリ内に常駐せず、むしろ仮想計算機１２内に常駐する。したがって、仮想計算機１２がロックを保持し、仮想計算機１２内の共用データへのアクセスを要求する場合、ＤＡＦ１６２は適切なアドレスを使用してそのデータに直接アクセスする。しかし、仮想計算機１４または１６がロックを保持し、仮想計算機１２内の共用データへのアクセスを要求する場合、ＤＡＦ１６４または１６６はその共用データに直接アクセスすることができない。その代わりに、ＤＡＦ１６４または１６６は仮想計算機１２に仮想計算機間メッセージ要求を送信して、データにアクセスする。この仮想計算機間メッセージは、既知のＴＣＰ／ＩＰ、ＩＵＣＶ、またはゲストＬＡＮ通信プロトコルを使用して作成することができる。ＴＣＰ／ＩＰは業界標準であり、したがって、本書で説明する必要はない。「ＩＵＣＶ」はＩＢＭのｚＳｅｒｉｅサーバの独自プロトコルであり、以下のステップを有する。リクエスタの専用メモリ内にメッセージが書き込まれる。次に、共通基本部分を介して仮想計算機１２に割込みが送信される。共通基本部分は仮想計算機１２の専用メモリにメッセージを書き込む。この割込みは仮想計算機１２内の割込みハンドラを呼び出してメッセージを読み取り、処理のために仮想計算機１２内の適切な機能にそれを転送する。仮想計算機１２内のこの機能は、メッセージ（ＤＡＦ１６４または１６６から発生したもの）を受信し、読取り要求の場合は指定のアドレスからデータを取り出し(fetch)、書込み要求の場合は指定のアドレスに書き込む。次に、仮想計算機１２内の機能は、ＩＵＣＶを使用して、読取り要求の場合はデータを返し、書込み要求の場合は肯定応答を返し、いずれの場合も仮想計算機間メッセージを使用する。このように返した後、それぞれのＬＡＦ１７４または１７６はロックを解除する。上記のように、ＩＵＣＶの代わりにゲストＬＡＮを使用することができる。ゲストＬＡＮは、ＬＡＮプロトコルを使用する仮想化通信装置である。ＬＡＮプロトコルは、単一送信側(sender)と複数の受信側(receiver)との間で同時に通信を可能にするものである。ゲストＬＡＮを介して通信するためには、送信側と受信側（複数も可）はどちらも共通基本部分を呼び出して、ゲストＬＡＮに参加したいことを示す。データを送信するためには、送信側は共通基本部分を呼び出して、送信すべきデータと、どの受信側（複数も可）がそのデータを獲得すべきかを示す。共通基本部分は、識別された受信側ごとに割込みを生成する。このような各受信側は、共通基本部分を呼び出してデータを受信することによって応答する。次に共通基本部分は、送信側の専用メモリからのデータをそれぞれの受信側の専用メモリにコピーする。すべての受信側がそのデータを受信すると、共通基本部��は送信側に対する割込みを生成し、そのデータがすべての受信側に転送されたことを示す。
【００２２】
上記に基づいて、本発明を実施するコンピュータ・システムについて説明してきた。しかし、本発明の範囲を逸脱せずに多数の修正および置換を行うことができる。たとえば、仮想計算機の代わりにロジカル・パーティションを使用することができるだろう。また、所望であれば、ＬＡＦ１７２、１７４、１７６は、ＤＡＦ１６２、１６４、１６６に関するロックの代わりに、共用データ１８０に関するロックを入手することができる。したがって、本発明は、限定としてではなく例証として開示したものであり、本発明の範囲を決定するためには特許請求の範囲を参照しなければならない。
【００２３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２４】
（１）第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システムにおいて、前記コンピュータ・システムが、
前記共用メモリ内のロック構造であって、前記共用メモリ内の共用データに関するロックのホルダをリストすることができるロック構造を有し、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第１のプログラム機能と、前記共用データにアクセスするために前記第１の仮想計算機が前記ロックを獲得した後でアクティブになる第２のプログラム機能とを含み、前記ロック構造が前記第１のプログラム機能により直接アクセス可能であり、前記共用データが前記第２のプログラム機能により直接アクセス可能であり、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第３のプログラム機能と、前記共用データにアクセスするために前記第２の仮想計算機が前記ロックを獲得した後でアクティブになる第４のプログラム機能とを含み、前記ロック構造が前記第３のプログラム機能により直接アクセス可能であり、前記共用データが前記第４のプログラム機能により直接アクセス可能である、コンピュータ・システム。
（２）前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のメモリ内に常駐し、前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のメモリ内に常駐する、上記（１）に記載のコンピュータ・システム。
（３）前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１のプログラム機能が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第３のプログラム機能が開始される、上記（１）に記載のコンピュータ・システム。
（４）前記共用データが共用ファイルである、上記（１）に記載のコンピュータ・システム。
（５）前記共用データが共用ディレクトリである、上記（１）に記載のコンピュータ・システム。
（６）現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、上記（１）に記載のコンピュータ・システム。
（７）現在、共用ロックを保持する２つ以上の仮想計算機と、現在、ロックを待っている２つ以上の仮想計算機が存在することができる、上記（６）に記載のコンピュータ・システム。
（８）前記第１のプログラム機能が前記ロック構造を操作して、前記第１の仮想計算機が（ａ）前記ロックを所有すること、（ｂ）前記ロックを所有しないこと、（ｃ）前記ロックを待っていることを示すことができ、
前記第３のプログラム機能が前記ロック構造を操作して、前記第２の仮想計算機が（ａ）前記ロックを所有すること、（ｂ）前記ロックを所有しないこと、（ｃ）前記ロックを待っていることを示すことができる、上記（１）に記載のコンピュータ・システム。
（９）前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、上記（１）に記載のコンピュータ・システム。
（１０）第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システム内の共用データにアクセスするための方法において、前記方法が、
前記共用メモリ内のロック構造を定義するステップであって、前記ロック構造が前記共用メモリ内の共用データに関するロックのホルダをリストすることができるステップと、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするステップであって、前記ロック構造および前記共用データが前記第１の仮想計算機により直接アクセス可能であるステップと、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするステップであって、前記ロック構造および前記共用データが前記第２の仮想計算機により直接アクセス可能であるステップとを有する方法。
（１１）前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１の仮想計算機が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第２の仮想計算機が開始される、上記（１０）に記載の方法。
（１２）現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、上記（１０）に記載の方法。
（１３）前記第１の仮想計算機が前記ロックを獲得するステップが、前記第１の仮想計算機内の第１のプログラム機能を実行することによって実行され、前記第１の仮想計算機が前記共用データにアクセスするステップが、前記第１の仮想計算機内の第２のプログラム機能を実行することによって実行され、
前記第２の仮想計算機が前記ロックを獲得するステップが、前記第２の仮想計算機内の第３のプログラム機能を実行することによって実行され、前記第２の仮想計算機が前記共用データにアクセスするステップが、前記第２の仮想計算機内の第４のプログラム機能を実行することによって実行され、
前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、上記（１０）に記載の方法。
（１４）第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリを定義するコンピュータ・システム内の共用データにアクセスするためのコンピュータ・プログラム記録媒体において、前記コンピュータ・プログラム記録媒体が、
コンピュータ可読媒体と、
前記共用メモリ内のロック構造を定義するための第１のプログラム命令であって、前記ロック構造が前記共用メモリ内の共用データに関するロックのホルダをリストすることができる第１のプログラム命令と、
前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするために前記第１の仮想計算機において実行される第２のプログラム命令であって、前記ロック構造および前記共用データが前記第１の仮想計算機により直接アクセス可能である第２のプログラム命令と、
前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得し、前記ロックの獲得後に前記共用データにアクセスするために前記第２の仮想計算機において実行される第３のプログラム命令であって、前記ロック構造および前記共用データが前記第２の仮想計算機により直接アクセス可能である第３のプログラム命令とを有し、
前記第１、第２、および第３のプログラム命令が前記媒体上に記録される、コンピュータ・プログラム記録媒体。
（１５）第１および第２の仮想計算機と、前記第１および第２の仮想計算機によって共用されるメモリと、前記第１の仮想計算機にとって専用のメモリを定義するコンピュータ・システムにおいて、前記コンピュータ・システムが、
前記共用メモリ内のロック構造であって、前記専用メモリ内の共用データに関するロックのホルダをリストすることができるロック構造を有し、
前記第１の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第１のプログラム機能と、前記共用データにアクセスするために前記第１の仮想計算機が前記ロックを獲得した後でアクティブになる第２のプログラム機能とを含み、前記ロック構造が前記第１のプログラム機能により直接アクセス可能であり、前記共用データが前記第２のプログラム機能により直接アクセス可能であり、
前記第２の仮想計算機が、前記ロック構造の操作により使用可能なときに前記共用データに関するロックを獲得するための第３のプログラム機能と、前記共用データへのアクセスを前記第１の仮想計算機から要求するために前記第２の仮想計算機が前記ロックを獲得した後でアクティブになる第４のプログラム機能とを含み、前記ロック構造が前記第３のプログラム機能により直接アクセス可能であり、前記共用データが前記第４のプログラム機能により直接アクセス可能でない、コンピュータ・システム。
（１６）前記第２のプログラム機能が前記ロックなしで前記共用データにアクセスできず、前記第４のプログラム機能が前記ロックなしで前記共用データへのアクセスを前記第１の仮想計算機から要求できないように、前記ロックが前記第２および第４のプログラム機能に関するものである、上記（１５）に記載のコンピュータ・システム。
（１７）前記ロックが前記共用データに関するものである、上記（１５）に記載のコンピュータ・システム。
（１８）前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のメモリ内に常駐し、前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のメモリ内に常駐する、上記（１５）に記載のコンピュータ・システム。
（１９）前記共用データにアクセスするために前記第１の仮想計算機内からの要求によって前記ロックを獲得するために前記第１のプログラム機能が開始され、前記共用データにアクセスするために前記第２の仮想計算機内からの要求によって前記ロックを獲得するために前記第３のプログラム機能が開始される、上記（１５）に記載のコンピュータ・システム。
（２０）前記共用データが共用ファイルである、上記（１５）に記載のコンピュータ・システム。
（２１）現在、前記ロックを待っている仮想計算機がある場合にどの仮想計算機が待っているかについても前記ロック構造がリストする、上記（１５）に記載のコンピュータ・システム。
（２２）現在、共用ロックを保持する２つ以上の仮想計算機と、現在、ロックを待っている２つ以上の仮想計算機が存在することができる、上記（２１）に記載のコンピュータ・システム。
（２３）前記第１のプログラム機能が前記ロック構造を操作して、（ａ）前記第１の仮想計算機がロックを所有することを示すために前記ロックを入手し、（ｂ）前記第１の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除し、（ｃ）前記第１の仮想計算機がロックを待っていることを示すために前記ロックを待ち、
前記第３のプログラム機能が前記ロック構造を操作して、（ａ）前記第２の仮想計算機がロックを所有することを示すために前記ロックを入手し、（ｂ）前記第２の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除し、（ｃ）前記第２の仮想計算機がロックを待っていることを示すために前記ロックを待つ、上記（１５）に記載のコンピュータ・システム。
（２４）前記第２の仮想計算機が前記第１および第２のプログラム機能にアクセスできないように前記第１および第２のプログラム機能が前記第１の仮想計算機にとって専用のものであり、前記第１の仮想計算機が前記第３および第４のプログラム機能にアクセスできないように前記第３および第４のプログラム機能が前記第２の仮想計算機にとって専用のものである、上記（１５）に記載のコンピュータ・システム。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態によるデータ・アクセス機能を備えた仮想計算機オペレーティング・システムを含むコンピュータ・システムのブロック図である。
【図２】本発明の第１の実施形態によるロック・アクセス機能を備えた仮想計算機オペレーティング・システムを含む図１のコンピュータ・システムのブロック図である。
【図３】図１および図２のコンピュータ・システム内のロック管理機能、データ・アクセス機能、その他の機能を示す流れ図である。
【図４】本発明の第２の実施形態によるデータ・アクセス機能を備えた仮想計算機オペレーティング・システムを含むコンピュータ・システムのブロック図である。
【図５】本発明の第２の実施形態によるロック・アクセス機能を備えた仮想計算機オペレーティング・システムを含む図４のコンピュータ・システムのブロック図である。
【図６】図４および図５のコンピュータ・システム内のロック管理機能、データ・アクセス機能、その他の機能を示す流れ図である。
【符号の説明】
【００２６】
１０  コンピュータ・システム
１１  仮想計算機オペレーティング・システム
１２、１４、１６  仮想計算機、ユーザ部分
２０  物理的コンピュータ
２１  基本部分
２２、２４  仮想計算機Ｌｉｎｕｘ、ゲスト・オペレーティング・システム
２３  ＣＰＵ
２５  共用メモリ
２６  仮想計算機ＣＭＳ、ゲスト・オペレーティング・システム
３２、３４、３６  アプリケーション
５８  共用ロック構造、制御ブロック
５９、６１  制御ブロック
６２、６４、６６  ＤＡＦ（データ・アクセス機能）
７２、７４、７６  ＬＡＦ（ロック・アクセス機能）
７８  共用データ
８０、９７  ファイル
９０  ロック・チェーン
９２、９６  読取り要求
９４  書込み要求
９８  ディレクトリ
１１０  コンピュータ・システム
１６２、１６４、１６６  ＤＡＦ
１７２、１７４、１７６  ＬＡＦ
１８０  共用ファイル
【図１】
2004326753.tif 000003
【図２】
2004326753.tif 000004
【図３】
2004326753.tif 000005
【図４】
2004326753.tif 000006
【図５】
2004326753.tif 000007
【図６】
2004326753.tif 000008