(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-18
(54)【発明の名称】仮想マシン実行中のアクセス不可能なプレフィックス・ページ
(51)【国際特許分類】
G06F 12/14 20060101AFI20240910BHJP
G06F 9/455 20180101ALI20240910BHJP
G06F 9/48 20060101ALI20240910BHJP
【FI】
G06F12/14 510D
G06F9/455 150
G06F9/48 110G
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024507888
(86)(22)【出願日】2022-08-25
(85)【翻訳文提出日】2024-02-07
(86)【国際出願番号】 EP2022073696
(87)【国際公開番号】W WO2023031014
(87)【国際公開日】2023-03-09
(32)【優先日】2021-08-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ブサバ、ファディ
(72)【発明者】
【氏名】ヘラー、リサ
(72)【発明者】
【氏名】フランク、ヤーノシュ、アンドレアス
(72)【発明者】
【氏名】ボーントレーガー、クリスチャン
(72)【発明者】
【氏名】ブラッドベリー、ジョナサン
【テーマコード(参考)】
5B017
【Fターム(参考)】
5B017AA01
5B017BA01
5B017BB08
5B017CA01
(57)【要約】
仮想マシンがディスパッチされ、このディスパッチに基づいて、仮想マシンによってアクセス可能であり、仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、仮想マシンによってアクセス可能であるかどうかに関する判定が行われる。メモリの選ばれた領域が仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行が終了される。
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、前記プログラム命令が、
仮想マシンのディスパッチに基づいて、前記仮想マシンによってアクセス可能であり、前記仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、前記仮想マシンによってアクセス可能であるかどうかを判定することと、
前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む方法を実行する、コンピュータ・プログラム製品。
【請求項2】
前記方法が、前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能であるということの決定に基づいて、前記仮想マシンの1つまたは複数のゲスト命令を実行することをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、前記方法が、
前記仮想マシンのゲスト命令に関して、前記メモリの選ばれた領域へのアクセスが存在することになるかどうかを判定することと、
アクセスが存在することになるということの決定に基づいて、前記アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかをチェックすることと、
前記アクセスが前記明示的アクセスまたは前記暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションを実行することとをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて1つまたは複数の選ばれたアクションを実行することとを含む、請求項3に記載のコンピュータ・プログラム製品。
【請求項5】
前記暗黙的アクセスの前記理由が非同期割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、前記仮想マシンにおいて前記非同期割り込みを保留中に保ち、前記選ばれた傍受コードを伴って終了し、前記仮想マシンのホストに戻ることとを含む、請求項4に記載のコンピュータ・プログラム製品。
【請求項6】
前記暗黙的アクセスの前記理由がプログラム割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるかどうかを判定することと、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したかどうかに基づいて処理を実行することとを含む、請求項4に記載のコンピュータ・プログラム製品。
【請求項7】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生しなかったということの決定に基づいて、命令処理を続けることを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、
前記ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることと、
前記チェックが、前記ゲスト命令がトランザクション実行の一部として実行されることを示すことに基づいて、前記選ばれた傍受コードを伴って仮想マシンの実行を終了し、トランザクション実行を異常終了することとを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項9】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、
前記ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることと、
前記チェックが、前記ゲスト命令がトランザクション実行の一部として実行されないことを示すことに基づいて、前記例外の種類を決定することと、
前記例外の前記種類に基づいて、1つまたは複数の選択されたアクションを実行することとを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項10】
例外の前記種類が無効例外または抑制例外であることに基づいて、前記1つまたは複数の選択されたアクションが、前記ゲスト命令を無効にすることを含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項11】
例外の前記種類が完了例外または早期指定例外であることに基づいて、前記1つまたは複数の選択されたアクションが、
割り込み情報をセキュアな場所に保存することと、
例外のために前記仮想マシンをロックすることと、
前記選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む、請求項9に記載のコンピュータ・プログラム製品。
【請求項12】
前記方法が、
前記仮想マシンの次の開始時に、前記仮想マシンのロックを調べることと、
前記ロックすることによって前記ロックが設定されていることに基づいて、プログラム例外処理を完了することとをさらに含む、請求項11に記載のコンピュータ・プログラム製品。
【請求項13】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが方法を実行するように構成されており、前記方法が、
仮想マシンのディスパッチに基づいて、前記仮想マシンによってアクセス可能であり、前記仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、前記仮想マシンによってアクセス可能であるかどうかを判定することと、
前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む、コンピュータ・システム。
【請求項14】
前記メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、前記方法が、
前記仮想マシンのゲスト命令に関して、前記メモリの選ばれた領域へのアクセスが存在することになるかどうかを判定することと、
アクセスが存在することになるということの決定に基づいて、前記アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかをチェックすることと、
前記アクセスが前記明示的アクセスまたは前記暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションを実行することとをさらに含む、請求項13に記載のコンピュータ・システム。
【請求項15】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて、1つまたは複数の選ばれたアクションを実行することとを含み、前記暗黙的アクセスの前記理由が非同期割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、前記仮想マシンにおいて前記非同期割り込みを保留中に保ち、前記選ばれた傍受コードを伴って終了し、前記仮想マシンのホストに戻ることとを含む、請求項14に記載のコンピュータ・システム。
【請求項16】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて、1つまたは複数の選ばれたアクションを実行することとを含み、前記暗黙的アクセスの前記理由がプログラム割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるかどうかを判定することと、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したかどうかに基づいて処理を実行することとを含む、請求項14に記載のコンピュータ・システム。
【請求項17】
コンピューティング環境内の処理を容易にするコンピュータ実装方法であって、前記コンピュータ実装方法が、
仮想マシンのディスパッチに基づいて、前記仮想マシンによってアクセス可能であり、前記仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、前記仮想マシンによってアクセス可能であるかどうかを判定することと、
前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む、コンピュータ実装方法。
【請求項18】
前記メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、
前記仮想マシンのゲスト命令に関して、前記メモリの選ばれた領域へのアクセスが存在することになるかどうかを判定することと、
アクセスが存在することになるということの決定に基づいて、前記アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかをチェックすることと、
前記アクセスが前記明示的アクセスまたは前記暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションを実行することとをさらに含む、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて、1つまたは複数の選ばれたアクションを実行することとを含み、前記暗黙的アクセスの前記理由が非同期割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、前記仮想マシンにおいて前記非同期割り込みを保留中に保ち、前記選ばれた傍受コードを伴って終了し、前記仮想マシンのホストに戻ることとを含む、請求項18に記載のコンピュータ実装方法。
【請求項20】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて、1つまたは複数の選ばれたアクションを実行することとを含み、前記暗黙的アクセスの前記理由がプログラム割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるかどうかを判定することと、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したかどうかに基づいて処理を実行することとを含む、請求項18に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
1つまたは複数の態様は、一般に、コンピューティング環境内の処理を容易にすることに関連しており、特に、そのような処理を改善することに関連している。
【背景技術】
【0002】
コンピューティング環境は、多くの場合、オペレーティング・システムと通信するためにマシンまたはプログラムによって使用されるメモリの選ばれた領域を含む。メモリのこの領域は、プレフィックス・ページと呼ばれることがあり、1つの例では、メモリの8K(キロバイト)を含む。メモリは、実メモリとして定義され、アクセスのために動的変換は必要とされない。これらのページは、一連の定義済みの割り当てられたストレージ位置を含む。オペレーティング・システム構成内の各仮想プロセッサは、一意のプレフィックス値を有する。このプレフィックス値は、割り当てられた実ストレージ位置を、そのプロセッサのみによって使用される絶対アドレスにマッピングする。メモリのページは、プログラムの実行中に明示的または暗黙的にアクセスされ得る。明示的アクセスは、例えば、International Business Machines Corporationによって提供されるz/Architecture(R)命令セット・アーキテクチャで定義されているスーパーバイザ呼び出し命令または機能リスト格納命令のような、特定の命令の実行に起因して発生する。暗黙的アクセスは、命令実行の範囲外の条件に起因して発生し、例えば、マシン・チェック、外部割り込み、入出力(I/O:input/output)割り込みなどの、設計された割り込み、あるいは格納の副作用として、またはトランザクションの異常終了に起因して、命令の実行中に発生したプログラム割り込みを含む。
【0003】
例えば、マシンによってプログラム例外が検出された場合、マシンは、プログラム例外に関する情報をプレフィックス・ページに格納する。この情報は、実行中のプログラムの現在のプログラム状態ワード(PSW:program status word)および命令アドレス(プログラムの旧PSWと呼ばれる)、発生したプログラム例外の種類(プログラム割り込みコード)、およびメモリ・アドレス、アドレス指定モードなどの、例外に関する情報を含む。加えて、マシンは、ソフトウェア・プログラム割り込みハンドラのプログラム状態ワードおよび命令アドレス(プログラムの新PSWとしても知られている)を取得し、これを使用して、オペレーティング・システムにおいてプログラム割り込みハンドラの実行を開始する。プログラム例外を処理した後に、オペレーティング・システムは、プログラムの旧PSWを復元し、元のプログラムの実行を再開する。さらに、1つの例では、ゲストにメモリ・トランザクションが発生したときに、ゲストのプレフィックス・ページも、診断情報と共に格納される。
【0004】
仮想化をサポートするコンピューティング環境では、仮想マシン(ゲスト)のプレフィックス・ページが仮想マシンにマッピングされ、仮想マシンによってアクセス可能にされる。ハイパーバイザ(またはホスト)のゲストとして実行されている仮想マシンの場合、ゲストのプレフィックス・ページが実ページとしてアクセスされるが、ハイパーバイザのレベルで仮想化を提供し、ゲストの実ページをホストの絶対ストレージにマッピングする、ハイパーバイザ変換が存在することがある。
【0005】
標準的なハイパーバイザの実装では、仮想マシンのプレフィックス・ページが、ハイパーバイザに知られている。ハイパーバイザは、これらのページをメモリ内で固定し、ゲスト実行の持続時間の間、それらのホスト変換を有効に保つ責任を有する。仮想マシンのプレフィックス・ページの固定は、ゲストのプレフィックス・ページをページ・アウトするのを防ぐようにメモリ管理方式を変更することが困難になるため、ハイパーバイザにとって厄介である。セキュア仮想マシンの実行は、ハイパーバイザのメモリ管理をさらに複雑にする。この場合、セキュリティ上の理由のため、プレフィックス・ページが動的ハードウェア変換からまだマッピングされている場合でも、ハイパーバイザは、セキュア・ゲストに属するプレフィックス・ページにアクセスできなくなる。これによって、信頼できないハイパーバイザがゲストのデータに影響を与え、アクセスするのを防ぐ。
【0006】
セキュア仮想マシンを含む仮想マシンに関連する処理、およびプレフィックス・ページの使用が、容易にされるべきである。
【発明の概要】
【0007】
コンピューティング環境内の処理を容易にするためのコンピュータ・プログラム製品の提供によって、従来技術の欠点が克服され、追加の利点がもたらされる。コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、方法を実行するために1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含む。この方法は、仮想マシンのディスパッチに基づいて、仮想マシンによってアクセス可能であり、仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、仮想マシンによってアクセス可能であるかどうかを判定することを含む。メモリの選ばれた領域が仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行が終了される。このようにして、アクセス可能であることが期待されるメモリの選ばれた領域がアクセス可能でない場合に、ゲスト命令の実行を防ぐことによって、処理を容易にする。
【0008】
1つの例では、メモリの選ばれた領域が仮想マシンによってアクセス可能であるということの決定に基づいて、仮想マシンの1つまたは複数のゲスト命令が実行される。
【0009】
1つの例では、メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、仮想マシンのゲスト命令に関して、メモリの選ばれた領域へのアクセスが存在することになるかどうかの判定が行われる。アクセスが存在することになるということの決定に基づいて、このアクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかに関して、チェックが行われる。アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションが実行される。
【0010】
アクセス可能であることが期待されるメモリの選ばれた領域が、処理を容易にするために、アクセス性に関して再度チェックされる。1つまたは複数の態様は、ゲストの実行の持続時間の間、ハイパーバイザがゲスト(例えば、仮想マシン)のメモリの選ばれた領域(例えば、プレフィックス・ページ)を固定された状態に保つことができなくなる状況に対処する。
【0011】
例として、アクセスが暗黙的アクセスであることに基づいて、1つまたは複数のアクションは、例えば、暗黙的アクセスの理由を決定することと、暗黙的アクセスの理由に基づいて、1つまたは複数の選ばれたアクションを実行することとを含む。
【0012】
1つの例では、暗黙的アクセスの理由が非同期割り込みであることに基づいて、1つまたは複数の選ばれたアクションは、例えば、メモリの選ばれた領域の予備テストを実行することと、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかを判定することとを含む。例として、メモリの選ばれた領域の予備テスト中に例外が発生したということの決定に基づいて、仮想マシンにおいて非同期割り込みが保留中の状態に保たれ、選ばれた傍受コードを伴う、仮想マシンのホストに戻る終了が存在する。
【0013】
1つの例では、暗黙的アクセスの理由がプログラム割り込みであるということに基づいて、1つまたは複数の選ばれたアクションは、プログラム割り込みが、メモリの選ばれた領域にアクセスするためであるかどうかを判定することと、プログラム割り込みが、メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、メモリの選ばれた領域の予備テストを実行することとを含む。1つの例では、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかに関する判定が行われ、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかに基づいて、処理が実行される。
【0014】
1つの例では、処理を実行することは、メモリの選ばれた領域の予備テスト中に例外が発生しなかったということの決定に基づいて、命令処理を続けることを含む。1つの例では、メモリの選ばれた領域の予備テスト中に例外が発生したということの決定に基づいて、処理を実行することは、ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることを含む。チェックが、ゲスト命令がトランザクション実行の一部として実行されることを示すことに基づいて、選ばれた傍受コードを伴って仮想マシンの実行が終了され、トランザクション実行が異常終了される。1つの例では、チェックが、ゲスト命令がトランザクション実行の一部として実行されないことを示すことに基づいて、例外の種類が決定され、例外の種類に基づいて、1つまたは複数の選択されたアクションが実行される。
【0015】
例として、例外の種類が無効例外または抑制例外であることに基づいて、1つまたは複数の選択されたアクションは、ゲスト命令を無効にすることを含む。さらに、1つの例では、例外の種類が完了例外または早期指定例外であることに基づいて、1つまたは複数の選択されたアクションは、割り込み情報をセキュアな場所に保存することと、例外のために仮想マシンをロックすることと、選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む。
【0016】
1つの例では、仮想マシンの次の開始時に、仮想マシンのロックが調べられ、ロックすることによってロックが設定されていることに基づいて、プログラム例外処理が完了する。
【0017】
終了の原因/条件を決定し、それに基づいてアクションを実行することによって、処理が容易にされる。
【0018】
1つまたは複数の態様に関連するコンピュータ実装方法およびシステムも本明細書に記載され、請求される。さらに、1つまたは複数の態様に関連するサービスも本明細書に記載され、請求されてよい。
【0019】
さらなる特徴および利点が、本明細書に記載された技術によって実現される。他の実施形態および態様は、本明細書において詳細に説明され、請求される態様の一部と見なされる。
【0020】
1つまたは複数の態様は、本明細書の最後にある特許請求の範囲において例として具体的に指摘され、明確に請求される。前述の内容、ならびに1つまたは複数の態様の目的、特徴、および利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0021】
【
図1】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの例を示す図である。
【
図2】本発明の1つまたは複数の態様に従って、セキュア仮想マシンを含む仮想マシンを開始することにおいて使用される制御ブロックの1つの例を示す図である。
【
図3A】本発明の1つまたは複数の態様に従って、仮想マシンの実行に関連するプレフィックス・アクセス処理の1つの例を示す図である。
【
図3B】本発明の1つまたは複数の態様に従って、仮想マシンの実行に関連するプレフィックス・アクセス処理の1つの例を示す図である。
【
図4A】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの例を示す図である。
【
図4B】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの例を示す図である。
【
図4C】本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にする1つの例を示す図である。
【
図5A】本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例を示す図である。
【
図5B】本発明の1つまたは複数の態様に従って、
図5Aのメモリのさらなる詳細を示す図である。
【
図6】本発明の1つまたは複数の態様に従って、クラウド・コンピューティング環境の1つの実施形態を示す図である。
【
図7】本発明の1つまたは複数の態様に従って、抽象モデル・レイヤの1つの例を示す図である。
【発明を実施するための形態】
【0022】
本発明の1つまたは複数の態様に従って、コンピューティング環境内の処理を容易にするための能力が提供される。例として、この能力は、メモリの選ばれた領域(例えば、プレフィックス・ページ)のアクセス性に基づいて仮想マシンの実行中に実行される、選択的処理を含む。
【0023】
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の1つの実施形態が、
図1を参照して説明される。例として、コンピューティング環境は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/Architecture(R)命令セット・アーキテクチャに基づく。z/Architecture命令セット・アーキテクチャの1つの実施形態は、“z/Architecture Principles of Operation," IBM Publication No.SA22-7832-12, Thirteenth Edition, September 2019という公開文献に記載されており、この公開文献は本明細書において参照によってその全体が本明細書に組み込まれている。しかし、z/Architecture命令セット・アーキテクチャは1つの例示的なアーキテクチャにすぎず、International Business Machines Corporationまたは他の実体あるいはその両方の、他のアーキテクチャまたは他の種類のコンピューティング環境あるいはその両方が、本発明の1つまたは複数の態様を含むか、または使用するか、あるいはその両方であってよい。z/ArchitectureおよびIBMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0024】
図1を参照すると、1つの例では、コンピューティング環境100は中央処理装置複合体(CPC:central processor complex)102を含む。中央処理装置複合体102は、例えば、IBM Z(R)サーバ(または、International Business Machines Corporationもしくは他の実体によって提供される他のサーバもしくはマシン)であり、例えば、1つまたは複数のプロセッサ・ユニット(プロセッサとも呼ばれる)110および入出力(I/O:input/output)サブシステム111に結合されたメモリ104(システム・メモリ、メイン・メモリ、主記憶装置、中央記憶装置、ストレージとも呼ばれる)などの、複数のコンポーネントを含んでいる。プロセッサ・ユニット110の例としては、1つまたは複数の汎用プロセッサ(セントラル・プロセッサまたは中央処理装置(CPU:central processing units)としても知られている)または1つまたは複数の他のプロセッサあるいはその両方が挙げられる。IBM Zは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0025】
I/Oサブシステム111は、中央処理装置複合体の一部であるか、または中央処理装置複合体から分離することができる。I/Oサブシステム111は、主記憶装置104と、中央処理装置複合体に結合された入出力制御ユニット108および入出力(I/O)デバイス106との間の情報の流れを方向付ける。
【0026】
多くの種類のI/Oデバイスが使用されてよい。1つの特定の種類は、データ・ストレージ・デバイス140である。データ・ストレージ・デバイス140は、1つまたは複数のプログラム142、1つまたは複数のコンピュータ可読プログラム命令144、またはデータ、あるいはその組合せなどを格納することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成され得る。
【0027】
中央処理装置複合体102は、取り外し可能/取り外し不可、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むか、またはそのようなコンピュータ・システム・ストレージ媒体に結合されるか、あるいはその両方であることができる。例えば、中央処理装置複合体102は、取り外し不可、不揮発性の磁気媒体(通常は、「ハード・ドライブ」と呼ばれる)、取り外し可能、不揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、あるいはCD-ROM、DVD-ROM、または他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りまたは書き込みを行うための光ディスク・ドライブ、あるいはその組合せを含むか、またはこれらに結合されるか、あるいはその両方であることができる。他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、中央処理装置複合体102と併用できるということが理解されるべきである。その例として、マイクロコードまたはミリコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【0028】
さらに、中央処理装置複合体102は、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用され得る。中央処理装置複合体102での使用に適し得る周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例としては、パーソナル・コンピュータ(PC:personal computer)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが挙げられるが、これらに限定されない。
【0029】
中央処理装置複合体102は、1つまたは複数の実施形態では仮想化をサポートし、仮想化のサポートでは、例えば、メモリ104が、1つまたは複数の仮想マシン112(ゲストとも呼ばれる)、仮想マシンを管理するハイパーバイザ114などの仮想マシン・マネージャ、信頼できる実行環境115、およびプロセッサ・ファームウェア116を含む。ハイパーバイザ114の1つの例は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるz/VM(R)ハイパーバイザである。ハイパーバイザは、ホストと呼ばれることがある。z/VMは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。
【0030】
1つまたは複数の実施形態では、信頼できる実行環境115は、例えば、本明細書に記載されているようなプロセスを実行するように構成されたハードウェアまたはファームウェアあるいはその両方において少なくとも部分的に実装されてよい。信頼できる実行環境は、メモリ保護ハードウェアを利用してメモリ保護を実施する、信頼できるファームウェア(ウルトラバイザと呼ばれることもある)またはハードウェアあるいはその両方である。ゲストの所有者は、ホスト鍵文書に埋め込まれた公開ホスト鍵を使用することによって、(例えば、IBM Secure Executionを使用して)情報を信頼できる実行環境に安全に渡すことができる。機密情報を処理するために、信頼できる実行環境は、一致する秘密ホスト鍵を使用する。秘密ホスト鍵は、サーバ(例えば、IBM Z(R)サーバ)に固有であり、ハードウェア保護される。
【0031】
プロセッサ・ファームウェア116は、例えば、プロセッサのマイクロコードまたはミリコードを含む。プロセッサ・ファームウェア116は、例えば、上位レベルのマシン・コードの実装において使用される、ハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。1つの実施形態では、プロセッサ・ファームウェア116は、例えば、信頼できるソフトウェアを含んでいるマイクロコードまたはミリコード、基盤になるハードウェアに固有のマイクロコードまたはミリコードとして通常は提供され、システムのハードウェアへのオペレーティング・システムのアクセスを制御する、独自のコードを含む。
【0032】
中央処理装置複合体の仮想マシンのサポートは、多数の仮想マシン112を操作する能力を提供し、各仮想マシン112は、異なるプログラム120と共に動作し、Linux(R)オペレーティング・システムなどのゲスト・オペレーティング・システム122を実行することができる。各仮想マシン112は、別々のシステムとして機能することができる。すなわち、各仮想マシンは、独立してリセットされ、ゲスト・オペレーティング・システムを実行し、異なるプログラムと共に動作することができる。仮想マシン内で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように見えるが、実際は、その一部のみが利用可能である。z/VMおよびLinuxが例として提供されているが、本発明の1つまたは複数の態様に従って、他の仮想マシン・マネージャまたはオペレーティング・システムあるいはその両方が使用されてよい。Linux Foundation(世界規模での商標の所有者であるLinus Torvaldsの専用実施権者)からのサブライセンスに従って、登録商標Linux(R)が使用される。
【0033】
1つの実施形態では、1つまたは複数の仮想マシン112がセキュア仮想マシンである。セキュア仮想マシンは、ハイパーバイザがセキュア仮想マシンの状態(例えば、メモリ、レジスタなど)を観察できない方法で、ハイパーバイザ(例えば、ハイパーバイザ114)によって開始される。例えば、機密コンピューティングの1つの実施形態では、ハイパーバイザは、セキュア仮想マシンを開始/停止することができ、ハイパーバイザは、セキュア仮想マシンを開始するために使用されるデータがどこにあるかを識別するが、実行中のセキュア仮想マシンの中を見ることはできない。セキュア仮想マシンを読み込む/開始するために使用されるデータは、ハイパーバイザがセキュア・マシンを見ることができない方法で暗号化されてよい。セキュア仮想マシン・イメージの所有者は、機密データをセキュア・ゲスト・メタデータ内に配置し、その後、セキュア仮想マシン・イメージをセキュア・ゲスト・メタデータと共に生成する。セキュア仮想マシンが読み込まれた後に、セキュア仮想マシントの状態とのすべての情報のやりとりが、信頼できる実行環境115などの信頼できる実行環境によって処理される。
【0034】
1つの例では、
図2を参照すると、セキュア仮想マシンを開始するために、ハイパーバイザ(例えば、ハイパーバイザ114)が、信頼できる実体(例えば、ウルトラバイザ)によって実行される、解釈実行開始命令などの仮想マシン開始命令200を発行する。例として、仮想マシン開始命令200は、制御ブロック(例えば、ホスト(例えば、ハイパーバイザ114)と仮想マシンの間のインターフェイスを含んでいる非セキュア状態記述202)を指し示すオペランドを含む。例として、非セキュア状態記述202は、開始されている仮想マシンがセキュア仮想マシンであるかどうかを示すセキュア・インジケータ204を含む。例えば、セキュア・インジケータ204が例えば1に設定された場合、仮想マシンはセキュア仮想マシンである(セキュア・インジケータ204が例えば0に設定された場合、仮想マシンは非セキュア仮想マシンである)。さらに、非セキュア状態記述202は、セキュア実行識別情報206と、別の制御ブロック(セキュア状態記述220)を指し示す、セキュア状態記述ポインタ210と呼ばれるポインタとを含む。セキュア状態記述220は、ハイパーバイザによって見られるべきでないセキュア仮想マシンの機密データを含む。1つの例では、セキュア状態記述220は、非セキュア状態記述202へのポインタ230も含む(開始されている仮想マシンが非セキュア仮想マシンである場合、1つの例では、セキュア状態記述が指し示されず、使用もされない)。
【0035】
セキュア仮想マシンのための仮想マシン開始命令を実行することに基づいて、信頼できる実体は、セキュア仮想マシンをハードウェアに読み込み、開始命令が完了したときに、仮想マシンがハードウェア上で安全に実行されている。セキュア仮想マシンまたは非セキュア仮想マシンの実行の持続時間の間、メモリの選ばれた領域(例えば、プレフィックス・ページ)が、仮想マシンによってアクセス可能であるべきである。すなわち、ホストのマッピングが有効であり、関連するホスト絶対アドレスが取得されることが可能であり、ページがアクセスされ得る。しかし、このことは仮定され得ない。したがって、仮想マシンの実行中にチェックが実行され、メモリの選ばれた領域がアクセス可能でない場合、特定のアクションが実行される。この処理の1つの実施形態が、
図3A~
図3Bを参照して説明される。
【0036】
1つの例では、
図3Aを参照すると、ハイパーバイザ(例えば、ハイパーバイザ114)が仮想マシンをディスパッチする(300)。このディスパッチに基づいて、1つの例では、信頼できる実体(例えば、ウルトラバイザ)によって処理が実行される。例えば、アクセス可能であることが期待されるメモリの選ばれた領域か、実際にアクセス可能であるかどうかに関する判定が行われる。1つの例では、メモリの選ばれた領域がプレフィックス・ページであり、したがって、プレフィックス・ページがアクセス可能であるかどうかに関する判定が行われる(302)。プレフィックス・ページがアクセス可能でない場合、本発明の態様に従って、選ばれた傍受コード(例えば、コード112)を伴って仮想マシンの実行が終了する(304)。しかし、プレフィックス・ページがアクセス可能である場合、仮想マシンの1つまたは複数のゲスト命令が実行されてよい(306)。
【0037】
ゲスト命令の実行中に、プレフィックス・ページがアクセスされない(例えば、プレフィックスのアクセスが必要とされない)場合(308)、ゲスト命令処理が継続する。しかし、プレフィックス・ページがアクセスされる場合(308)、(例えば、信頼できる実体によって)アクセスが明示的であるかどうか、すなわち、特定の命令の実行に起因するアクセスであるかどうかに関する判定が行われる(310)。アクセスが明示的である場合、ページがアクセスされ、ページ・アクセス中に例外が発生した場合に、例外が報告される(312)。しかし、アクセスが暗黙的アクセスである場合(314)、(例えば、信頼できる実体によって)アクセスの理由に関する決定が行われる(316)。
【0038】
プレフィックス・ページのアクセスの理由が非同期割り込み(例えば、入出力割り込み、外部割り込みなど)である場合(318)、(例えば、信頼できる実体によって)アクセスされるプレフィックス・ページの予備テストが行われる(320)。予備テストが例外を示す場合(322)、仮想マシンにおいて割り込みが保留中の状態に保たれ、選ばれた傍受コードを伴う、ホストに戻る仮想マシンの終了が存在する(324)。しかし、予備テストからの例外がない場合(322)、非同期割り込みが仮想マシンに提示され(326)、仮想マシンの実行が継続する(328)。
【0039】
316に戻り、アクセスの理由がプログラム割り込みである場合(330)、(例えば、信頼できる実体によって)割り込みがプレフィックス・ページにアクセスするためである(例えば、割り込みがプレフィックスのアクセスを必要とする)かどうかに関するさらなる判定が行われる(332)。割り込みがプレフィックス・ページにアクセスするためでない場合、処理が通常どおり進む(334)。しかし、割り込みがプレフィックス・ページにアクセスするためである場合(332)、(例えば、信頼できる実体によって)使用されるプレフィックス・ページの予備テストが実行される(336)。予備テスト中に例外がない場合(338)、処理が通常どおり進む(334)。しかし、予備テスト中に例外がある場合(338)、(例えば、信頼できる実体によって)(例えば、トランザクション開始命令とトランザクション終了命令の間の)トランザクション実行の一部として命令が実行されているかどうかに関する判定が行われる(340)。トランザクション実行の一部として命令が実行されている場合、本発明の態様に従って、選ばれた傍受コードを伴って仮想マシンが終了し、トランザクションが異常終了され、例外がホスト(例えば、ハイパーバイザ)に報告される(342)。
【0040】
一方、トランザクション実行の一部として命令が実行されていない場合(340)、
図3Bを参照すると、(例えば、信頼できる実体によって)例外の種類に関して照会が行われる(350)。例外の種類が、例えば、無効または抑制である場合(352)、(例えば、信頼できる実体によって)ゲスト命令が無効にされ(354)、選ばれた傍受コードを伴って仮想マシンが終了する(364)。その後、ハイパーバイザが、プレフィックス・ページを解決して(366)アクセス可能にし、仮想マシンが、ハイパーバイザによって再ディスパッチされる(368)。さらに、例外の種類が、完了であるか(356)、または早期指定である(358)場合、(例えば、信頼できる実体によって)割り込み情報が保存領域(例えば、セキュア・モードでのセキュア状態記述)に保存される(360)。この情報は、例えば、現在実行中のプログラムのプログラム状態ワード/命令アドレス、プログラム例外(プログラム割り込みコード)の種類、およびメモリ・アドレス、アドレス指定モードなどの例外に関する情報を含む(他の例では、追加の情報、より少ない情報、または他の情報、あるいはその組合せが保存されてよい)。(例えば、信頼できる実体によって)例外のために仮想マシンがロックされ(362)、選ばれた傍受コードを伴って、仮想マシンの実行が終了される(364)。その後、ハイパーバイザが、プレフィックス・ページを解決し(366)、仮想マシンが、ハイパーバイザによって再ディスパッチされる(368)。
【0041】
1つの例では、
図3Aに戻り、仮想マシンを再ディスパッチすることに基づいて、(例えば、信頼できる実体によって)例外のために仮想マシンがロックされているかどうかに関する判定が行われる(370)。例外のために仮想マシンがロックされていない場合、処理がゲスト命令の実行を続ける(306)。しかし、例外のために仮想マシンがロックされている場合、選ばれた傍受の終了前から保存されていたプログラム例外が、(例えば、信頼できる実体によって)オペレーティング・システムに提示され、オペレーティング・システムは、このプログラム例外を通常どおりに処理する(372)。処理は、例えば、「割り込みがプレフィックスのアクセスを必要とする」(332)に進んでよい。
【0042】
上記の例では、仮想マシンがセキュア仮想マシンであるが、他の実施形態では、1つまたは複数の態様が非セキュア仮想マシンに適用されてよい。
【0043】
本発明の1つまたは複数の態様に従って、仮想マシン(例えば、セキュア仮想マシン)の実行中に、プレフィックス・ページのチェックおよび処理が実行される。仮想マシンによるプレフィックス・ページ(または、仮想マシンとオペレーティング・システムの間の通信に使用されるメモリの他の選ばれた領域)へのアクセスは、明示的または暗黙的であってよい。ゲストの実行中のプレフィックス・ページへの明示的アクセスは、他のメモリ・アクセスと同様に処理される。例えば、仮想マシンは、プレフィックス・ページに実メモリとしてアクセスし、ページがアクセスされ得ない場合、ホスト・プログラム例外が報告される。暗黙的アクセスは、ゲストのディスパッチ中にいつでも発生することができるため、管理するのがより困難である。これらのページの暗黙的アクセスの間に、信頼できる実体(例えば、ウルトラバイザ)が、ページのアクセス性をテストする。これらのページがアクセス可能でない場合、ウルトラバイザは、暗黙的アクセスの理由をチェックする。この理由に応じて、ウルトラバイザは、ゲストのプレフィックス・ページがアクセス可能でないことをハイパーバイザに示す選ばれた傍受コード(例えば、112)を伴って終了し、ホスト(例えば、ハイパーバイザ)に戻る前に、ゲストから動作単位を取り消す(例えば、命令を無効にする)べきか、または仮想マシンの状態を捕捉してウルトラバイザのセキュア・ストレージに保存し、仮想マシンをロックするべきかを決定する。仮想マシンを終了した後に、ハイパーバイザは、1つまたは複数のページをゲストによってアクセス可能にし、ゲストを再ディスパッチする。信頼できる実体は、仮想マシンの再ディスパッチの実行(例えば、解釈実行開始)中に、仮想マシンがロックされているかどうかをチェックし、ロックされている場合、終了前に、ゲストの状態の一部として保存されている割り込みを、選ばれた傍受コードと共に提示する。次に、この割り込みがオペレーティング・システムによって処理され、最終的にゲストの実行が再開される。
【0044】
1つまたは複数の態様では、仮想マシンのプレフィックス・ページが、仮想マシンの実行中にアクセスされたときにアクセス可能でないと決定された場合に対処するための能力が、提供される。プレフィックスがアクセス可能でない場合に、適用可能であれば、保留中の割り込みを含む仮想マシンの状態を保存し、選ばれた傍受コードを介して、プレフィックスがアクセス可能でなくなったことをハイパーバイザに知らせるために、信頼できる実体(例えば、ウルトラバイザ)が使用される。1つの例では、次にハイパーバイザが、プレフィックス・ページを非セキュアからセキュアに変換し、仮想マシンを再びディスパッチする。別の例として、ハイパーバイザが、ハイパーバイザの仮想ストレージ内でゲストのプレフィックス・ページをマッピングする。仮想マシン開始の実行中に、次にウルトラバイザが、プレフィックスのアクセス性をチェックし、選ばれた傍受コードの終了の前に仮想マシンが実行するはずだった作業を完了する。
【0045】
1つまたは複数の態様では、ゲストが割り込み可能でない位置にいる間に、選ばれた傍受コード(例えば、112)が発生する。例えば、ゲストに完了型の例外(例えば、オーバーフロー、プログラム・イベント記録など)が発生した場合、ゲストは、ゲスト・ストレージまたはゲスト・レジスタあるいはその両方を更新する。しかし、ゲストは、1つの例では、プレフィックスがアクセス可能でないため、割り込みを提示することができず、単に終了してハイパーバイザに戻ることができない。したがって、信頼できる実体は、この場合、プログラム例外に関する情報をセキュア・ストレージに保存し、ゲストをロックして終了する。プレフィックスがアクセス可能でない場合にゲストが単に終了することができず、したがって、信頼できる実体が特定のアクションを実行する他の例は、トランザクションの異常終了時、およびランタイム・インストルメンテーションのサンプルの場合である。他の例が存在してもよい。
【0046】
本発明の1つまたは複数の態様は、コンピュータ技術に密接に関係しており、コンピュータ内の処理を容易にし、その性能を改善する。セキュリティを維持し、性能を改善しながら、仮想マシン(例えば、セキュア仮想マシン)によるプレフィックス・ページのアクセスを管理することによって、処理が容易にされる。
【0047】
コンピューティング環境内の処理が、本発明の1つまたは複数の態様に関連しているため、その処理を容易にする1つの実施形態のさらなる詳細が、
図4A~
図4Cを参照して説明される。
【0048】
図4Aを参照すると、1つの実施形態では、仮想マシンのディスパッチに基づいて、仮想マシンによってアクセス可能であり、仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、仮想マシンによってアクセス可能であるかどうかの判定が行われる(400)。メモリの選ばれた領域が仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行が終了される(402)。
【0049】
このようにして、アクセス可能であることが期待されるメモリの選ばれた領域がアクセス可能でないでない場合に、ゲスト命令の実行を防ぐことによって、処理を容易にする。1つまたは複数の態様は、ゲストの実行の持続時間の間、ハイパーバイザがゲスト(例えば、仮想マシン)のメモリの選ばれた領域(例えば、プレフィックス・ページ)を固定された状態に保つことができなくなる状況に対処する。
【0050】
さらに、1つの例では、メモリの選ばれた領域が仮想マシンによってアクセス可能であるということの決定に基づいて、仮想マシンの1つまたは複数のゲスト命令が実行される(404)。
【0051】
1つの例では、メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、仮想マシンのゲスト命令に関して、メモリの選ばれた領域へのアクセスが存在することになるかどうかの判定が行われる(406)。アクセスが存在することになるということの決定に基づいて、このアクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかに関して、チェックが行われる(408)。アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションが実行される(410)。
【0052】
アクセス可能であることが期待されるメモリの選ばれた領域が、処理を容易にするために、アクセス性に関して再度チェックされる。
【0053】
例として、アクセスが暗黙的アクセスであることに基づいて(412)、1つまたは複数のアクションは、例えば、暗黙的アクセスの理由を決定することと(414)、暗黙的アクセスの理由に基づいて、1つまたは複数の選ばれたアクションを実行することと(416)を含む。
【0054】
1つの例では、
図4Bを参照すると、暗黙的アクセスの理由が非同期割り込みであることに基づいて(420)、1つまたは複数の選ばれたアクションは、例えば、メモリの選ばれた領域の予備テストを実行することと(422)、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかを判定することと(424)を含む。例として、メモリの選ばれた領域の予備テスト中に例外が発生したということの決定に基づいて、仮想マシンにおいて非同期割り込みが保留中の状態に保たれ、選ばれた傍受コードを伴う、仮想マシンのホストに戻る終了が存在する(426)。
【0055】
1つの例では、暗黙的アクセスの理由がプログラム割り込みであるということに基づいて(430)、1つまたは複数の選ばれたアクションは、例えば、プログラム割り込みが、メモリの選ばれた領域にアクセスするためであるかどうかを判定することと(432)、プログラム割り込みが、メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、メモリの選ばれた領域の予備テストを実行することと(434)を含む。1つの例では、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかに関する判定が行われ(436)、メモリの選ばれた領域の予備テスト中に例外が発生したかどうかに基づいて、処理が実行される(438)。
【0056】
1つの例では、
図4Cを参照すると、処理を実行することは、メモリの選ばれた領域の予備テスト中に例外が発生しなかったということの決定に基づいて、命令処理を続けることを含む(440)。さらに、別の例では、メモリの選ばれた領域の予備テスト中に例外が発生したということの決定に基づいて、処理を実行することは、ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることを含む(442)。チェックが、ゲスト命令がトランザクション実行の一部として実行されることを示すことに基づいて、1つの例では、選ばれた傍受コードを伴って仮想マシンの実行が終了され、トランザクション実行が異常終了される(444)。さらに、1つの例では、チェックが、ゲスト命令がトランザクション実行の一部として実行されないことを示すことに基づいて、例外の種類が決定され、例外の種類に基づいて、1つまたは複数の選択されたアクションが実行される(446)。
【0057】
例として、例外の種類が無効例外または抑制例外であることに基づいて、1つまたは複数の選択されたアクションは、ゲスト命令を無効にすることを含む(448)。さらに、1つの例では、例外の種類が完了例外または早期指定例外であることに基づいて(450)、1つまたは複数の選択されたアクションは、割り込み情報をセキュアな場所に保存することと(452)、例外のために仮想マシンをロックすることと(454)、選ばれた傍受コードを伴って仮想マシンの実行を終了することと(456)を含む。
【0058】
1つの例では、仮想マシンの次の開始時に、仮想マシンのロックが調べられ(458)、ロックすることによってロックが設定されていることに基づいて、プログラム例外処理が完了する(460)。
【0059】
終了の原因/条件を決定し、それに基づいてアクションを実行することによって、処理が容易にされる。
【0060】
他の変形および実施形態が可能である。
【0061】
本発明の態様は、多くの種類のコンピューティング環境によって使用されてよい。本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の実施形態が、
図5Aを参照して説明される。この例では、コンピューティング環境36は、例えば、1つまたは複数のバス40または他の接続あるいはその両方を介して互いに結合された、ネイティブ中央処理装置(CPU)37、メモリ38、および1つまたは複数の入出力デバイスまたはインターフェイスあるいはその両方39を含む。例として、コンピューティング環境36は、International Business Machines Corporation(ニューヨーク州アーモンク市)によって提供されるPowerPC(R)プロセッサ、ヒューレット・パッカード社(カリフォルニア州パロアルト市)によって提供されるインテル(R)Itanium(R)IIプロセッサ内蔵HP Superdome、あるいはInternational Business Machines Corporation、ヒューレット・パッカード社、インテル社、Oracle社、もしくは他の企業、またはその組合せによって提供されるアーキテクチャに基づく他のマシン、あるいはその組合せを含んでよい。PowerPCは、少なくとも1つの管轄区域内のInternational Business Machines Corporationの商標または登録商標である。インテルおよびItaniumは、米国および他の国における、インテル社またはその子会社の商標または登録商標である。
【0062】
ネイティブ中央処理装置37は、環境内で処理中に使用される1つまたは複数の汎用レジスタまたは1つまたは複数の専用レジスタあるいはその両方などの、1つまたは複数のネイティブ・レジスタ41を含む。これらのレジスタは、いずれかの特定の時点での環境の状態を表す情報を含む。
【0063】
さらに、ネイティブ中央処理装置37は、メモリ38に格納された命令およびコードを実行する。1つの特定の例では、中央処理装置は、メモリ38に格納されたエミュレータ・コード42を実行する。このコードは、あるアーキテクチャで構成されたコンピューティング環境が、別のアーキテクチャをエミュレートできるようにする。例えば、エミュレータ・コード42は、z/Architecture命令セット・アーキテクチャ以外のアーキテクチャに基づくマシン(PowerPCプロセッサ、HP Superdomeサーバなど)が、z/Architecture命令セット・アーキテクチャをエミュレートし、z/Architecture命令セット・アーキテクチャに基づいて開発されたソフトウェアおよび命令を実行できるようにする。
【0064】
エミュレータ・コード42に関連するさらなる詳細が、
図5Bを参照して説明される。メモリ38に格納されたゲスト命令43は、ネイティブCPU37のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発された(例えば、マシン命令と相互関係がある)ソフトウェア命令を含む。例えば、ゲスト命43は、z/Architecture命令セット・アーキテクチャに基づくプロセッサ上で実行するように設計されていてよいが、代わりに、例えばインテルItanium IIプロセッサであってよい、ネイティブCPU37上でエミュレートされる。1つの例では、エミュレータ・コード42は、メモリ38から1つまたは複数のゲスト命令43を取得するため、および取得された命令のローカル・バッファリングを任意選択的に提供するための命令フェッチ・ルーチン44を含む。エミュレータ・コード42は、取得されたゲスト命令の種類を決定するため、およびゲスト命令を、1つまたは複数の対応するネイティブ命令46に変換するための命令変換ルーチン45も含む。この変換は、例えば、ゲスト命令によって実行される機能を識別すること、およびこの機能を実行するためのネイティブ命令を選択することを含む。
【0065】
さらに、エミュレータ・コード42は、ネイティブ命令の実行を引き起こすためのエミュレーション制御ルーチン47を含む。エミュレーション制御ルーチン47は、ネイティブCPU37に、1つまたは複数のすでに取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、そのような実行の終了時に、次のゲスト命令またはゲスト命令のグループの取得をエミュレートするために、制御を命令フェッチ・ルーチンに返してよい。ネイティブ命令46の実行は、データをメモリ38からレジスタに読み込むこと、データをレジスタからメモリに再び格納すること、あるいは変換ルーチンによって決定されたとおりに、何らかの種類の算術演算または論理演算を実行することを含んでよい。
【0066】
例えば、各ルーチンは、メモリに格納されてネイティブ中央処理装置37によって実行されるソフトウェアにおいて実装される。他の例では、ルーチンまたは動作のうちの1つまたは複数は、ファームウェア、ハードウェア、ソフトウェア、またはこれらの何らかの組合せにおいて実装される。エミュレートされたプロセッサのレジスタは、ネイティブCPUのレジスタ41を使用して、またはメモリ38内の位置を使用することによって、エミュレートされてよい。実施形態では、ゲスト命令43、ネイティブ命令46、およびエミュレータ・コード42は、同じメモリ内に存在してよく、または異なるメモリ・デバイス間で分配されてよい。
【0067】
エミュレートされ得る命令は、本発明の1つまたは複数の態様に従って、本明細書に記載されたゲスト命令を含む。さらに、他の命令、コマンド、機能、動作、呼び出し、または本発明の1つまたは複数の態様、あるいはその組合せが、本発明の1つまたは複数の態様に従ってエミュレートされてよい。
【0068】
前述のコンピューティング環境は、使用可能なコンピューティング環境の例にすぎない。分割されない環境、分割された環境、クラウド環境、またはエミュレートされた環境、あるいはその組合せを含むが、これらに限定されない、他の環境が使用されてよく、実施形態はいずれか1つの環境に限定されない。本明細書ではコンピューティング環境のさまざまな例が説明されるが、本発明の1つまたは複数の態様が、多くの種類の環境と共に使用されてよい。本明細書で提供されるコンピューティング環境は、例にすぎない。
【0069】
各コンピューティング環境は、本発明の1つまたは複数の態様を含むように構成されることが可能である。
【0070】
1つまたは複数の態様がクラウド・コンピューティングに関連してよい。
【0071】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において列挙された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0072】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0073】
特徴は、次のとおりである。
【0074】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0075】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを通じてアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0076】
リソース・プール:プロバイダの計算リソースは、プールされて、マルチテナント・モデルを使用して複数の利用者に提供され、さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高いレベルの抽象化では、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0077】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0078】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0079】
サービス・モデルは、次のとおりである。
【0080】
サービスとしてのソフトウェア(SaaS):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0081】
サービスとしてのプラットフォーム(PaaS):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0082】
サービスとしてのインフラストラクチャ(IaaS):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選ばれたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0083】
デプロイメント・モデルは、次のとおりである。
【0084】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0085】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0086】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0087】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0088】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0089】
ここで
図6を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード52を含んでいる。ノード52は、互いに通信してよい。ノード52は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして提供できる。
図10に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード52およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0090】
ここで
図7を参照すると、クラウド・コンピューティング環境50(
図6)によって提供される機能的抽象レイヤのセットが示されている。
図7に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0091】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0092】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0093】
1つの例では、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。1つの例では、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0094】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびメモリの選ばれた領域(例えば、プレフィックス・ページ)管理処理96が挙げられる。
【0095】
本発明の態様は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる1つまたは複数のコンピュータ可読ストレージ媒体を含んでよい。
【0096】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波または他の自由に伝搬する電磁波、導波管または他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0097】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、あるいはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0098】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行し、電子回路をカスタマイズしてよい。
【0099】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0100】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【0101】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0102】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実現されるか、同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、あるいは場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、あるいは専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0103】
上記に加えて、顧客の環境の管理を提供するサービス・プロバイダによって、1つまたは複数の態様が提供されること、提示されること、デプロイされること、管理されること、サービス提供されることなどが行われてよい。例えば、サービス・プロバイダは、1人または複数の顧客のために1つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を作成すること、維持すること、サポートすることなどを行うことができる。その見返りとして、サービス・プロバイダは、例えばサブスクリプションまたは料金契約あるいはその両方に従って、顧客から支払いを受け取ってよい。追加または代替として、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ってよい。
【0104】
1つの態様では、1つまたは複数の実施形態を実行するために、アプリケーションがデプロイされてよい。1つの例として、アプリケーションのデプロイは、1つまたは複数の実施形態を実行するよう機能するコンピュータ・インフラストラクチャを提供することを含む。
【0105】
さらなる態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含むコンピューティング・インフラストラクチャがデプロイされてよく、このコンピューティング・インフラストラクチャでは、コンピューティング・システムと組み合わせたコードが、1つまたは複数の実施形態を実行できる。
【0106】
さらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含んでいる、コンピューティング・インフラストラクチャを統合するためのプロセスが提供されてよい。コンピュータ・システムは、コンピュータ可読媒体を備え、このコンピュータ可読媒体では、コンピュータ媒体が1つまたは複数の実施形態を含む。コンピュータ・システムと組み合わせたコードは、1つまたは複数の実施形態を実行できる。
【0107】
上ではさまざまな実施形態が説明されたが、それらは単なる例である。例えば、1つまたは複数の態様を組み込むため、または1つまたは複数の態様を使用するため、あるいはその両方のために、他のアーキテクチャのコンピューティング環境が使用され得る。さらに、さまざまな命令、コマンド、機能、呼び出し、または動作、あるいはその組合せが使用されてよい。さらに、さまざまなアクションが実行されてよい。多くの変形が可能である。
【0108】
本明細書では、さまざまな態様が説明される。さらに、本発明の態様の思想から逸脱することなく、多くの変形が可能である。本明細書に記載された各態様または特徴およびその変形を、特に矛盾しない限り、任意の他の態様または特徴と組み合わせることができるということに、注意するべきである。
【0109】
さらに、他の種類のコンピューティング環境が、恩恵を受けることができ、使用され得る。例として、プログラム・コードの格納または実行あるいはその両方を行うのに適した、システム・バスを介して直接的または間接的にメモリ素子に結合された少なくとも2つのプロセッサを含んでいる、データ処理システムを使用できる。これらのメモリ素子は、例えば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、バルク・ストレージ、および実行時にバルク・ストレージからコードが取得されなければならない回数を減らすために少なくとも一部のプログラム・コードを一時的に格納するキャッシュ・メモリを含む。
【0110】
入出力デバイスまたはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むが、これらに限定されない)は、直接的に、または介在するI/Oコントローラを通じて、システムに結合され得る。ネットワーク・アダプタがシステムに結合され、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて、データ処理システムを、他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにしてもよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、使用可能なネットワーク・アダプタのうちの、ごくわずかの種類にすぎない。
【0111】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0112】
下の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、もしあれば、具体的に請求されるとき、他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。1つまたは複数の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。多くの変更および変形が、当業者にとって明らかであろう。さまざまな態様および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態を理解できるようにするために、実施形態が選択されて説明された。
【手続補正書】
【提出日】2024-07-30
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピューティング環境内の処理を容易にするため
にコンピュータに実行させる方法であって、
仮想マシンのディスパッチに基づいて、前記仮想マシンによってアクセス可能であり、前記仮想マシンとオペレーティング・システムの間の通信において使用されることが期待されるメモリの選ばれた領域が、前記仮想マシンによってアクセス可能であるかどうかを判定することと、
前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能でないということの決定に基づいて、選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む方
法。
【請求項2】
前記方法が、前記メモリの選ばれた領域が前記仮想マシンによってアクセス可能であるということの決定に基づいて、前記仮想マシンの1つまたは複数のゲスト命令を実行することをさらに含む、請求項1に記載の
方法。
【請求項3】
前記メモリの選ばれた領域がアクセス可能であるということの決定に基づいて、前記方法が、
前記仮想マシンのゲスト命令に関して、前記メモリの選ばれた領域へのアクセスが存在することになるかどうかを判定することと、
アクセスが存在することになるということの決定に基づいて、前記アクセスが明示的アクセスまたは暗黙的アクセスのどちらであるかをチェックすることと、
前記アクセスが前記明示的アクセスまたは前記暗黙的アクセスのどちらであるかに基づいて、1つまたは複数のアクションを実行することとをさらに含む、請求項1に記載の
方法。
【請求項4】
前記アクセスが前記暗黙的アクセスであることに基づいて、前記1つまたは複数のアクションが、
前記暗黙的アクセスの理由を決定することと、
前記暗黙的アクセスの前記理由に基づいて1つまたは複数の選ばれたアクションを実行することとを含む、請求項3に記載の
方法。
【請求項5】
前記暗黙的アクセスの前記理由が非同期割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、前記仮想マシンにおいて前記非同期割り込みを保留中に保ち、前記選ばれた傍受コードを伴って終了し、前記仮想マシンのホストに戻ることとを含む、請求項4に記載の
方法。
【請求項6】
前記暗黙的アクセスの前記理由がプログラム割り込みであることに基づいて、前記1つまたは複数の選ばれたアクションが、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるかどうかを判定することと、
前記プログラム割り込みが前記メモリの選ばれた領域にアクセスするためであるということの決定に基づいて、前記メモリの選ばれた領域の予備テストを実行することと、
前記メモリの選ばれた領域の前記予備テスト中に例外が発生したかどうかを判定することと、
前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したかどうかに基づいて処理を実行することとを含む、請求項4に記載の
方法。
【請求項7】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生しなかったということの決定に基づいて、命令処理を続けることを含む、請求項6に記載の
方法。
【請求項8】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、
前記ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることと、
前記チェックが、前記ゲスト命令がトランザクション実行の一部として実行されることを示すことに基づいて、前記選ばれた傍受コードを伴って仮想マシンの実行を終了し、トランザクション実行を異常終了することとを含む、請求項6に記載の
方法。
【請求項9】
前記処理を実行することが、前記メモリの選ばれた領域の前記予備テスト中に前記例外が発生したということの決定に基づいて、
前記ゲスト命令がトランザクション実行の一部として実行されるかどうかをチェックすることと、
前記チェックが、前記ゲスト命令がトランザクション実行の一部として実行されないことを示すことに基づいて、前記例外の種類を決定することと、
前記例外の前記種類に基づいて、1つまたは複数の選択されたアクションを実行することとを含む、請求項6に記載の
方法。
【請求項10】
例外の前記種類が無効例外または抑制例外であることに基づいて、前記1つまたは複数の選択されたアクションが、前記ゲスト命令を無効にすることを含む、請求項9に記載の
方法。
【請求項11】
例外の前記種類が完了例外または早期指定例外であることに基づいて、前記1つまたは複数の選択されたアクションが、
割り込み情報をセキュアな場所に保存することと、
例外のために前記仮想マシンをロックすることと、
前記選ばれた傍受コードを伴って仮想マシンの実行を終了することとを含む、請求項9に記載の
方法。
【請求項12】
前記方法が、
前記仮想マシンの次の開始時に、前記仮想マシンのロックを調べることと、
前記ロックすることによって前記ロックが設定されていることに基づいて、プログラム例外処理を完了することとをさらに含む、請求項11に記載の
方法。
【請求項13】
コンピューティング環境内の処理を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信する少なくとも1つのプロセッサとを備え、前記コンピュータ・システムが
請求項1ないし12に記載の方法を実行するように構成されて
いる、コンピュータ・システム。
【請求項14】
コンピューティング環境内の処理を容易にするコンピュータ
・プログラムであって、
コンピュータに、請求項1ないし12に記載の方法を実行させる、コンピュータ・プログラム。
【国際調査報告】