(57)【特許請求の範囲】
【請求項１】
各々が独立したアドレス空間において動作するように構成され、ソース論理区画とターゲット論理区画とを含む複数の論理区画と、
前記複数の論理区画によりアクセス可能な区画マネージャと、
前記区画マネージャ内に、少なくとも部分的に実装され、前記複数の論理区画の間でメッセージ・レコード形式のイベント情報を伝達するように構成されるイベント・ドリブン通信インタフェースと、
を含む装置。
【請求項２】
各々が独立したアドレス空間において動作するように構成され、ソース論理区画とターゲット論理区画とを含む複数の論理区画と、
前記複数の論理区画によりアクセス可能な区画マネージャと、
前記区画マネージャ内に、少なくとも部分的に実装され、前記複数の論理区画の間でメッセージ・レコード形式のイベント情報を伝達するように構成されるイベント・ドリブン通信インタフェースであって、
前記ソース論理区画内に存在し、前記ターゲット論理区画に関連付けられるイベントを生成するように構成されるイベント・ジェネレータと、
前記ターゲット論理区画内に存在し、前記イベントを処理するように構成されるイベント・ハンドラと、
前記区画マネージャ内に存在し、前記複数の論理区画によりアクセス可能で、前記ソース論理区画の前記イベント・ジェネレータにより生成された前記イベントを、前記ターゲット論理区画の前記イベント・ハンドラに伝達するように構成されるイベント・マネージャとを含むイベント・ドリブン通信インタフェースと、
を含む装置。
【請求項３】
前記複数の論理区画が基本論理区画と２次論理区画とを含み、前記区画マネージャの少なくとも一部が前記基本論理区画内に存在する、請求項１もしくは２に記載の装置。
【請求項４】
前記イベント・ドリブン通信インタフェースが複数のイベント記憶データ構造を含み、各前記イベント記憶データ構造が論理区画内に存在し、保留標識に関連付けられ、前記イベント・マネージャが前記保留標識を所定値にセットすることにより、前記ターゲット論理区画に保留イベントを通知するように構成され、前記ターゲット論理区画内の前記イベント・ハンドラが、前記保留標識を読出すことにより、前記保留イベントを検出するように構成される、請求項２記載の装置。
【請求項５】
各前記イベント記憶データ構造がイベント・スタックを含む、請求項４記載の装置。
【請求項６】
前記イベント・ドリブン通信インタフェースが保留キューを含み、前記イベント・マネージャが、
前記ソース論理区画の前記イベント・マネージャにより生成されたイベントを、前記保留キューに一時的に記憶し、
前記ターゲット論理区画内の前記イベント・ハンドラによる要求に応答して、前記イベントを前記ターゲット論理区画の前記イベント記憶データ構造にコピーするように構成される、請求項４記載の装置。
【請求項７】
前記イベント・ドリブン通信インタフェースが、前記ソース論理区画内の前記イベント・ジェネレータにより生成されたイベントに対する肯定応答を記憶するように構成される肯定応答キューを含む、請求項６記載の装置。
【請求項８】
前記ソース論理区画の前記イベント・ジェネレータによる、肯定応答を要求するイベントの生成に応答して、前記イベント・マネージャが、前記ソース論理区画への肯定応答の配送を行うように構成される、請求項７記載の装置。
【請求項９】
前記イベント・マネージャが、前記ターゲット論理区画の終了に応答して、前記ターゲット論理区画に関連付けられる前記肯定応答キュー上の保留の肯定応答を、前記ソース論理区画に自動的に戻すように構成される、請求項７記載の装置。
【請求項１０】
前記イベント・ドリブン通信インタフェースが使用可能キューを含み、前記保留キュー、肯定応答キュー及び使用可能キューのそれぞれが、イベントをメッセージ・レコードの形式で記憶し、前記使用可能キューが前記保留キュー及び前記肯定応答キューによる使用のために、少なくとも１つの未使用メッセージ・レコードを記憶するように構成される、請求項７記載の装置。
【請求項１１】
前記イベント・マネージャが、前記ターゲット論理区画の前記イベント記憶データ構造内の使用可能空間の検出に応答して、イベントを前記保留キューをバイパスして、前記ソース論理区画から前記ターゲット論理区画の前記イベント記憶データ構造に直接コピーするように構成される、請求項６記載の装置。
【請求項１２】
前記イベント・マネージャが、前記ソース論理区画からの取り消し要求に応答して、前記保留キュー上の保留イベントを取り消すように構成される、請求項６記載の装置。
【請求項１３】
メモリと、
前記メモリに接続される複数のプロセッサと、
前記複数のプロセッサの少なくとも１つ上で実行するように構成され、ソース論理区画とターゲット論理区画とを含む複数の論理区画間でメッセージ・レコード形式のイベント情報を伝達するように構成されるイベント・ドリブン通信インタフェースとを含み、
各前記論理区画が、前記メモリ内の独立したアドレス空間内で動作するように構成され、前記複数の論理区画によりアクセス可能な区画マネージャにより制御され、
前記イベント・ドリブン通信インタフェースが、
前記複数の論理区画からのソース論理区画内に少なくとも部分的に存在し、前記ソース論理区画に関連付けられる独立した前記アドレス空間内で、前記複数の論理区画からのターゲット論理区画により処理されるイベントを生成するイベント・ジェネレータと、
前記ターゲット論理区画内に少なくとも部分的に存在し、前記イベントを処理するように構成されるイベント・ハンドラと、
前記区画マネージャ内に少なくとも部分的に存在し、前記イベント・ジェネレータにより生成された前記イベントを、前記ソース論理区画に関連付けられる独立した前記アドレス空間から、前記ターゲット論理区画に関連付けられる独立した前記アドレス空間にコピーするように構成されるイベント・マネージャと
を含む、装置。
【請求項１４】
コンピュータ・システム内のソース論理区画とターゲット論理区画とを含む複数の論理区画間で情報を伝達する方法であって、
前記ソース論理区画とターゲット論理区画との間で、前記ソース論理区画及びターゲット論理区画の両方によりアクセス可能な区画マネージャ内に、少なくとも部分的に実装されるイベント・ドリブン通信インタフェースを介して、メッセージ・レコード形式のイベントを受け渡すステップと
前記イベントを前記ターゲット論理区画内で処理するステップと、
を含む、方法。
【請求項１５】
コンピュータ・システム内のソース論理区画とターゲット論理区画とを含む複数の論理区画間で情報を伝達する方法であって、
ソース論理区画とターゲット論理区画との間で、前記ソース論理区画及びターゲット論理区画の両方によりアクセス可能な区画マネージャ内に、少なくとも部分的に実装されるイベント・ドリブン通信インタフェースを介して、メッセージ・レコード形式のイベントを受け渡すステップであって、前記イベント・ドリブン通信インタフェースがイベント記憶データ構造を含み、前記イベント記憶データ構造が前記ターゲット論理区画内に存在し関連する保留標識を有する、ステップと、
前記保留標識を所定値にセットすることにより、前記ターゲット論理区画に保留イベントを通知するステップと、
前記保留標識を読出すことにより、前記ターゲット論理区画内で前記保留イベントを検出するステップと、
前記イベントを前記ターゲット論理区画内で処理するステップと、
を含む、方法。
【請求項１６】
前記複数の論理区画が基本論理区画と２次論理区画とを含み、前記区画マネージャの少なくとも一部が前記基本論理区画内に存在する、請求項１４もしくは１５に記載の方法。
【請求項１７】
前記ソース論理区画及びターゲット論理区画のそれぞれが、他の前記論理区画によりアクセス不能であり独立したアドレス空間内で動作する、請求項１４もしくは１５に記載の方法。
【請求項１８】
前記イベント・ドリブン通信インタフェースが、前記区画マネージャ内に存在する保留キューを含み、前記方法が、
前記ソース論理区画内でイベントを生成するステップと、
前記イベントを前記保留キュー内に一時的に記憶するステップと、
前記ターゲット論理区画による要求に応答して、前記イベントを前記ターゲット論理区画の前記イベント記憶データ構造にコピーするステップと
を含む、請求項１５記載の方法。
【請求項１９】
前記イベント・ドリブン通信インタフェースが肯定応答キューを含み、前記方法が、
前記ターゲット論理区画内で、前記イベントに対する肯定応答を生成するステップと、
前記肯定応答を前記肯定応答キューに記憶するステップと、
前記肯定応答を前記ソース論理区画にコピーするステップと
を含む、請求項１８記載の方法。
【請求項２０】
前記ターゲット論理区画の終了に応答して、前記ターゲット論理区画に関連付けられる前記肯定応答キュー上の保留の肯定応答を、前記ソース論理区画に自動的に戻すステップを含む、請求項１９記載の方法。
【請求項２１】
前記イベント・ドリブン通信インタフェースが使用可能キューを含み、前記保留キュー、肯定応答キュー及び使用可能キューのそれぞれが、イベントをメッセージ・レコードの形式で記憶し、前記使用可能キューが前記保留キュー及び前記肯定応答キューによる使用のために、少なくとも１つの未使用メッセージ・レコードを記憶するように構成される、請求項１９記載の方法。
【請求項２２】
前記ターゲット論理区画の前記イベント記憶データ構造内の使用可能空間の検出に応答して、イベントを前記保留キューをバイパスして、前記ソース論理区画から、前記ターゲット論理区画の前記イベント記憶データ構造に直接コピーするステップを含む、請求項１８記載の方法。
【請求項２３】
前記ソース論理区画からの取り消し要求に応答して、前記保留キュー上の保留イベントを取り消すステップを含む、請求項１８記載の方法。
【請求項２４】
ソース論理区画とターゲット論理区画とを含む複数の論理区画の各々が独立したアドレス空間において動作するように構成され、区画マネージャ内に、少なくとも部分的に実装され、前記複数の論理区画の間でメッセージ・レコード形式のイベント情報を伝達するように構成されるイベント・ドリブン通信インタフェースを含むプログラムと、
前記プログラムを含む信号担持媒体と
を含む、プログラム記録媒体。
【請求項２５】
前記信号担持媒体が、記録可能媒体または伝送型媒体の少なくともいずれかを含む、請求項２４記載のプログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、コンピュータ及びコンピュータ・ソフトウェアに関し、特に、論理的に区分化されたコンピュータにおける複数の論理区画の管理に関する。
【０００２】
【関連技術】
本願は以下の特許出願すなわち、Armstrongらによる米国特許出願第３１４５４１号（出願人整理番号：ＲＯ９９９０２１）"Apparatus and Method for Specifying Maximum Interactive Performance in a Logical Partition of a Computer System Independently from the Maximum Interactive Performance in Other Partitions"（１９９９年５月１９日出願）、Armstrongらによる米国特許出願第３１４７６９号（出願人整理番号：ＲＯ９９９０２２）"Processor Reset Generated via Memory Access Interrupt"（１９９９年５月１９日出願）、Armstrongらによる米国特許出願第３１４３２４号（出願人整理番号：ＲＯ９９９０２３）"Management of a Concurrent Use License in a Logically-Partitioned Computer"（１９９９年５月１９日出願）、及びArmstrongらによる米国特許出願第３１４２１４号（出願人整理番号：ＲＯ９９９０２５）"Logical Partition Manager and Method"（１９９９年５月１９日出願）に関連する。
【０００３】
【従来の技術】
コンピュータ技術は急速に進化し続けており、ソフトウェア、並びにこうしたソフトウェアが実行される基盤となるハードウェアの両面において、有意義な開発が行われている。コンピュータ技術における重要な進歩の１つは、マルチプロセッサ・コンピュータの開発であり、これは複数のコンピュータ・プロセッサが互いにインタフェースして複数の操作が同時に実行されることを可能にし、それによりこうしたコンピュータの全体性能を改善する。また、多数のマルチプロセッサ・コンピュータ設計が、論理区分化に頼ることにより、コンピュータ資源を割当てており、それにより複数同時タスクの性能を更に向上させる。
【０００４】
論理区分化により、単一の物理コンピュータが本質的に、複数の独立した"仮想"コンピュータ（論理区画と称される）のように動作することを可能にされ、物理コンピュータ内の様々な資源（例えばプロセッサ、メモリ、入出力装置）が、様々な論理区画の間で割当てられる。各論理区画は別々のオペレーティング・システムを実行し、ユーザから見て及び論理区画上で実行されるソフトウェア・アプリケーションから見て、完全に独立したコンピュータとして動作する。
【０００５】
しばしば"ハイパバイザ"または"区画マネージャ"と呼ばれる共用資源が、論理区画を管理し、異なる論理区画への資源の割当てを容易にする。この機能のコンポーネントとして、区画マネージャは様々な論理区画に対応して別々の仮想メモリ・アドレス空間を保持し、それにより、各論理区画により使用されるメモリが、他の論理区画とは完全に無関係となる。各仮想アドレス空間のアドレスを、コンピュータの物理アドレスすなわち実アドレス空間のアドレスにマップするために、一般に１つ以上のアドレス変換テーブルが区画マネージャにより使用される。論理区画が特定の仮想アドレスをアクセスしようとする都度、区画マネージャは仮想アドレスを実アドレスに変換し、共用メモリが論理区画により直接アクセスされる。
【０００６】
ほとんどの論理区分化コンピュータにおいて採用される重要な設計規則は、各論理区画の仮想アドレス空間が、他の論理区画から完全にアクセス不能なことである。論理区画のアドレス空間内の仮想アドレスへのアクセスを、その論理区画だけに制限するために、厳格なポリシが区画マネージャにより実施される。更に、論理区画は実アドレスを使用してメモリをアクセスすることを許可されず、従って、論理区画は自身が所有しない実アドレスを使用することにより、別の区画のメモリを破壊することができない。そのために、各論理区画は別々の物理コンピュータをエミュレートでき、非区分化コンピュータ用に元来設計されたアプリケーションが、変更またはカスタマイズ無しにしばしば論理区画内で実行され得る。
【０００７】
しかしながら、厳格なメモリ・アクセス規則の望ましくない副作用は、論理区画間での通信が一般に非常に制限されることである。各論理区画は、あたかもそれが別々の物理コンピュータであるかのように動作するので、一般に区画相互間通信の唯一の形式は、あるコンピュータがネットワーク上の別の物理コンピュータと通信する場合とほとんど同様に、従来のネットワーク・インタフェースを介して行われる。こうしたインタフェースを実現するために、しばしば各論理区画が、コンピュータ内の別のネットワーク・アダプタ資源に割当てられ、実際の通信が物理コンピュータ上のあるネットワーク・アダプタから、両方のネットワーク・アダプタが接続される外部ネットワークを介して、コンピュータ上の他のネットワーク・アダプタに返送される。このような通信は比較的遅く、面倒であり、少なくともコンピュータの処理コア内での内部通信に比較して、一般にかなり高価である。
【０００８】
【発明が解決しようとする課題】
従って、コンピュータ内において各論理区画の独立性を維持するメモリ・アクセス制御に準拠する一方で、論理区画間の通信を可能にする改善された態様が待望される。
【０００９】
【課題を解決するための手段】
本発明は、イベント・ドリブン通信インタフェースを用いて、論理区分化コンピュータ内の複数の論理区画間の通信をサポートする装置、プログラム製品、及び方法を提供することにより、従来技術に関連するこれらの及び他の問題を解決するものであり、特に、各論理区画が他の論理区画からは独立したアドレス空間内で動作する。イベント・ドリブン通信インタフェースは、各論理区画によりアクセス可能な区画マネージャ内に、少なくとも部分的に配置される。
【００１０】
本発明に従う実施例では、イベントが一般に論理区画間でメッセージの形式で受け渡しされる。メッセージは最初に、イベントを開始するソース論理区画から区画マネージャを通じて、イベントの宛先であるターゲット論理区画に渡される。論理区画間でのイベントの受け渡しは一般に、完全にコンピュータの内部ハードウェア・コンポーネントを通じて発生し、通常、ほとんどオーバヘッドを伴わない。従って、外部ネットワークなどを使用する場合に比べて、優れた性能が提供される。また、論理区画間でこうしたメッセージをイベントの形式で渡すことにより、論理区画のアドレス空間の独立性を緩和することなく通信が発生する。
【００１１】
本発明を特徴付けるこれらの及び他の利点及びフィーチャが、本明細書の特許請求の範囲で述べられる。しかしながら、本発明、並びに本発明の使用を通じて得られる利点及び目的をより理解するために、添付の図面、及び本発明の典型的な実施例に関する以下の説明を参照されたい。
【００１２】
【発明の実施の形態】
添付の図面を通じて、同一の参照番号は同一のパーツを示す。図１は、本発明に従うデータ処理装置またはコンピュータ１０を示す。データ処理装置１０は一般に、ネットワーク・サーバ、中規模コンピュータ、メインフレーム・コンピュータなどの、多数のマルチユーザ・コンピュータ・システムを表す。しかしながら、本発明は他のデータ処理装置、例えば、ワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータなどの、スタンドアロンまたは単一ユーザ・コンピュータ・システムや、組み込み制御装置などの他のコンピュータ装置においても実現され得る。データ処理装置１０の好適な実施例の１つは、ＩＢＭから販売されるＡＳ／４００シリーズ・コンピュータなどの、中規模コンピュータである。
【００１３】
データ処理装置１０は一般に、１つ以上のシステム・プロセッサ１２を含み、これらはダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のアレイなどから成る主記憶装置１４を含む、メモリ・サブシステムに接続される。更に、プロセッサ１２と主記憶装置１４との間には、キャッシュ・サブシステム１６が配置されており、これは一般に１レベル以上のデータ・キャッシュ、命令キャッシュ、または組み合わせキャッシュを含み、周知のように特定のキャッシュが個々のプロセッサを、または複数のプロセッサをサービスする。更に、主記憶装置１４はシステム・バス１８及び複数のインタフェース装置を介して、多数のタイプの外部（Ｉ／Ｏ）装置に接続される。こうしたインタフェース装置には、入出力バス接続インタフェース２０、ワークステーション制御装置２２、記憶制御装置２４などが含まれ、それぞれは１つ以上の外部ネットワーク２６、１つ以上のワークステーション２８、直接アクセス記憶装置（ＤＡＳＤ）３０などの１つ以上の記憶装置へのアクセスを提供する。
【００１４】
図２は、コンピュータ１０上の論理区分化コンピュータ環境を実現するために使用される、基本ソフトウェア・コンポーネント及び資源を詳細に示し、区画マネージャ４６により管理される複数の論理区画４０、４２、４４を含む。周知のように、任意の数の論理区画がサポートされる。
【００１５】
図示の実施例では、論理区画４０が基本区画として作用し、論理区画４２及び４４が２次区画として作用する。この状況において、基本区画はコンピュータ１０上の２次論理区画のパワー・オンまたはパワー・オフ処理や、２次論理区画のメモリ・ダンプの開始などコンピュータの一部の区画管理機能を共用する。区画マネージャ４６は基本区画制御ブロック５０により示され、これは基本区画４０内に存在するオペレーティング・システム５２内に配置される。他の区画管理サービスは全ての論理区画によりアクセスされ、共用サービス・ブロック４８により表される。基本論理区画内の区画管理機能の実現については、例えば前記関連米国特許出願第３１４２１４号（出願人整理番号：ＲＯ９９９０２５）で述べられている。しかしながら区画管理機能は、本発明に従う他の実施例では特定の論理区画内で実現される必要はない。
【００１６】
各論理区画はオペレーティング・システムを利用し（論理区画４０、４２及び４４に、オペレーティング・システム５２、５４及び５６がそれぞれ対応する）、オペレーティング・システムが、非区分化コンピュータのオペレーティング・システムと同様に論理区画の基本動作を制御する。例えば、各オペレーティング・システム５２乃至５６は、ＩＢＭから販売されるＯＳ／４００オペレーティング・システムを用いて実現され、これはカーネル上に存在する、例えばＡＳ／４００システム認可内部コード（ＳＬＩＣ：system licensed internal code）である。ブロック４８内の共用サービスは、ここでは区画認可内部コード（ＰＬＩＣ：partition licensed internal code）とも呼ばれる。
【００１７】
各論理区画４０乃至４４は、仮想メモリ６０により示される別々の、すなわち独立したメモリ空間内で実行される。更に各論理区画４０乃至４４は、コンピュータ１０内で使用可能な資源の一部を静的に、または動的に割当てられる。例えば、各論理区画は１つ以上のプロセッサ１２、並びに使用可能なメモリ空間の一部を仮想メモリ６０として割当てられる。論理パーティションはプロセッサなどの特定のハードウェア資源を共用し、所与のプロセッサが２つ以上の論理区画により利用される。別の実施例では、ハードウェア資源が１度に１つの論理区画にだけ割当てられる。
【００１８】
大容量記憶装置、バックアップ記憶装置、ユーザ入力、ネットワーク接続などの追加の資源が、周知のように、一般に１つ以上の論理区画に割当てられる。資源は例えば、バス毎にまたは資源毎に多様に割当てられ、複数の論理区画が同一バス上の資源を共用する。一部の資源は、１度に複数の論理区画に割当てられ得る。図２は、例えば３つの論理バス６２、６４及び６６を示し、バス６２上の複数の資源、例えば、直接アクセス記憶装置（ＤＡＳＤ）６８、制御パネル７０、テープ・ドライブ７２、及び光ディスク・ドライブ７４が、基本論理区画４０に割当てられる。他方、バス６４は資源を資源毎に割当てられ、例えばローカル・エリア・ネットワーク（ＬＡＮ）アダプタ７６、光ディスク・ドライブ７８、及びＤＡＳＤ８０が２次論理区画４２に割当てられ、ＬＡＮアダプタ８２及び８４が２次論理区画４４に割当てられる。バス６６は例えば、論理区画４４に特定的に割当てられたバスを表し、このバス上の全ての資源、例えばＤＡＳＤ８６及び８８が、同一の論理区画に割当てられる。
【００１９】
図２の特定の資源は、単に典型例に過ぎず、別の実施例では、資源の任意の組み合わせ及び構成が論理区画に割当てられてよい。更に、一部の実施例では、資源が動的に再割当てされ、他の論理区画のニーズに応える。更に、資源がコンピュータを特定のハードウェア装置とインタフェースするために使用される入出力プロセッサ（ＩＯＰ）の観点から表される。
【００２０】
図２に示され、また本発明の実施例を構成する様々なソフトウェア・コンポーネント及び資源が、様々なコンピュータ・ソフトウェア・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造などを用いて多様に実現される。これらは以下では、"コンピュータ・プログラム"または単に"プログラム"と称される。コンピュータ・プログラムは一般に、１つ以上の命令を含み、こうした命令は様々な時刻にコンピュータ内の様々なメモリ及び記憶装置内に存在し、またコンピュータ内の１つ以上のプロセッサにより読出され、実行されてコンピュータに本発明の様々な態様を実現するステップまたは要素を実行するのに必要なステップを実行させる。更に、本発明は完全機能型のコンピュータの状況で述べられるが、当業者であれば本発明の様々な実施例がプログラム製品として様々な形態で配布され、また本発明が実際に配布を行うために使用される特定タイプの信号担持媒体に関係なく、同様に当てはまることが理解できよう。信号担持媒体の例には、揮発性及び不揮発性メモリ装置、フロッピー（Ｒ）及び他の取り外し可能ディスク、ハード・ディスク・ドライブ、磁気テープ、光ディスク（例えばＣＤ−ＲＯＭ、ＤＶＤ）などの記録式媒体と、デジタル及びアナログ通信リンクなどの伝送タイプの媒体とが含まれる。
【００２１】
更に、後述の様々なプログラムが、本発明の特定の実施例において実現されるアプリケーションにもとづき識別される。また以下では便宜上、任意の特定のプログラム用語が使用されるが、本発明はこうした用語により識別される、または意味される特定のアプリケーションだけにその利用が制限されるものではない。
【００２２】
当業者であれば、図１及び図２に示される典型的な環境が、本発明を制限するものではないことが理解できよう。実際当業者であれば、他の代替ハードウェア及びソフトウェア環境が、本発明の範囲から逸れることなく使用可能であることが理解できよう。
【００２３】
イベント・ドリブン通信インタフェース：
本発明の図示の実施例は一般に、イベント・ドリブン通信インタフェースを用いて、論理区分化コンピュータ内の論理区画間の通信をサポートする。図示の実施例のイベント・ドリブン通信インタフェースは、イベントを論理区画間でメッセージ・レコードの形式で受け渡しする。詳細には、メッセージ・レコードはソース論理区画から区画マネージャに渡され、次に区画マネージャからターゲット論理区画に渡される。各論理区画は１つ以上のイベント・スタックを保持し、これはその論理区画により周期的にポーリングされて、最後のポーリング以来、論理区画のスタック上にイベントが配置されたか否かが判断される。保留のイベントに対して、ターゲット論理区画が適切なイベント・ハンドラを呼び出し、これがイベントに作用することに加え、肯定応答（ＡＣＫ）イベントをオリジナル・ソース論理区画に、基本的に同一のイベント構造を介して返送する。
【００２４】
図示の実施例では、イベント・ベースの通信インタフェースが、各論理区画の他に、区画マネージャ内で実現されるコンポーネントを有する。図２に示されるように、例えばコンピュータ１０は通信インタフェースを含み、これは各論理区画４０、４２及び４４内のイベント・ジェネレータ９０及びイベント・ハンドラ９２モジュールを用いて、それぞれ対応する論理区画内でイベントを生成及び処理する。区画マネージャ４６内のイベント・マネージャ９４は、ソース論理区画のイベント・ジェネレータ９０と、ターゲット論理区画のイベント・ハンドラ９２との間のイベントの受け渡し、並びに使用可能なメッセージ・レコードの保守、及びＡＣＫイベントの処理を後述のように取り扱う。
【００２５】
他のイベント・ベースの通信プロトコルも、別の実施例において使用される。更にイベント・マネージャ、イベント・ジェネレータ、及びイベント・ハンドラの間と同様に、区画マネージャと論理区画との間でも機能の特定の割当てが他のアプリケーションにおいて変化し得る。従って、本発明はここで開示される特定の実施例に制限されるものではない。
【００２６】
図３は、図２のイベント・ドリブン通信システムにおいて使用される幾つかのデータ構造を示す。特に各論理区画は一般に、イベント・スタック１００などの１つ以上のイベント記憶データ構造を含み、各々がそれに関連付けられる保留フラグ１０２を含む。各論理区画はまた、メッセージ・レコード１０３のための記憶域を含み、論理区画はこれを用いて、後述のように他の論理区画に渡されるイベント・メッセージを作成する。
【００２７】
図示の実施例では、各イベント記憶データ構造１００が循環スタックとして実現されるが、例えばプッシュプル・スタックなどの他のスタック、及び他のデータ構造も別の実施例において使用され得る。更に、１つのこうしたイベント記憶データ構造１００が１区画につき示されるが、実施例によっては、性能及び記憶容量を向上するために複数のデータ構造が使用される。例えば、複数のプロセッサが特定の論理区画に割当てられる実施例では、各こうしたプロセッサに対して、イベント・スタックを含むことが望ましいであろう。
【００２８】
保留フラグ１０２は、保留イベントが区画マネージャ内に記憶されており、そのフラグが関連付けられる論理区画による受信を待機しているか否かに関する標識を記憶する。一般に、各保留フラグ１０２は特定のイベント・スタック１００に関連付けられ、従って、複数のイベント・スタックが１論理区画内で使用される場合、複数の保留フラグが使用される。別の実施例では、保留イベントが論理区画による受信を待機していることを示すために他のデータ構造も使用される。
【００２９】
論理区画間で受け渡しされるメッセージ・レコードを保持するために、一連のキューが区画マネージャ内に提供され、ここで述べるイベント・ドリブン通信インタフェースを実現する。参照番号１０４は複数の使用可能キューを示し、各々はメッセージ・レコード１０６のリンク・リストを含む。各使用可能キューは、多数の未使用のメッセージ・レコードを記憶するために使用される。図示の実施例では、１使用可能キューがソース論理区画とターゲット論理区画との間の、各潜在パスに割当てられる。更に、各こうしたパスに対して１使用可能キューが各イベント・タイプに対して使用される。使用可能キュー１０４はそれ自体３次元アレイに編成され、ソース論理区画、ターゲット論理区画、及びイベント・タイプにより指標付けされる。使用可能キューの合計は、イベント・タイプの数と論理区画の数の自乗との積に等しい。
【００３０】
使用可能キューのアレイは、メッセージ・レコードの事前に割当てられた固定ヒープとして機能する。しかしながら、メッセージ・レコードのためのメモリは、他の実施例では動的に割当てられ得る。更に、特定の論理区画がソースまたはターゲット論理区画として使用されない場合、使用可能キューの数がそれに従い減少され得る。
【００３１】
キューの他の２つのアレイが、区画マネージャ内に提供される。第１は保留キュー１０８のアレイであり、各々がリンク・リストの形式で記憶される複数のメッセージ・レコード１１０を含む。保留キュー・アレイ１０８は、異なる論理区画への転送を保留中のイベントを記憶するために使用される。各論理区画に対して１保留キューが提供され、アレイがターゲット論理区画により指標付けされる。更に、論理区画が２つ以上のイベント・スタックを使用する場合、保留キューが各こうしたイベント・スタックに対して割当てられる。
【００３２】
第２に、肯定応答（ＡＣＫ）キュー１１２が提供され、これはターゲット論理区画へ渡された先行イベントに対する肯定応答として、ソース論理区画に返送されるのを待機中の、メッセージ・レコード１１４のリンク・リストを保持する。保留キューのアレイと同様に、１つのＡＣＫキューが各論理区画に対して提供される。更に、任意の論理区画が２つ以上のイベント・スタックを含む場合、１つのＡＣＫキューが各こうしたスタックに対して提供される。
【００３３】
図３の構成では、固定数のメッセージ・レコードが１度割当てられ、様々なキューの間で繰り返し受け渡しされ、それにより新たなイベント、ＡＣＫなどに対してメモリを動的に割当てる必要性を排除する。しかしながら、本発明に従うイベント・ドリブン通信を実現するために、他のデータ記憶手法も使用され得る。
【００３４】
図４は、図３の各キューにより使用されるメッセージ・レコード１２０の好適なフォーマットを示す。図示の実施例の各メッセージは可変サイズであり、最小サイズが２４バイトであり、最大サイズが２５６バイトである。各メッセージ・レコードはヘッダを含み、これは複数のフィールド、例えばフィールド１２２乃至１４０を含む。フィールド１２２は８ビット（１バイト）フィールドであり、一連の１ビット・フラグ１２２ａ乃至１２２ｄを含む。これらは有効フラグ１２２ａ、ＡＣＫタイプ・フラグ１２２ｂ、ＡＣＫ標識フラグ１２２ｃ、及びＳＩＧ／ＡＣＫフラグ１２２ｄである。追加の予備空間１２２ｅも、フィールド１２２内に含まれる。
【００３５】
有効フラグ１２２ａは、メッセージ・レコード内のデータが有効で、まだターゲット論理区画により処理されていないことを示すために使用される。フラグ１２２ｂは、特定イベントに対して要求されるＡＣＫが、肯定応答の即時タイプか、据え置きタイプかを示す。フラグ１２２ｃは、メッセージ・レコード内で指定されるイベントに対して肯定応答が要求されるか否かを示す。フラグ１２２ｄは、メッセージ・レコードが新たなイベントに対応するか、または肯定応答に対応するかを示す。
【００３６】
図示の実施例では、即時肯定応答は肯定応答を要求するイベントに応答して、ターゲット論理区画がこうした肯定応答をソース論理区画に戻すことを要求する。他方、据え置き肯定応答はターゲット論理区画からの即時肯定応答を要求せず、ターゲット論理区画の終了に応答して、ソース論理区画が自動的に通知されることを可能にする、加入または登録機構の形式として使用される。
【００３７】
以下で詳述するようにこうした構成は、任意のターゲット論理区画、例えば２次論理区画が終了するときにソース論理区画、例えば基本論理区画が通知されるように基本的に同意することを可能にする。図示の実施例における同意は一般に、ソース論理区画のイベント・ジェネレータが、追跡される各ターゲット論理区画に対してイベントを生成することを要求する。各こうしたイベントは、関連メッセージ・レコードのフラグ１２２ｂ及び１２２ｃを有し、これらのフラグは据え置きＡＣＫがイベントに対して要求されることを示す。ターゲット論理区画が終了すると、イベント・マネージャは据え置きＡＣＫをソース論理区画に自動的に返却する。実施例によっては各論理区画に対して、別々の即時ＡＣＫキュー及び据え置きＡＣＫキューの使用をサポートすることが望ましく、この場合、据え置きＡＣＫだけが論理区画の終了に応答して、自動的に発行される。
【００３８】
フィールド１２４は、最大２５６の異なるイベント・タイプをサポートする８ビット（１バイト）タイプ・フィールドである。フィールド１２６は１６ビット・サブタイプ・フィールドであり、各イベント・タイプの下で６５５３６のイベントをサポートする。以下で詳述するように、各イベント・タイプは特定のイベント・ハンドラ・ルーチンと、任意的にそのイベント・タイプに関連付けられる肯定応答ハンドラ・ルーチンとに関連付けられる。所与のイベント・タイプの下での各特定のイベントは、（少なくとも初期には）同一のイベント・ハンドラ・ルーチンにより処理される。
【００３９】
フィールド１２８及び１３０は、イベントに関連付けられるソース及びターゲット論理区画をそれぞれ識別する１バイト識別子であり（最大２５６の論理区画をサポートする）、フィールド１３２はメッセージ・レコードの全体サイズよりも小さなサイズを示す１バイト値である（従って、メッセージ・レコードが最大２５６バイトであることを可能にする）。
【００４０】
フィールド１３４は、ステータス情報をソース及びターゲット論理区画に提供する１バイト戻りコードである。戻りコードは、イベントに関する任意の数の細目を指定し、それらには例えば、成功結果、イベントの待ち行列化のためにバッファが使用不能なこと、イベントの取り消し操作の成功、無効アドレス、無効区画識別子、無効レコード・サイズ、無効タイプまたはサブタイプ、無効イベント・データ、論理区画の終了、イベント・パスのクローズ、総称エラー、或いはソース論理区画に関連する他の情報が含まれる。更に、戻りコードは、メッセージ・レコードに関連付けられるイベント特定データ内に、追加のエラー情報が提供されることを示し得る。
【００４１】
フィールド１３６及び１３８は、それぞれ１６ビットのソース及びターゲット・インスタンス識別子を提供する。ソース及びターゲット・インスタンス識別子は、ソース論理区画が特定のターゲット論理区画への指定パスをオープンしようとする都度確立される。図示の実施例では、ソース論理区画が区画マネージャからパスの割当てを要求し、返答としてそのパスに関連付けられる１対の識別子を受信することにより、こうしたパスをオープンする。これらの識別子は、パス上を伝達される将来イベントにより使用される。区画マネージャ内のソース及びターゲット・インスタンス識別子の有効性チェックは、アクティブ・パスが確立される間、論理区画間の通信を制限することにより直列化を単純化する。パスが論理区画により、または区画マネージャによりクローズされる都度、そのパスのインスタンス識別子が無効となり、更にパス上の通信が禁止される。
【００４２】
フィールド１４０は６４ビットの相関トークンを記憶する。相関トークンはソース論理区画により生成され、区画マネージャにより、肯定応答を対応イベントに突き合わせるために使用される。ソース論理区画もまた相関トークンを用いることにより、肯定応答を発行済みイベントに対して局所的に記憶されたメッセージ・データと突き合わせる。
【００４３】
フィールド１４２は、特定のイベントに対して要求される追加データを提供するために使用される、３２ビットのイベント依存データ・フィールドを含む。フィールド１４２で提供されるデータを越える追加データを要求するイベントに対して、フィールド１４４は、０バイト乃至２３２バイト長の可変サイズのデータ・フィールドを提供し、それにより２４バイト乃至２５６バイトの全体メッセージ・レコード・サイズを提供する。
【００４４】
様々な変更が、本発明に従う図示のメッセージ・レコードに対して可能である。例えば、メッセージ・レコードが固定サイズであって、別のサイズ・フィールドの必要性を排除してもよい。更に、フィールドの構成及びサイズに関する数え切れない変更、及びデータの他の組み合わせが、本発明に従うメッセージ・レコード内に記憶され得る。従って本発明は、ここで示す特定の情報構成に限られるものではない。
【００４５】
本発明に従うイベント・ドリブン通信をサポートするために、イベント・マネージャ９４が、各論理区画にとって使用可能な機能またはサービスのセットを含む。例えば、図示の実施例のイベント・マネージャ９４は、少なくともイベント通知機能（signalLPEvent()）、保留イベント獲得機能（getPendingLPEvents()）、肯定応答通知機能（signalLPACK()）、及び保留イベント取り消し機能（cancelLPEvent()）を提供する。追加のサービス、例えば、論理区画がメッセージ・レコード内の特定のデータ・フィールドを変更または検索することを可能にするサービスなどが、サポートされてもよく、これらの使用及び構成については、当業者には明らかであろう。
【００４６】
イベント・マネージャ９４により提供される基本サービスをより詳細に示すために、図５乃至図８は、イベント・マネージャとソース論理区画内のイベント・ジェネレータとの、及びターゲット論理区画内のイベント・ハンドラとの対話を示す。例えば、図５はイベント通知ルーチン１５０を示し、これはイベントをターゲット論理区画に渡す目的で、ソース論理区画内のイベント・ジェネレータにより開始される。
【００４７】
イベント通知ルーチン１５０はブロック１５２で開始し、特定のターゲット論理区画に渡されるイベントのために、メッセージ・レコード・データを生成し、これは一般に、ソース論理区画内に提供されるメッセージ・データ記憶１０３（図３参照）内に生成される。次にブロック１５４で、イベント・マネージャ内のsignalLPEvent()機能１５６が、ソース論理区画内のイベント・マネージャにより呼び出される（参照番号１５８で示される）。この機能呼び出しにより提供されるのは、ソース論理区画内のメッセージ・データ・レコードを指し示すポインタである。
【００４８】
signalLPEvent()機能１５６はブロック１６０で開始し、メッセージ・レコード・データにより提供されるインスタンスＩＤが有効か否かを判断する。更にこの時点で、追加のフォーマット・チェックが発生し得、例えばメッセージ・レコードのサイズが有効範囲内であるか否かなどを確認する。インスタンスＩＤが有効でない場合、ブロック１６２で、無効インスタンスＩＤエラーがソース論理区画に戻される。これは一般に、固有のコードを当該機能に提供されるメッセージ・レコードの戻りコード・フィールドに記憶することによる。
【００４９】
しかしながらインスタンスＩＤが有効な場合、制御はブロック１６４に移行し、イベントが肯定応答を要求するか否かを判断するか、或いはターゲット論理区画イベント・スタックが満杯か否かを判断する。図示の実施例では、イベントが肯定応答を要求するか否かの判断が、イベント・マネージャに提供されるメッセージ・レコードのフラグ１２２ｃをチェックすることにより行われる。ターゲット論理区画イベント・スタックが満杯か否かの判断は、最初に関数呼び出し内で提供されるメッセージ・レコードから、ターゲット論理区画を識別し、次に有効フラグ１２２ａのテストにより、ターゲット論理区画が既に前のイベントを処理したか否かを確認することにより行われる。
【００５０】
この点に関し図示の実施例では、区画マネージャは各論理区画内の各イベント・スタックに対して、イベントをコピーするための次のエントリを指し示す実アドレス・ポインタを保持する。対応する仮想アドレス・ポインタも、論理区画内に別々に保持される。仮想アドレス・ポインタは、初期プログラム・ロード（ＩＰＬ）の間に、論理区画が区画マネージャに新たなイベント・スタック用にメモリを割当てるための要求を出す度に初期設定される。こうした要求の間、区画マネージャはメモリをイベント・スタックのために割当て、仮想アドレス・ポインタを論理区画に戻す。その時区画マネージャはまた、仮想アドレス・ポインタの実アドレスをキャッシュし、後にイベント・スタックが区画マネージャによりアクセスされるようにする。こうした初期化ルーチンの構成は、当業者の能力の範囲内で実現されるので、ここでは詳述しない。更に、イベント・スタック内の現位置のレコードを保持する他の方法も、別の実施例において使用され得る。
【００５１】
ブロック１６４に戻り、イベントが肯定応答を要求するか、またはターゲット論理区画イベント・スタックが満杯の場合、制御はブロック１６６に移行し、メッセージ・レコードをこの機能に提供されるメッセージ・レコード内で指定される特定のソース論理区画、ターゲット論理区画、及びイベント・タイプの使用可能キューから検索しようとする。ブロック１６６は、こうしたメッセージ・レコードが使用可能キュー上で使用可能か否かを判断する。こうしたメッセージ・レコードが使用不能な場合、制御はブロック１６８に移行し、"バッファ使用不能"エラーを一般にメッセージ・レコードの戻りコード・フィールド内に記して、ソース論理区画に戻す。しかしながら、メッセージ・レコードが使用可能な場合、制御はブロック１７０に移行しそのレコードを指し示すポインタを検索することにより、使用可能なメッセージ・レコードを獲得する。次にブロック１７２で、この機能に提供されるメッセージ・レコード・データを使用可能なメッセージ・レコード内にコピーする。制御は次にブロック１７４に移行する。更に、ブロック１６４に戻り、イベントが肯定応答を要求せず、またターゲット論理区画イベント・スタックが満杯でない場合には、ブロック１６４が制御を直接ブロック１７４に渡し、ブロック１６６乃至１７２をバイパスする。
【００５２】
ブロック１７４は再度、ターゲット論理区画イベント・スタックが満杯か否かを判断する。満杯でない場合、制御はブロック１７６に移行し、使用可能なメッセージをターゲット論理区画に対応する保留キューにエンキューする。図示の実施例の各キューのリンク・リストにより、メッセージ・レコードのエンキューは一般に、使用可能キュー内のレコードのチェーンからメッセージ・レコードを除去し、メッセージ・レコードを保留キュー内のレコードのチェーンに挿入することによる。これらの両方はルーチン・リスト操作であり、実際にメッセージ・レコード・データをメモリ内の新たな位置に移動するのではなく、単にポインタを更新することによる。他のデータ構造では、他の操作が要求され得る。
【００５３】
次にブロック１７８は、ターゲット論理区画に関連付けられる保留フラグをセットし、その区画に対して保留イベントが現在、その論理区画に関連付けられる保留キュー上に存在することを示す。制御は次にブロック１８０に移行し、"成功"コードをソール論理区画に戻す。
【００５４】
ブロック１７４に戻り、ターゲット論理区画イベント・スタックが満杯でない場合、制御はブロック１８２に移行し、イベント・マネージャのターゲット論理区画イベント・スタック・ポインタを増分し、新たなイベントのために、次のイベント・スタック・エントリを確保する。図示の実施例では、イベント・スタック・エントリは６４バイト・ブロックに分割される。機能に提供される完全なメッセージ・レコードを組み込むために必要な適切な量だけ、イベント・スタック・ポインタを増分することにより必要な数のブロックが確保される。しかしながら、固定サイズのメッセージ・レコードを使用する実施例では、固定のオフセットがイベント・スタック・ポインタに追加される。更に、循環イベント・スタックの使用は、一旦スタックに割当てられるメモリの終わりに達するとき、イベント・スタック・ポインタがイベント・スタックの先頭に循環することを保証するために、追加の境界チェックを必要とし得る。これは一般に、最大サイズ（例えば２５６バイト）のイベントを、イベント・スタック内で割当てられた残りのメモリ内に挿入するのに不十分な空間しか存在しない場合に、ポインタがイベント・スタックの先頭を指し示すように更新することにより処理される。
【００５５】
次にブロック１８４では、機能に提供されたデータを確保されたターゲット論区画イベント・スタック・エントリに直接コピーし、それにより、ターゲット論理区画に対する保留キューの使用をバイパスする。更にブロック１８６で、イベントに応答したＡＣＫの必要性により、使用可能メッセージが割当てられた場合、こうした使用可能メッセージがＡＣＫキュー上にエンキューされ、ターゲット論理区画から期待される来たる肯定応答のためにメッセージを確保する。制御は次にブロック１８８に移行し、イベント・スタック・エントリに対して有効フラグをセットし、次にブロック１８０に移行し、"成功"コードをソース論理区画に戻す。
【００５６】
ソース論理区画への"成功"または"エラー"・コードの返却に際して（ブロック１６２、１６８または１８０、及び１９０で示される）、signalLPEvent()機能１５６が完了する。図５に示されるように、ソース論理区画へのコードの返却に際して、区画はブロック１９２で、エラーが区画マネージャにより示されたか否かを判断する。エラーが示された場合、エラーがブロック１９４で処理される。エラーが返却されない場合、ブロック１９６で示されるように、処理は正常に継続される。エラー処理及び続く処理は、受信される特定のエラー、及び開始されたイベントのタイプに応じて変化する。これについては、本発明の完全な理解に必要ではないので説明を省略する。
【００５７】
図５から分かるように、signalLPEvent()機能１５６は、未使用のエントリがターゲット論理区画イベント・スタック上に存在すると判断される度に、保留イベントを保留キュー上に配置する必要性をバイパスし、ターゲット論理区画がそのキューから保留イベントの検索を開始することを要求するように最適化される。更に、こうしたイベントが更にＡＣＫを要求しない場合、ＡＣＫキュー上へのメッセージ・レコードの割当てもバイパスされる。そうすることで、主に直列化要件の低減により、メッセージ・レコードを保留またはＡＣＫキュー上に移動することに関連するオーバヘッドが回避され、イベントの処理が加速される。しかしながら他の実施例では、全てのイベントがここで述べる同一のキュー機構を通過することが望ましいかもしれない。従って、signalLPEvent()機能１５６のブロック１６４及び１７４での、ターゲット論理区画イベント・スタックが満杯か否かのチェック、及びブロック１８２乃至１８８で実行される操作が、本発明の他の実施例では省略され得る。
【００５８】
次に図６及び図７は、ターゲット論理区画のイベント・ハンドラの立場から見た、イベント・ハンドラにより実行される入来イベント処理ルーチン２００を示す。ステップ２０２で示されるように、一旦初期化されると、ターゲット論理区画のイベント・ハンドラが、それに関連付けられるイベント・スタックの有効及び保留フラグを周期的にポーリングし、保留イベントがターゲット論理区画による処理のために使用可能か否かを判断する。一般に、保留イベントのポーリングは、例えばタスク・スイッチの間の期間や、周期タイマの満了後、または当業者には明らかな他の状況など、ディスパッチ・ウィンドウの間に実行される。この実施例では、保留フラグがイベント・スタック全体に関連付けられ、イベントが区画マネージャ内の保留キュー内に記憶されており、ターゲット論理区画による検索を待機していることを示す。更に、有効フラグは、ターゲット論理区画イベント・スタック上のエントリ内の第１ビットに当たる。
【００５９】
ブロック２０４で示されるように、各ディスパッチ・ウィンドウの間、ルーチン２００は最初に、保留フラグがセットされているか否かを判断する。セットされていない場合、制御はブロック２０６に移行し、イベント・スタック内のエントリに関連付けられる有効フラグが、セットされているか否かを判断する。セットされてない場合、制御はブロック２０２に移行し、保留イベントの再ポーリングのために、次のディスパッチ・ウィンドウまで待機する。
【００６０】
ブロック２０４に戻り、保留フラグがセットされている場合、制御はブロック２０８に移行し、区画マネージャ内において、getPendingLPEvents()機能２１０を呼び出す（２１２で示される）。getPendingLPEvents()機能２１０はブロック２１４で開始し、次のメッセージを、ターゲット論理区画に関連付けられる保留キューからデキューする。これは一般に、ポインタを保留キュー上の第１のメッセージ・レコードに戻し、保留キューのリンク・リストを、そのレコードをスキップするように更新することにより行われる。ブロック２１６は次に、保留メッセージが成功裡にデキューされたか否か（すなわち、未処理の保留メッセージがキュー上で見いだされたか否か）を判断する。
【００６１】
最初に保留メッセージが成功裡にデキューされたとすると、制御はブロック２１８に移行し、保留キューからデキューされたメッセージ・レコード内のイベント・データを、ターゲット論理区画イベント・スタック内の現エントリ内にコピーする。次にブロック２２０は、メッセージ・レコードのフラグ１２２ｃ及び１２２ｄをチェックすることにより、イベントがＡＣＫを要求する通知イベント（または新たなイベント）か否かを判断する。そうである場合、制御はブロック２２２に移行し、ターゲット論理区画のＡＣＫキュー上のメッセージをエンキューすることにより、期待肯定応答に対してメッセージ・レコードを確保する。制御は次にブロック２２４に移行し、イベント・マネージャにより保持されるターゲット論理区画イベント・スタック・ポインタを（６４バイト境界上に整列される）イベントのサイズだけ増分する。制御は次にブロック２２６に移行し、空間がターゲット論理区画イベント・スタック内で依然使用可能か否かを判断する。
【００６２】
イベント・スタック内の空間が依然使用可能な場合、制御はブロック２１４に戻り、保留キューから次のメッセージをデキューしようとする。空間が依然使用可能である限り、各保留メッセージ・レコードは引き続き保留キューからデキューされ、ターゲット論理区画イベント・スタック上にコピーされる。ブロック２１６で示されるように、一旦全ての保留メッセージがデキューされると、制御はブロック２３０に移行し、ターゲット論理区画イベント・スタックに関連付けられるターゲット論理区画メモリ内の保留フラグをクリアし、ターゲット論理区画に、保留イベントがキュー内に存在しないことを知らせる。制御は次に２３２で示されるように、ターゲット論理区画のイベント・ハンドラに戻る。更に、ブロック２２６に戻り、全ての保留メッセージをデキューする前に、ターゲット論理区画イベント・スタックが満杯の場合、制御はそれに関連付けられる保留フラグをクリアすることなく、イベント・ハンドラに戻り、ターゲット論理区画イベント・ハンドラに、追加のイベントがそのキュー上で保留状態であることを示す。
【００６３】
ブロック２０６に戻り、ターゲット論理区画イベント・スタック内の任意のエントリの有効フラグがセットされている場合（これはsignalLPEvent()機能１５６における、区画マネージャによる直接コピーの結果によるか、getPendingLPEvents()機能２１０における、保留キューからのコピーによる）、制御は図７のブロック２３４に移行する。ブロック２３４は、論理区画イベント・スタック上の次のイベント・エントリをデコードする。ブロック２３６は次に、イベントがＡＣＫか否かを判断する。イベントがＡＣＫの場合、制御はブロック２３８に移行し、メッセージ・レコード内で指定されるイベント・タイプに対応して、適切なＡＣＫハンドラを呼び出す。
【００６４】
制御は次にブロック２４０に移行し、イベント・エントリの有効ビットをクリアする。しかしながらその前に、エントリ内のあらゆる他のブロック・データ内の対応する第１ビットがクリアされる。これは最後のブロックから開始して、エントリを通じて反対順序で進行し、従って、エントリに対応してクリアされる最後のビットは、メッセージ・レコードの第１ブロック内のビットに相当する（すなわち、有効ビット１２２ａ）。更に、ターゲット論理区画スタック・ポインタが、イベント・スタック内の次のエントリを指し示すように更新される。更に、新たなネクスト・ポインタと、スタックの終わりとの間の空間が最大イベント・サイズよりも小さい場合、ネクスト・ポインタがイベント・スタックの先頭を指し示すようにセットされる。エントリの第１ブロック内の有効ビットを最後にクリアする前に、各イベント・エントリ内の後続のブロックに関連付けられる第１ビットをクリアすることにより、エントリ内に記憶されるイベントの処理がターゲット論理区画により完了されるまで、エントリが区画マネージャにより上書きされないように保証する。他の実施例では、ターゲット論理区画による処理の完了以前に、保留イベントが区画マネージャにより上書きされるのを防止するために、他の直列化機構が使用される。
【００６５】
次にブロック２４２は、有効フラグがセットされたエントリをチェックすることにより、別のイベントが論理区画イベント・スタック上で保留状態か否か判断する。保留状態のイベントが存在する場合、制御はブロック２３４に戻り、次のイベントをデコードする。存在しない場合には、制御はブロック２０２（図６）に戻り、後のディスパッチ・ウィンドウ内で、将来のイベントの受信を待機する。
【００６６】
ブロック２３６に戻り、デコードされたイベントがＡＣＫイベントでない場合、制御はブロック２４４に移行し、メッセージ・レコード内で指定されるイベント・タイプに対応して、適切なイベント・ハンドラを呼び出す。次にブロック２４６で、エントリに記憶されるメッセージ・レコードのフラグ１２２ｃをチェックすることにより、ＡＣＫがイベントにより要求されるか否かを判断する。ＡＣＫが要求されない場合、制御はブロック２４０に直接移行し、イベントの処理を完了する。
【００６７】
しかしながら、ＡＣＫイベントが要求される場合、制御はブロック２４８に移行し、ＡＣＫイベントのためのメッセージ・レコード・データを生成する（例えば、図３において１０３で示される予備空間内に生成する）。制御は次にブロック２５０に移行し、区画マネージャ内においてsignalLPACK()機能２５２を呼び出す（図７で２５４で示される）。
【００６８】
signalLPACK()機能２５２はブロック２５６で開始し、ＡＣＫキュー上で一致メッセージを見いだそうとする。これは一般に、機能呼び出しと共に提供されるメッセージ・レコード・データに関連付けられる相関トークンまたは、ソース及びターゲット・インスタンスＩＤを比較することによる。ブロック２５８は、一致レコードが見いだされたか否かを判断する。見いだされない場合、ブロック２６０で、"ＡＣＫメッセージ無し"・エラーがターゲット論理区画に戻される。しかしながら、対応するＡＣＫメッセージが見いだされる場合、制御はブロック２６２に移行し、ＡＣＫメッセージ・データをターゲット論理区画メモリから、ＡＣＫキュー上で以前に割当てられたＡＣＫメッセージにコピーする。ブロック２６４は次に、メッセージをソース論理区画に対応する保留キュー上にエンキューし、ブロック２６６はソース論理区画メモリ内の保留フラグをセットし、保留ＡＣＫがソース論理区画による処理のために使用可能であることを示す。次にブロック２６８で、"成功"コードがターゲット論理区画に戻される（２７０で示される）。これでsignalLPACK()機能２５２が完了する。
【００６９】
機能呼び出しからの復帰に際して、制御はブロック２７２に移行し、エラーが戻されたか否かを判断する。エラーが戻された場合、ステップ２７４でエラーが適切に処理される。しかしながら、エラーが戻されない場合、制御はブロック２４０に移行し、イベントの処理を完了する。
【００７０】
（ターゲット論理区画からsignalLPACK()機能２５２を開始することにより、）ソース区画に対する保留キュー上にＡＣＫを配置すると、ソース論理区画のイベント・ハンドラが、ソース論理区画内で実行される対応するルーチン２００から、getPendingLPEvents()機能を呼び出す。ＡＣＫイベントの処理は、ターゲット論理区画の場合に述べたのと同様に進行する。
【００７１】
図８は次に、イベント取り消しルーチン２８０を示す。これはターゲット論理区画による処理の前に、保留イベントを取り消すことが所望されるとき、ソース論理区画により開始される。例えば、ソース論理区画により、許容時間内に応答が受信されなかったと判断される場合、イベントのを取り消しが所望されるかもしれない。１例として、ターゲット論理区画にイベントを伝えた後、ソース論理区画は、応答が受信されるべき許容時間を設定するタイマをセットする。ターゲット論理区画から応答を受信することなく、タイマが満了する場合、イベントを待機し続けるのではなく、単にイベントを取り消すことが望ましいであろう。他の実施例では、インスタンスがイベントの取り消しを必要とし得る。
【００７２】
ルーチン２８０はブロック２８２で開始し、区画マネージャ内において、cancelLPEvent()機能２８４を呼び出す（２８６により示される）。機能２８４がブロック２８８で開始し、機能呼び出し内で指定されるターゲット論理区画に関連付けられるＡＣＫまたは保留キュー上において、一致メッセージ・レコードを見いだそうとする。次にブロック２９０は、一致レコードが見いだされたか否かを判断する（これは一般に、相関トークン、ソース及びターゲット・インスタンスＩＤの一致にもとづく）。こうした一致レコードが見いだされない場合、ブロック２９０が制御をブロック２９２に移し、"非存在（not found）"エラーをソース論理区画に戻す。しかしながら、こうした一致レコードが見いだされる場合には、制御はブロック２９４に移行し、イベントが取り消されたことを示すように、メッセージ・レコード内のメッセージ・データを変更する。これは一般に、メッセージ・レコード内に特定の戻りコードをセットすることによる。次にブロック２９６で、メッセージ・レコードがソース論理区画に対応する保留キュー上にエンキューされ、ブロック２９８で、ソース論理区画イベント・スタックに関連付けられる保留フラグをセットする。次にブロック３００は、"成功"コードをソース論理区画に返却し、処理はソース論理区画に戻る（３０２で示される）。次に、エラーが示されるか否かにもとづき、ブロック３０４は制御を好適なエラー・ハンドラ３０６に戻し、エラーを処理するか、或いは、処理を適切な態様で継続する（３０８で示される）。取り消されたメッセージ・レコードをソース論理区画に対応する保留キュー上に配置すると、ソース論理区画内のイベント・ハンドラにおける次のディスパッチ・ウィンドウの間に、取り消されたイベントの検索及び処理が開始する。
【００７３】
図９は、区画デキューＡＣＫルーチン３２０を示し、これは特定の論理区画が終了したとの判断に応答して、イベント・マネージャにより実行される。一般にルーチン３２０は、論理区画のシャットダウンの間に、区画マネージャの別のコンポーネントにより呼び出される。論理区画の終了の間に、多数の追加の操作が実行されるが、これらは本開示の範囲外である。従って、これらの他の操作については、ここでは述べないことにする。
【００７４】
ルーチン３２０は、任意のソース論理区画により伝えられるイベントの肯定応答を保証するために使用される。更に前述のように、ルーチン３２０は他の論理区画に、特定の論理区画が終了したとの通知を提供するためにも使用される。そのためにルーチン３２０はブロック３２２で開始し、終了されるターゲット論理区画に対応するＡＣＫキュー内において、次のメッセージ・レコードを獲得する。こうしたメッセージが見いだされる限り、ブロック３２４は制御をブロック３２６に渡し、ターゲット論理区画が終了されることを示すようにメッセージ・データを変更する。これは一般に、メッセージ・レコード内に固有の戻りコードをセットすることによる。次にブロック３２８で、メッセージ・レコードが、メッセージ・レコード内で識別されるソース論理区画に対応する保留キューにエンキューされる。次にブロック３３０は、ソース論理区画メモリ内の保留フラグをセットし、制御はブロック３２２に戻り、ターゲット論理区画に対応するＡＣＫキューから、次のメッセージを獲得する。一旦こうした全てのメッセージが、ターゲット論理区画ＡＣＫキューから、メッセージに関連付けられるソース論理区画に対応する適切な保留キューに移動されると、ルーチン３２０が完了する。
【００７５】
一旦、固有のコードを有するメッセージが開始論理区画に対応する保留キュー上に配置されると、これらの論理区画がそれらのメッセージ・レコードを前述のように検索し、メッセージをデコードすることにより、ターゲット論理区画が終了されたことを判断できる。前述のようにこうした実施例は、基本論理区画が、例えば２次論理区画が不意に終了するときを通知されることを可能にする。更に、各ターゲット論理区画に対して、別々の据え置きＡＣＫキュー及び即時ＡＣＫキューがサポートされる場合、ルーチン３２０が、終了されたターゲット論理区画に関連付けられる据え置きＡＣＫキューに対してのみ、作用してもよい。
【００７６】
通知イベント及びＡＣＫイベントの両方の基礎的な通信機構は、非常に対称的で、一般にターゲット論理区画により、ほぼ同様に受信及び処理される。しかしながら他の実施例では、通知イベント及びＡＣＫイベントに対して別々の通信パスが使用されてもよい。
【００７７】
本発明によれば、イベント及びイベント・タイプの任意の組み合わせがサポートされることが理解できよう。例えば、決して限定的でない１実施例では、区画マネージャ・イベント・タイプ、マシン・ファシリティ・イベント・タイプ、セッション・マネージャ・イベント・タイプ、入出力完了イベント・タイプ、及び仮想バス・イベント・タイプの５つの別々のイベント・タイプが使用される。
【００７８】
区画マネージャ・イベント・タイプは、２次論理区画の異常終了や２次論理区画により基本区画に向けられるリセットの完了、或いは終了する２次論理区画に割当てられた全ての入出力（Ｉ／Ｏ）装置のリセットの完了などを示す信号を、区画マネージャから基本区画に送信するために使用される。
【００７９】
マシン・ファシリティ・イベント・タイプは、サービス・プロセッサや様々なパワー制御機構などのマシン・ファシリティを共用するために、２次論理区画と基本論理区画との間で通信するために使用される。更に、マシン・ファシリティ・イベント・タイプは、区画パワー・ダウン要求及び初期プログラム・ロード（ＩＰＬ）要求を、２次論理区画から基本論理区画に送信するために使用される。
【００８０】
セッション・マネージャ・イベント・タイプは、基本論理区画と２次論理区画との間の高水準セッション・レベル通信機構を実現するために使用される。こうしたイベント・タイプを用いることにより、複数のセッションが同一の基本イベント・パス上を伝送される。
【００８１】
入出力完了イベント・タイプは、Ｉ／Ｏ完了割込み及び他のＩ／Ｏ割込みをイベント・ドリブン通信システムを介して、区画マネージャから様々な論理区画に伝達するために使用される。
【００８２】
仮想バス・イベント・タイプは、論理区分化コンピュータ内の様々な論理区画間で仮想バスを確立し、それを介してデータを伝達するために使用される。１例として、ＩＢＭから販売されるＡＳ／４００シリーズ中規模コンピュータは、クラスタ化されたＡＳ／４００コンピュータ間で、OptiConnect（商標）バスとして知られる高速ハードウェア・バスをサポートする。このタイプのイベントにより、複数の物理コンピュータの場合のごとく、複数の論理区画がクラスタとして作用するように、イベント・ドリブン通信インタフェースが、こうした物理的な高速ハードウェア・バスをエミュレートするために使用される。このプロトコルを通じて、及びイベント・ドリブン通信インタフェースをアクセスする好適な高水準機能を通じて、バスが仮想的である事実が、実際には高速相互接続を駆動する論理区画内で実行される全てのソフトウェアにとって透過的となる。結果的に、複数の物理コンピュータを相互接続するために使用される同一のクラスタ化ソフトウェアが、論理区分化コンピュータ上で、変更を伴わずに同様に使用される。他の変更についても、当業者には明らかであろう。
【図面の簡単な説明】
【図１】  本発明に従うコンピュータのブロック図である。
【図２】  図１のコンピュータ内の基本ソフトウェア・コンポーネント及び資源のブロック図である。
【図３】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにより使用されるデータ構造のブロック図である。
【図４】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおける典型的なメッセージ・レコード・フォーマットのブロック図である。
【図５】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおける信号イベント・ルーチンのプログラム・フローを示すフローチャートである。
【図６】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおける入来イベント処理ルーチンのプログラム・フローを示すフローチャートである。
【図７】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおける入来イベント処理ルーチンのプログラム・フローを示すフローチャートである。
【図８】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおけるイベント取り消しルーチンのプログラム・フローを示すフローチャートである。
【図９】  図１及び図２のコンピュータ内のイベント・ドリブン通信インタフェースにおける区画デキューＡＣＫルーチンのプログラム・フローを示すフローチャートである。
【符号の説明】
１０  データ処理装置
１２  システム・プロセッサ
１４  主記憶装置
１６  キャッシュ・サブシステム
１８  システム・バス
２０  入出力バス接続インタフェース
２２  ワークステーション制御装置
２４  記憶制御装置
２６  外部ネットワーク
２８  ワークステーション
３０  直接アクセス記憶装置（ＤＡＳＤ）
４０、４２、４４論理区画
４６  区画マネージャ
４８  共用サービス・ブロック
５０  基本区画制御ブロック
５２、５４、５６  オペレーティング・システム
６０  仮想メモリ
６２、６４、６６  論理バス
６８、８０、８６、８８  直接アクセス記憶装置（ＤＡＳＤ）
７０  制御パネル
７２  テープ・ドライブ
７４  光ディスク・ドライブ
７６  ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ
７８  光ディスク・ドライブ
８２、８４  ＬＡＮアダプタ
９０  イベント・ジェネレータ
９２  イベント・ハンドラ
９４  イベント・マネージャ
１００  イベント記憶データ構造
１０２  保留フラグ
１０３、１０６、１１０、１２０  メッセージ・レコード
１０８  保留キュー
１１２  肯定応答（ＡＣＫ）キュー
１２２ａ  有効フラグ
１２２ｂ  ＡＣＫタイプ・フラグ
１２２ｃ  ＡＣＫ標識フラグ
１２２ｄ  ＳＩＧ／ＡＣＫフラグ
１２２ｅ  予備空間
【図１】
0003777095.tif 000002
【図２】
0003777095.tif 000003
【図３】
0003777095.tif 000004
【図４】
0003777095.tif 000005
【図５】
0003777095.tif 000006
【図６】
0003777095.tif 000007
【図７】
0003777095.tif 000008
【図８】
0003777095.tif 000009
【図９】
0003777095.tif 000010