【手続補正書】
【提出日】平成20年10月6日(2008.10.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一つ以上のＣＰＵと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置において、
前記ＣＰＵが前記メモリに格納されたプログラムを実行することによって、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機モニタが実行されており、
前記仮想計算機モニタは、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって前記サーバ装置のハードウェアに対する操作が要求されたときに、前記サーバ装置のハードウェアに対する操作を実行させる操作コードに基づいて前記操作をエミュレーションするエミュレーションモジュールと、
前記サーバ装置のハードウェアに対する操作を検出することによって前記ＣＰＵが発生する例外イベントを契機として、前記エミュレーションモジュールを呼び出す例外イベントハンドラモジュールと、
前記ＣＰＵの動作モードを切り替え、前記エミュレーションモジュールを呼び出すことによって、前記サーバ装置のハードウェアに対する操作をエミュレーションさせる昇格コードを管理するコード管理モジュールと、
所定の判断条件との比較の結果、前記サーバ装置のハードウェアに対する操作の頻度が高頻度であるか否かを判断する頻度判断モジュールと、
前記判断された頻度に基づいて、前記例外イベントハンドラモジュールによって前記エミュレーションモジュールを呼び出すか、前記昇格コードを実行することによって前記エミュレーションモジュールを呼び出すか、を決定する切り替えモジュールと、を備えることを特徴とするサーバ装置。
【請求項２】
前記ＣＰＵは、ハードウェア操作許可モードとハードウェア操作禁止モードとの二つの動作モードを備え、前記動作モードが前記ハードウェア操作禁止モードであるときにハードウェアに対する操作を検出すると、例外イベントを発生してハードウェア操作許可モードに切り替え、
前記昇格コードは、前記ハードウェア操作許可モード及び前記ハードウェア操作禁止モードを切り替える命令を含み、
前記仮想計算機モニタは、前記ＣＰＵの動作モードが前記ハードウェア操作禁止モードであるときに前記昇格コードを呼び出すことによって、前記サーバ装置のハードウェアに対する操作をエミュレーションさせるシャドウコードを、前記操作コードに対応して生成する生成モジュールを含み、
前記ＣＰＵの動作モードを前記ハードウェア操作禁止モードとして、前記操作が要求されたときに、前記切り替えモジュールは、前記サーバ装置のハードウェアに対する操作の頻度が高ければ、前記シャドウコードを呼び出すことによって前記昇格コードを実行し、前記昇格コードによって前記エミュレーションモジュールを呼び出すことを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記切り替えモジュールは、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって要求された前記サーバ装置のハードウェアに対する第１の操作の頻度が所定の条件を満たすときに、
前記第１の操作を実行させる第１の操作コードの命令アドレス空間上での近傍にある第２の操作コードを実行するときは、前記例外イベントハンドラモジュールによって前記エミュレーションモジュールを呼び出す代わりに、前記昇格コードを実行することによって前記エミュレーションモジュールを呼び出すことを特徴とする請求項２に記載のサーバ装置。
【請求項４】
前記切り替えモジュールは、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって前記操作を実行させる操作コードが変更されたことを、前記仮想計算機モニタが検出したときに、
前記変更された操作コードに対応するシャドウコードを無効化し、
前記変更された操作コードを実行するときに、前記シャドウコードを実行することによって前記エミュレーションモジュールを呼び出す代わりに、前記例外イベントハンドラモジュールによって前記エミュレーションモジュールを呼び出すことを特徴とする請求項２に記載のサーバ装置。
【請求項５】
前記切り替えモジュールは、
前記シャドウコード及び前記昇格コードを保持するために必要なメモリの容量が不足したときは、
前記生成されたシャドウコードのうち、実行されなかった期間が最も長いシャドウコードを選択し、前記選択されたシャドウコード及び当該選択されたシャドウコードに関連する昇格コードを前記メモリから削除し、
前記削除されたシャドウコードを実行する代わりに、前記例外イベントハンドラモジュールによって前記エミュレーションモジュールを呼び出すことを特徴とする請求項２に記載のサーバ装置。
【請求項６】
一つ以上のＣＰＵと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置において、
前記ＣＰＵが前記メモリに格納されたプログラムを実行することによって、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機モニタが実行されており、
前記仮想計算機モニタは、前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって要求された、前記サーバ装置のハードウェアに対する操作毎の実行の頻度を保持することを特徴とするサーバ装置。
【請求項７】
一つ以上のＣＰＵと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置に、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機の制御プログラムであって、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって前記サーバ装置のハードウェアに対する操作が要求されたときに、前記サーバ装置のハードウェアに対する操作を検出することによって前記ＣＰＵが発生する例外イベントを契機として、前記サーバ装置のハードウェアに対する操作を実行させる操作コードに基づいて前記ハードウェアに対する操作をエミュレーションする第１の手順と、
前記ＣＰＵの動作モードを切り替え、前記サーバ装置のハードウェアに対する操作をエミュレーションさせる昇格コードを実行する第２の手順と、
所定の判断条件との比較の結果、前記操作の頻度が高頻度であるか否かを判断する第３の手順と、
前記判断された頻度に基づいて、前記１の手順を実行するか、前記第２の手順を実行するか、を決定する第４の手順と、を前記サーバ装置に実行させることを特徴とする仮想計算機の制御プログラム。
【請求項８】
前記ＣＰＵは、ハードウェア操作許可モードとハードウェア操作禁止モードとの二つの動作モードを備え、動作モードが前記ハードウェア操作禁止モードであるときにハードウェアに対する操作を検出すると、例外イベントを発生してハードウェア操作許可モードに切り替え、
前記第１の手順は、前記ＣＰＵの動作モードを前記ハードウェア操作禁止モードとして、前記操作が要求されたときに、前記操作を検出することによって前記ＣＰＵが発生する例外イベントを契機として、前記ＣＰＵの動作モードを前記ハードウェア操作許可モードに切り替え、前記操作をエミュレーションさせる手順を含み、
前記第２の手順は、前記ＣＰＵの動作モードが前記ハードウェア操作禁止モードであるときに前記昇格コードを呼び出すことによって、前記サーバ装置のハードウェアに対する操作をエミュレーションさせるシャドウコードを、前記操作コードに対応して生成する手順を含み、
前記第４の手順は、前記ＣＰＵの動作モードを前記ハードウェア操作禁止モードとして、前記操作が要求されたときに、前記サーバ装置のハードウェアへの操作の頻度が高ければ、前記第２の手順を実行することを特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項９】
前記第４の手順は、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって要求された前記サーバ装置のハードウェアに対する第１の操作の頻度が所定の条件を満たすときに、
前記第１の操作を実行させる第１の操作コードの命令アドレス空間上での近傍にある第２の操作コードを実行するときは、前記第１の手順の代わりに、前記第２の手順を実行する特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項１０】
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって前記操作を実行させる操作コードが変更されたこと、を検出する手順と、
前記変更された操作コードに対応するシャドウコードを無効化する手順と、をさらに含み、
前記第４の手順は、前記変更された操作コードを実行するときに、前記第２の手順の代わりに、前記第１の手順を実行することを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項１１】
前記シャドウコード及び前記昇格コードを保持するために必要な前記メモリの容量が不足したことを検出する手順と、
前記生成されたシャドウコードのうち、実行されなかった期間が最も長いシャドウコードを選択し、前記選択されたシャドウコード及び当該シャドウコードに関連する昇格コードを前記メモリから削除する手順と、をさらに含み、
前記第４の手順は、前記削除されたシャドウコードを実行するときは、前記第２の手順の代わりに、前記第１の手順を実行することを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項１２】
前記第３の手順は、
前記操作は、前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションの何れによって要求されたかを判断する手順と、
頻度が高い前記操作を特定可能な頻度情報を保持する手順と、
前記オペレーティングシステムによって前記サーバ装置のハードウェアに対する操作が要求されたときに、前記要求された操作の種別が前記保持された頻度情報に含まれているか否かを判断する手順と、
前記要求された操作の種別が前記保持された頻度情報に含まれているときは、前記要求された操作の頻度が高いと判断する手順と、を含むことを特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項１３】
前記第３の手順は、
前記操作コードの命令アドレス空間において所定のアドレス範囲に属する操作コードの実行回数を、前記所定のアドレス範囲毎に保持する手順と、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって前記サーバ装置のハードウェアに対する操作の実行が要求されたときに、前記要求された操作を実行させる操作コードが属する前記アドレス範囲に含まれる全ての操作コードの実行回数を取得する手順と、
前記取得された実行回数が所定の閾値を超えたときに、前記要求された操作の頻度が高いと判断する手順と、を含むことを特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項１４】
前記第３の手順は、
前記操作は、前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションの何れによって要求されたかを判断する手順と、
前記操作が実行された時を特定可能な時刻情報を保持する手順と、
前記オペレーティングシステムによってサーバ装置のハードウェアに対する操作が要求されたときに、前記要求された操作を実行させる操作コードが実行された時の時刻情報と前記要求された操作を実行させる操作コードが前回実行された時の時刻情報との間隔を算出する手順と、
前記算出した間隔が所定の閾値よりも小さいときに、当該操作の頻度が高いと判断する手順と、を含むことを特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項１５】
管理者によって入力された前記所定の判断条件を受け付ける手順と、
前記入力された所定の判断条件を記憶装置に保存する手順と、を備えることを特徴とする請求項７に記載の仮想計算機の制御プログラム。
【請求項１６】
前記第１の手順は、例外イベントの発生によって前記ＣＰＵのＶＭビットを０に設定することによって、前記ハードウェア操作許可モードに遷移する手順を含み、
前記第２の手順は、ｖｍｓｗ命令を実行して前記ＣＰＵのＶＭビットを０に設定することによって、前記ハードウェア操作許可モードに遷移する手順を含み、
前記第４の手順は、
前記操作コードの命令アドレスと前記操作コードに対応する前記シャドウコードが格納されたアドレスとを対応付け、前記対応付けに基づいて、前記操作コードのアドレスを前記シャドウコードのアドレスに置き換えることによって、前記第１の手順の代わりに前記第２の手順を実行する手順と、
前記操作コードを実行させることによって、前記第２の手順の代わりに前記第１の手順を実行する手順と、を含むことを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項１７】
前記第１の手順は、ＶＭｅｘｉｔイベントの発生によって前記ＣＰＵをＶＭＸ ｒｏｏｔモードに設定することによって、前記ハードウェア操作許可モードに遷移する手順を含み、
前記第２の手順は、特権レベル減少分岐命令を実行して前記ＣＰＵの特権レベルを０に設定することによって、前記ハードウェア操作許可モードに遷移する手順を含み、
前記第４の手順は、
前記サーバ装置のハードウェアに対する操作を実行させる操作コードの命令アドレスの代わりに、前記シャドウコードが格納された仮想アドレスへの処理の分岐を実行することによって、前記操作のエミュレーションを実行するときに、前記第１の手順の代わりに前記第２の手順を実行する手順と、
前記サーバ装置のハードウェアに対する操作を実行させる操作コードの命令アドレスへの処理の分岐を実行することによって、前記操作のエミュレーションを実行するときに、前記第２の手順の代わりに前記第１の手順を実行する手順と、を含むことを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項１８】
前記第２の手順は、
前記操作をエミュレーションするエミュレーションコードを前記昇格コードに含める手順と、
前記昇格コードに加え前記エミュレーションコードが実行されることによって、前記サーバ装置のハードウェアに対する操作のエミュレーションを実行する手順と、を含むことを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項１９】
前記第２の手順は、
前記昇格コードを前記シャドウコードに含め、
前記シャドウコードに加え前記昇格コードが実行されることによって、前記サーバ装置のハードウェアに対する操作をエミュレーションすることを特徴とする請求項８に記載の仮想計算機の制御プログラム。
【請求項２０】
一つ以上のＣＰＵと、データ及びプログラムを格納するメモリと、外部とでデータを送受信するインターフェースと、を備えたサーバ装置に、オペレーティングシステムが稼働する一以上の仮想計算機を稼働させる仮想計算機の制御プログラムであって、
前記オペレーティングシステム又は前記オペレーティングシステム上で稼働するアプリケーションによって要求された、前記サーバ装置のハードウェアに対する操作毎の実行の頻度を保持する手順を前記サーバ装置に実行させることを特徴とする仮想計算機の制御プログラム。