(57)【特許請求の範囲】
【請求項１】
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対する前記仮想マシンのＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡す前記ゲストＯＳ上のＶＭリソース管理プログラムと、
前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理する前記ホストＯＳ上のＣＰＵリソース管理プログラムと、
を含むことを特徴とするコンピュータシステム。
【請求項２】
前記ＣＰＵリソース管理プログラムは、前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行うことを特徴とする請求項１のコンピュータシステム。
【請求項３】
前記第１種のＣＰＵリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記第２種のＣＰＵリソース定義情報は、対応する前記ＶＭ制御プログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記ＣＰＵリソース管理プログラムは、前記ユーザプログラムに対して前記第１種のＣＰＵリソース定義情報における割り当ての割合と前記第２種のＣＰＵリソース定義情報における対応する前記ＶＭ制御プログラムの割合を乗じた値を前記ＣＰＵリソース再定義情報の内容とすることを特徴とする請求項２のコンピュータシステム。
【請求項４】
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記ＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵリソース再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする請求項３のコンピュータシステム。
【請求項５】
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記仮想マシンに対応する前記ＶＭ制御プログラムのプロセスのＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵリソース再定義情報内の当該前記ＶＭ制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする請求項４のコンピュータシステム。
【請求項６】
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対する前記仮想マシンのＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡す前記ゲストＯＳ上のＶＭリソース管理プログラムとを含み、
前記ホストＯＳ上のＣＰＵリソース管理プログラムが、前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理することを特徴とするＣＰＵリソース管理方法。
【請求項７】
前記ＣＰＵリソース管理プログラムは、前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行うことを特徴とする請求項６のＣＰＵリソース管理方法。
【請求項８】
前記第１種のＣＰＵリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記第２種のＣＰＵリソース定義情報は、対応する前記ＶＭ制御プログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記ＣＰＵリソース管理プログラムは、前記ユーザプログラムに対して前記第１種のＣＰＵリソース定義情報における割り当ての割合と前記第２種のＣＰＵリソース定義情報における対応する前記ＶＭ制御プログラムの割合を乗じた値を前記ＣＰＵリソース再定義情報の内容とすることを特徴とする請求項７のＣＰＵリソース管理方法。
【請求項９】
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対する前記仮想マシンのＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡す前記ゲストＯＳのＶＭリソース管理プログラムとを含むコンピュータシステムにおける前記ホストＯＳ上のＣＰＵリソース管理プログラムであって、
コンピュータに、
前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理する動作をさせる、
ことを特徴とするＣＰＵリソース管理プログラム。
【請求項１０】
前記コンピュータに、
前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行う動作をさせることを特徴とする請求項９のＣＰＵリソース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、ＣＰＵリソース管理方法、および、ＣＰＵリソース管理プログラムに関する。
【背景技術】
【０００２】
近年、仮想マシンを構築するコンピュータシステムが増加している。仮想マシンに関する技術の一例が、特許文献１に記載されている。この技術におけるＣＰＵリソース管理プログラムは、仮想マシン自体のＣＰＵリソースの管理を行っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１１７８０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載の技術のＣＰＵリソース管理プログラムは、仮想マシン自体のＣＰＵリソース管理は行うが、仮想マシン上で実行されるプログラムのプロセスのＣＰＵリソース管理は行っていない。したがって、仮想マシン上で実行されるプログラムのＣＰＵリソース管理ができず、仮想マシン上でそのプログラムを実行できないという問題がある。
【０００５】
本発明の目的は、上記問題点を解決するコンピュータシステム、ＣＰＵリソース管理方法、および、ＣＰＵリソース管理プログラムである。
【課題を解決するための手段】
【０００６】
本発明のコンピュータシステムは、
ホストＯＳと、仮想マシンを動作させるＶＭ制御プログラムと、前記仮想マシンに対応するゲストＯＳと、前記仮想マシン上で実行されるユーザプログラムと、前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムと、前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理するＣＰＵリソース管理プログラムと、を含む。
【０００７】
本発明のＣＰＵリソース管理方法は、
ホストＯＳと、仮想マシンを動作させるＶＭ制御プログラムと、前記仮想マシンに対応するゲストＯＳと、前記仮想マシン上で実行されるユーザプログラムと、前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムとを含み、ＣＰＵリソース管理プログラムが、前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理する。
【０００８】
本発明のＣＰＵリソース管理プログラムは、
ホストＯＳと、仮想マシンを動作させるＶＭ制御プログラムと、前記仮想マシンに対応するゲストＯＳと、前記仮想マシン上で実行されるユーザプログラムと、前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムとを含むコンピュータシステムのコンピュータに、前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理する動作をさせる。
【発明の効果】
【０００９】
本発明の効果は、仮想マシンを運用するコンピュータシステムにおいて、仮想マシン上で実行されるプログラムのプロセスのＣＰＵリソース管理を行えることである。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第２の実施の形態の構成を示すブロック図である。
【図３】本発明の第２の実施の形態のハードウェア構成例を示すブロック図である。
【図４】ＣＰＵリソース定義情報の一例を示す説明図である。
【図５】主記憶領域の構成を示す説明図である。
【図６】本発明の第２の実施の形態の動作を示すフローチャートである。
【図７】本発明の第２の実施の形態の動作を示すフローチャートである。
【図８】本発明の第２の実施の形態の動作を示すフローチャートである。
【図９】本発明の第２の実施の形態の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１２】
図１は、第１の実施の形態の構成を示すブロック図である。図１を参照すると、コンピュータシステム１００は、ホストＯＳ２００、ＣＰＵリソース管理プログラム３００、ＶＭ制御プログラム４００（複数可）、および、ゲストＯＳ５００（ＶＭ用、複数可）を含む。さらに、コンピュータシステム１００は、ＶＭリソース管理プログラム６００、および、ユーザプログラム７００（ＶＭ上で実行される、複数可）を含む。
【００１３】
コンピュータシステム１００は、リソースとしてＣＰＵ（Central Processing System；中央処理装置）を含む。ＯＳは、オペレーティングシステム（Operating System）であり、ＶＭは、仮想マシン（Virtual Machine）である。また、ホストＯＳ２００、ゲストＯＳ５００を含め、各プログラムは、プログラムを構成するプロセスの集合体である。
【００１４】
ＶＭ制御プログラム４００は、ＶＭ（仮想マシン）を動作させるプロセス（ＶＰ（virtual Processor）プロセスと呼ぶ）の集合体である。ＶＭ制御プログラム４００の管理にしたがってゲストＯＳ５００が動作する。ＶＭリソース管理プログラム６００は、ゲストＯＳ５００上で動作する。ユーザプログラム７００は、ゲストＯＳ５００のＶＭで実行されるプログラムである。
【００１５】
ここで、コンピュータシステム１００、ホストＯＳ２００、および、ＣＰＵリソース管理プログラム３００を、ＢＭ（Bare Machine；ベアマシン）と呼ぶ。
【００１６】
次に、第１の実施の形態の動作について説明する。
【００１７】
ゲストＯＳ５００は、ユーザプログラム７００に対するＣＰＵリソースの割り当てを含む第１種のＣＰＵリソース定義情報を生成する。ＶＭリソース管理プログラム６００は、この第１種のＣＰＵリソース定義情報をＣＰＵリソース管理プログラム３００に渡す。
【００１８】
ＣＰＵリソース管理プログラム３００は、第１種のＣＰＵリソース定義情報を、ＶＭに割り当てたＣＰＵリソースの範囲内で、ユーザプログラム７００に再割り当てし、ＣＰＵリソース再定義情報を生成し、ＣＰＵリソースを管理する。
【００１９】
次に、第１の実施の形態の効果について説明する。
【００２０】
第１の実施の形態は、ＶＭを運用するコンピュータシステム１００のＣＰＵリソース管理プログラム３００が、ＶＭ上で実行されるユーザプログラム７００のＣＰＵリソース管理を行う構成である。したがって、第１の実施の形態は、ＶＭ上で動作するユーザプログラム７００に対するＣＰＵリソースの管理を行うことができるという効果を持つ。
【００２１】
次に、本発明の第２の実施の形態について、図面を参照して詳細に説明する。
【００２２】
図２は、第１の実施の形態の一例である第２の実施の形態の構成を示すブロック図である。図２を参照すると、第２の実施の形態のコンピュータシステム１００は、ホストＯＳ２００、ＣＰＵリソース管理プログラム３００、ＶＭ制御プログラム４００、ＶＭ制御プログラム４１０、ゲストＯＳ５００、ゲストＯＳ５１０を含む。
【００２３】
さらに、コンピュータシステム１００は、ＶＭリソース管理プログラム６００、ＶＭリソース管理プログラム６１０、ユーザプログラム７００、ユーザプログラム７０１、ユーザプログラム７１０、ユーザプログラム７１１、ユーザプログラム７２０を含む。
【００２４】
ＶＭ制御プログラム４００、ゲストＯＳ５００、ＶＭリソース管理プログラム６００、ユーザプログラム７００、ユーザプログラム７０１は、第１のＶＭ（ＶＭ０と呼ぶ）に関するものである。
【００２５】
ＶＭ制御プログラム４１０、ゲストＯＳ５１０、ＶＭリソース管理プログラム６１０、ユーザプログラム７１０、ユーザプログラム７１１は、第２のＶＭ（ＶＭ１と呼ぶ）に関するものである。ユーザプログラム７２０は、ホストＯＳ２００上で実行される。
【００２６】
図３は、第２の実施の形態のハードウェア構成例を示すブロック図である。図３を参照すると、コンピュータシステム１００は、ＣＰＵ（０）１Ａ０、…、ＣＰＵ（ｎ）１Ａｎ、Ｉ／Ｏインタフェース２Ａ０、…、Ｉ／Ｏインタフェース２Ａｍ、主記憶３Ａ０を含む。
【００２７】
また、たとえば、Ｉ／Ｏインタフェース２Ａｍには、ハードディスク４Ａ０が接続される。図示しないが、Ｉ／Ｏインタフェース２Ａ０、…には、ディスプレイ、キーボード等種々の装置が接続可能である。ここで、ｎ、ｍは、任意の整数である。すなわち、ＣＰＵ、および、Ｉ／Ｏインタフェースの個数は、任意である。
【００２８】
Ｉ／Ｏは、入出力（Input/Output）である。各プログラムは、ハードディスク４Ａ０に格納され、主記憶３Ａ０にロードされ実行される。
【００２９】
図４は、ＣＰＵリソース割り当ての割合の上限が定義されるＣＰＵリソース定義情報の一例を示す説明図である。ＢＭのＣＰＵリソース定義情報ＣＢＳは、ＶＭ０、ＶＭ１、ユーザプログラム７２０に対するＤＣ番号（ＢＭ）（０，１，２）、ＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値（５０［％］，４０［％］，１０［％］）を含む。ＣＰＵリソース定義情報ＣＢＳを第２種のＣＰＵリソース定義情報と呼ぶ。
【００３０】
ＶＭ０のＣＰＵリソース定義情報ＣＶＭ０（第１種のＣＰＵリソース定義情報の一例）は、ＶＭ０のユーザプログラム７００、７０１に対するＤＣ番号（ＶＭ０）（０，１）、ＣＰＵリソース上限値（８０［％］、２０［％］）を含む。ＶＭ１のＣＰＵリソース定義情報ＣＶＭ１（第１種のＣＰＵリソース定義情報の一例）は、ＶＭ１のユーザプログラム７１０、７１１に対するＤＣ番号（ＶＭ１）（０，１）、ＣＰＵリソース上限値（５０［％］、５０［％］）を含む。
【００３１】
ＤＣ（Dispatching Class）番号は、プログラムを構成するプロセスに付与される識別情報である。プロセスの実行時には、当該プロセスに対応するＤＣ番号のＣＰＵリソース上限値の範囲内で、当該プロセスにＣＰＵリソースが割り当てられる。
【００３２】
ＣＰＵリソース再定義情報ＣＲＳは、ＢＭ−ＤＣ番号、ＶＭ−ＤＣ番号、ＢＭ上限値、ＶＭ上限値、再定義ＤＣ番号、再定義ＣＰＵリソース上限値を含む。ＢＭ、ＶＭ０、ＶＭ１用に個別に生成されたＣＰＵリソース定義情報ＣＢＳ、ＣＶＭ０、ＣＶＭ１がＶＭ０、ＶＭ１起動時に再定義され、ＣＰＵリソース再定義情報ＣＲＳが生成される。
【００３３】
ＢＭ−ＤＣ番号（０，１，２）は、ＣＰＵリソース定義情報ＣＢＳのＤＣ番号（ＢＭ）から引用される。ＶＭ−ＤＣ番号（０，１）は、ＣＰＵリソース定義情報ＣＶＭ０のＤＣ番号（ＶＭ０）、および、ＣＰＵリソース定義情報ＣＶＭ１のＤＣ番号（ＶＭ１）から引用される。
【００３４】
また、ＢＭ上限値（５０［％］，４０［％］，１０［％］）は、ＣＰＵリソース定義情報ＣＢＳのＣＰＵリソース上限値から引用される。ＶＭ上限値（８０［％］、５０［％］，２０［％］）は、ＣＰＵリソース定義情報ＣＶＭ０のＣＰＵリソース上限値、および、ＣＰＵリソース定義情報ＣＶＭ１のＣＰＵリソース上限値から引用される。
【００３５】
ＢＭ上のプロセスに関しては、たとえば、再定義ＤＣ番号は、ＢＭ−ＤＣ番号（０，１，２）がそのまま付与される。ＶＭ０、ＶＭ１上のプロセスに関しては、たとえば、新たな再定義ＤＣ番号（３，４，５，６）が付与される。
【００３６】
ＢＭ上のプロセスに関しては、再定義ＣＰＵリソース上限値は、ＢＭ上限値（５０［％］，４０［％］，１０［％］）がそのまま使用される。ＶＭ上のプロセスに関しては、再定義ＣＰＵリソース上限値は、ＢＭ上限値とＶＭ上限値の積が使用される。すなわち、再定義ＤＣ番号３，４，５，６に対応する再定義ＣＰＵリソース上限値は、それぞれ、４０［％］（＝０．５×０．８）、１０［％］（＝０．５×０．２）、２０［％］（＝０．４×０．５）、２０［％］（＝０．４×０．５）である。
【００３７】
ここで、ＶＭ０、ＶＭ１上のプロセスが同時に実行されることはない。再定義ＤＣ番号０，１に対応するプロセスは、ＶＭ０、ＶＭ１上のプロセス以外のプロセスであって、たとえば、ＶＰプロセス、ゲストＯＳ５００、５１０（のカーネル）のプロセス等である。
【００３８】
再定義ＤＣ番号２のプロセスの実行可否確認の動作では、［再定義ＤＣ番号２のプロセスの実行時間の積算値であるＣＰＵリソース使用時間Ｃ］／［全ＤＣ番号のプロセスの実行時間の積算値とアイドル時間の総和Ａ］が計算される。ここで、Ｃ／Ａが再定義ＤＣ番号２の再定義ＣＰＵリソース上限値（１０［％］）未満であれば、プロセスキューに繋がっている再定義ＤＣ番号２のプロセスが実行され、そうでなければ、実行されない。
【００３９】
再定義ＤＣ番号０のプロセスの実行可否確認の動作では、Ｃは、再定義ＤＣ番号０、再定義ＤＣ番号３、および、再定義ＤＣ番号４のプロセスの実行時間の積算値の和である。そして、Ｃ／Ａが、再定義ＤＣ番号０の再定義ＣＰＵリソース上限値（５０［％］）未満であれば、プロセスキューに繋がっている再定義ＤＣ番号０のプロセスが実行され、そうでなければ、実行されない。
【００４０】
再定義ＤＣ番号１のプロセスの実行可否確認の動作では、Ｃは、再定義ＤＣ番号１、再定義ＤＣ番号５、および、再定義ＤＣ番号６のプロセスの実行時間の積算値の和である。そして、Ｃ／Ａが、再定義ＤＣ番号１の再定義ＣＰＵリソース上限値（４０［％］）未満であれば、プロセスキューに繋がっている再定義ＤＣ番号１のプロセスが実行され、そうでなければ、実行されない。
【００４１】
再定義ＤＣ番号３（または、４）のプロセスの実行可否確認の動作では、まず、ＸＶ＝［再定義ＤＣ番号３（または、４）のプロセスの実行時間の積算値であるＣＰＵリソース実行時間］／Ａが計算される。ＸＶが、再定義ＤＣ番号３（または、４）の再定義ＣＰＵリソース上限値（４０［％］（または、１０［％］））未満であれば、Ｃを計算する。
【００４２】
Ｃは、再定義ＤＣ番号０、再定義ＤＣ番号３、および、再定義ＤＣ番号４のプロセスの実行時間の積算値の和である。そして、値ＺＶ＝Ｃ／Ａが、再定義ＤＣ番号０の再定義ＣＰＵリソース上限値（５０［％］）未満であれば、プロセスキューに繋がっている再定義ＤＣ番号３（または、４）のプロセスが実行され、そうでなければ、実行されない。
【００４３】
再定義ＤＣ番号５（または、６）のプロセスの実行可否確認の動作では、まず、ＸＶ＝［再定義ＤＣ番号５（または、６）のプロセスの実行時間の積算値であるＣＰＵリソース実行時間］／Ａが計算される。ＸＶが、再定義ＤＣ番号５（または、６）の再定義ＣＰＵリソース上限値（２０［％］）未満であれば、Ｃを計算する。
【００４４】
Ｃは、再定義ＤＣ番号１、再定義ＤＣ番号５、および、再定義ＤＣ番号６のプロセスの実行時間の積算値の和である。そして、値ＺＶ＝Ｃ／Ａが、再定義ＤＣ番号１の再定義ＣＰＵリソース上限値（４０［％］）未満であれば、プロセスキューに繋がっている再定義ＤＣ番号５（または、６）のプロセスが実行され、そうでなければ、実行されない。
【００４５】
次に、第２の実施の形態の動作について図面を参照して説明する。
【００４６】
コンピュータシステム１００に電源が投入されると、ハードウェアの初期化が行われ、ホストＯＳ２００が起動する。
【００４７】
次に、ＣＰＵリソース管理プログラム３００が起動し、ＢＭのＣＰＵリソース定義情報ＣＢＳからＣＰＵリソース再定義情報ＣＲＳを生成し、ＢＭに対するＣＰＵリソースの管理を開始する。ＤＣ番号（ＢＭ）２に対応するユーザプログラム７２０のプロセスが実行される場合には、ＣＰＵリソース上限値は、１０［％］が割り当てられる。
【００４８】
次に、たとえば、ＶＭ０のＶＭ制御プログラム４００が起動し、ＶＭ０のゲストＯＳ５００を起動すると、ＶＭ０のＶＭリソース管理プログラム６００が起動する。ＶＭリソース管理プログラム６００は、ＶＭ０のＣＰＵリソース定義情報ＣＶＭ０を獲得する。
【００４９】
そして、図４に示すように、ＶＭ０のユーザプログラム７００、７０１のプロセスには、それぞれ、再定義ＤＣ番号３、４が割り当てられる。上述のように、再定義ＤＣ番号３、４に対する再定義ＣＰＵリソース上限値は、それぞれ、４０［％］、１０［％］である。
【００５０】
ＶＭ１のＶＭ制御プログラム４１０が起動した場合には、同様にして、図４に示すように、ＶＭ１のユーザプログラム７１０、７１１のプロセスには、それぞれ、再定義ＤＣ番号５、６が割り当てられる。上述のように、再定義ＤＣ番号５、６に対する再定義ＣＰＵリソース上限値は、それぞれ、２０［％］、２０［％］である。
【００５１】
図５は、主記憶領域の構成を示す説明図である。図５を参照すると、主記憶領域は、ＢＭの主記憶領域、ＶＭ０の主記憶領域、および、ＶＭ１の主記憶領域を含む。
【００５２】
ＢＭの主記憶領域は、実行可能プロセスキュー（待ち行列）、ＢＭのＣＰＵリソース定義情報ＣＢＳ、ＣＰＵリソース再定義情報ＣＲＳを含む。
【００５３】
さらに、ＢＭの主記憶領域は、ＤＣ番号ごとのＣＰＵリソース使用時間（情報である）、および、ＣＰＵがアイドル状態（実行可能なプロセスがない状態）であった時間であるＣＰＵアイドル時間（情報である）を含む。これら時間に関する情報は、プロセス実行状態、あるいは、アイドル状態時にＣＰＵリソースタイマ（ハードウェア）により時間がカウントされ、それぞれの状態が変化するときに積算される。なお、これらの時間の情報は、一定間隔でＣＰＵリソース管理初期化処理が動作して初期化される。
【００５４】
ＶＭ０の主記憶領域は、実行可能プロセスキュー、ＶＭ０のＣＰＵリソース定義情報ＣＶＭ０、および、ＣＰＵリソース再定義情報ＣＲＳを含む。ＶＭ１の主記憶領域は、実行可能プロセスキュー、ＶＭ１のＣＰＵリソース定義情報ＣＶＭ１、および、ＣＰＵリソース再定義情報ＣＲＳを含む。
【００５５】
ＢＭの実行可能プロセスキューには、プロセス（１）ＰＲＧ−２、ＶＰプロセス（２）ＶＰ−０、および、ＶＰプロセス（３）ＶＰ−１が繋がっている。プロセス（１）ＰＲＧ−２は、ユーザプログラム７２０のプロセス（ＤＣ番号（ＢＭ）２）である。
【００５６】
ＶＰプロセス（２）ＶＰ−０は、ＶＭ０を実行するためのＶＰプロセス（ＶＭ制御プログラム４００のプロセス、ＤＣ番号（ＢＭ）０）である。ＶＰプロセス（３）ＶＰ−１は、ＶＭ１を実行するためのＶＰプロセス（ＶＭ制御プログラム４１０のプロセス、ＤＣ番号（ＢＭ）１）である。
【００５７】
ＶＭ０の実行可能プロセスキューには、プロセス（４）ＶＭ０−３、プロセス（５）ＶＭ０−４が繋がっている。プロセス（４）ＶＭ０−３は、ユーザプログラム７００のプロセス（ＤＣ番号（ＶＭ０）０、再定義ＤＣ番号３）である。プロセス（５）ＶＭ０−４は、ユーザプログラム７０１のプロセス（ＤＣ番号（ＶＭ０）１、再定義ＤＣ番号４）である。
【００５８】
ＶＭ１の実行可能プロセスキューには、プロセス（６）ＶＭ１−５、プロセス（７）ＶＭ１−６が繋がっている。プロセス（６）ＶＭ１−５は、ユーザプログラム７１０のプロセス（ＤＣ番号（ＶＭ１）０、再定義ＤＣ番号５）である。プロセス（７）ＶＭ１−６は、ユーザプログラム７１１のプロセス（ＤＣ番号（ＶＭ１）１、再定義ＤＣ番号６）である。
【００５９】
プロセスには優先順位があり、優先順位の高い順に繋がっており、先頭のプロセスから実行される。それぞれのプロセスにはＣＰＵ上でプロセスを実行するために必要なプロセス実行情報が存在する。また、実行可能プロセスキューには、同一のＤＣ番号を持つプロセスが繋がることが可能である（あるプログラムは、複数のプロセスから構成されるからである）。
【００６０】
図６、図７、図８は、第２の実施の形態の動作を示すフローチャートである。ＣＰＵリソース管理プログラム３００が、このフローチャートの動作を行う。なお、この動作は、ＣＰＵリソース定義情報ＣＢＳ、ＣＰＵリソース定義情報ＣＶＭ０、ＣＰＵリソース定義情報ＣＶＭ１、および、ＣＰＵリソース再定義情報ＣＲＳがすでに生成された後の動作である。また、この動作は、ＢＭの実行可能プロセスキュー、ＶＭ０（または、ＶＭ１）の実行可能プロセスキューが生成された後の動作である。
【００６１】
ＢＭの実行可能プロセスキューの生成は、コンピュータシステム１００（のファームウェア）、ホストＯＳ２００、または、ＣＰＵリソース管理プログラム３００による等の種々の構成が可能である。また、ＶＭ０（または、ＶＭ１）の実行可能キューの生成は、コンピュータシステム１００（のファームウェア）、または、ＣＰＵリソース管理プログラム３００による等の種々の構成が可能である。
【００６２】
Ｓ１０１〜Ｓ１０８は、ＢＭの実行可能プロセスキューを先頭からサーチし、実行可能プロセスを決定する処理（プロセス選択処理）である。なお、図６〜図８において、ＶＭ０（または、ＶＭ１）をＶＭと省略して記述する。
【００６３】
ＣＰＵリソース管理プログラム３００は、まず、ＢＭの実行可能プロセスキューを指すポインタを先頭（たとえば、図５のプロセス（１）ＰＲＧ−２）に向ける（Ｓ１０１）。ＣＰＵリソース管理プログラム３００は、全再定義ＤＣ番号（０−６）のプロセスのＣＰＵリソース使用時間（実行時間の積算値）、および、アイドル時間の総和を計算してＡとする（Ｓ１０２）。
【００６４】
次に、ＣＰＵリソース管理プログラム３００は、ポインタが指す先にプロセスが存在するかどうかを確認し（Ｓ１０３）、プロセスが存在しなかった場合には（Ｓ１０３／Ｎ）、プロセス選択処理を終了する（アイドル状態になる）。
【００６５】
プロセスが存在した場合には（Ｓ１０３／Ｙ）、ＣＰＵリソース管理プログラム３００は、［当該プロセスのＤＣ番号（ＢＭ）に対応したＣＰＵリソース使用時間］／Ａ＝値Ｘを確認する（Ｓ１０４）。
【００６６】
ＣＰＵリソース再定義情報ＣＲＳから、その値Ｘが、対応するＣＰＵリソース上限値以上である場合（Ｓ１０４／Ｙ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行不可能と判断する。そして、ＣＰＵリソース管理プログラム３００は、実行可能プロセスキューを指すポインタを次のプロセスに向け（Ｓ１０８）、Ｓ１０３の処理へ戻る。
【００６７】
ＣＰＵリソース再定義情報ＣＲＳから、その値Ｘが、ＣＰＵリソース上限値未満である場合（Ｓ１０４／Ｎ）、ＣＰＵリソース管理プログラム３００は、当該プロセスがＶＭ０、または、ＶＭ１に割り当てられたプロセスかどうかを確認する（Ｓ１０５）。すなわち、ＣＰＵリソース再定義情報ＣＲＳにおいて、ＤＣ番号（ＢＭ）０、または、ＤＣ番号（ＢＭ）１に対応するプロセスかどうかが確認される。
【００６８】
当該プロセスがＶＭ０（または、ＶＭ１）に割り当てられたプロセスでないと（Ｓ１０５／Ｎ、たとえば、ＤＣ番号（ＢＭ）２）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行可能と判断し、Ｓ１１１の処理へ分岐する。
【００６９】
当該プロセスがＶＭ０（または、ＶＭ１）に割り当てられたプロセスであると（Ｓ１０５／Ｙ）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース再定義情報ＣＲＳを参照する。そして、ＣＰＵリソース管理プログラム３００は、当該プロセスと該当するＶＭ０（またはＶＭ１）上のプロセスのＣＰＵリソース使用時間の総和を計算してＣとする（Ｓ１０６）。
【００７０】
たとえば、当該プロセスがＶＭ０のプロセス（ＤＣ番号（ＢＭ）０）であると、再定義ＤＣ番号０，３，４のＣＰＵリソース使用時間の和がＣである。
【００７１】
次に、ＣＰＵリソース管理プログラム３００は、値Ｚ＝Ｃ／Ａが、当該プロセスの再定義ＤＣ番号に対応した再定義ＣＰＵリソース上限値以上かどうかを確認する（Ｓ１０７）。たとえば、再定義ＤＣ番号０の場合、値Ｚが５０［％］以上かどうかが確認される。
【００７２】
Ｚが当該再定義ＣＰＵリソース上限値以上であると（Ｓ１０７／Ｙ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行不可能と判断し、実行可能プロセスキューを指すポインタを次のプロセスに向け（Ｓ１０８）、Ｓ１０３の処理へ戻る。
【００７３】
Ｚが当該再定義ＣＰＵリソース上限値未満であると（Ｓ１０７／Ｎ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行可能と判断し、Ｓ１１１の処理へ分岐する。そして、ＣＰＵリソース管理プログラム３００は、実行可能と判断した当該プロセスを実行するために、当該プロセスを実行可能プロセスキューから取り外す（Ｓ１１１）。
【００７４】
さらに、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマ（ハードウェア）を初期化して起動する（Ｓ１１２）。そして、ＣＰＵリソース管理プログラム３００は、当該プロセスがＶＰプロセスであれば（Ｓ１１３／Ｙ）、Ｓ３０Ａの処理に進み、そうでなければ（Ｓ１１３／Ｎ）、Ｓ２０Ａの処理に進み、取り外したプロセスを実行させる。ＶＰプロセスであるかどうかの情報は、たとえば、プロセス実行情報に格納されている。
【００７５】
なお、プロセス実行時のＣＰＵ（ハードウェア）へのプロセス実行情報の取り込み、および、プロセス終了時のＣＰＵ（ハードウェア）からのプロセス実行情報の書き戻しは通常のコンピュータの動作と同じであるため、フローチャートからは省略されている。
【００７６】
Ｓ２０Ａにおけるプロセスの実行が終了（または、中断）すると（Ｓ２１０）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマを停止する（Ｓ２１１）。そして、ＣＰＵリソース管理プログラム３００は、当該プロセスの再定義ＤＣ番号のＣＰＵリソース使用時間にＣＰＵリソースタイマの値（プロセス実行時間）を加算する（Ｓ２１１）。ハードウェアのＣＰＵリソースタイマはＣＰＵごとに１個存在し、経過時間をカウントアップするタイマである。
【００７７】
プロセスの実行中断の場合には、ＣＰＵリソース管理プログラム３００は、当該実行可能プロセスキューに当該プロセスを繋ぐ（Ｓ２１２）。そして、プロセスの実行終了、中断のどちらの場合も、ＣＰＵリソース管理プログラム３００は、プロセス選択処理（Ｓ１０１）の先頭へ戻ってプロセス選択処理を繰り返す。
【００７８】
Ｓ３０Ａ〜Ｓ３０８は、ＶＭ０（または、ＶＭ１）の実行可能プロセスキューを先頭からサーチし、実行可能プロセスを決定する処理である。ＣＰＵリソース管理プログラム３００は、ＶＰプロセスの実行を開始させ（Ｓ３０Ａ）、ＶＭ０（またはＶＭ１）の主記憶領域ヘアクセスするためにＣＰＵ（ハードウェア）を通常モードからＶＭモードに変更する（Ｓ３０１）。
【００７９】
そして、ＣＰＵリソース管理プログラム３００は、当該ＶＭ０（または、ＶＭ１）の実行可能プロセスキューを指すポインタを先頭（たとえば、プロセス（４）ＶＭ０−３）に向ける（Ｓ３０２）。次に、ＣＰＵリソース管理プログラム３００は、全再定義ＤＣ番号（０−６）のプロセスのＣＰＵリソース使用時間（実行時間の積算値）、および、アイドル時間の総和を計算してＡとする（Ｓ３０３）。
【００８０】
次に、ＣＰＵリソース管理プログラム３００は、ポインタが指す先にＶＭ０（または、
ＶＭ１）上のプロセスが存在するかどうかを確認する（Ｓ３０４）。
【００８１】
プロセスが存在した場合には（Ｓ３０４／Ｙ）、ＣＰＵリソース管理プログラム３００は、当該プロセスの再定義ＤＣ番号に対応したＣＰＵリソース使用時間をＡで割った値ＸＶを確認する（Ｓ３０５）。たとえば、再定義ＤＣ番号５であれば、２０［％］以上かどうかが確認される。
【００８２】
ＣＰＵリソース再定義情報ＣＲＳから、その値ＸＶが、対応する再定義ＣＰＵリソース上限値以上である場合（Ｓ３０５／Ｙ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行不可能と判断する。そして、ＣＰＵリソース管理プログラム３００は、実行可能プロセスキューを指すポインタを次のプロセスに向け（Ｓ３０８）、Ｓ３０４の処理へ戻る。
【００８３】
ＣＰＵリソース再定義情報ＣＲＳから、値ＸＶが、再定義ＣＰＵリソース上限値未満である場合（Ｓ３０５／Ｎ）、Ｃを計算する。すなわち、ＣＰＵリソース管理プログラム３００は、ＶＭ０（またはＶＭ１）上の当該プロセスと該当するＶＰプロセスのＣＰＵリソース使用時間の総和を計算してＣとする（Ｓ３０６）。
【００８４】
たとえば、当該プロセスがＶＭ１上のプロセス（再定義ＤＣ番号５）であると、再定義ＤＣ番号１，５，６のＣＰＵリソース使用時間の和がＣである。
【００８５】
次に、ＣＰＵリソース管理プログラム３００は、値ＺＶ＝Ｃ／Ａが、対応するＶＰプロセスの再定義ＤＣ番号に対応した再定義ＣＰＵリソース上限値以上かどうかを確認する（Ｓ３０７）。たとえば、再定義ＤＣ番号５の場合、値ＺＶが４０［％］以上かどうかが確認される。
【００８６】
ＺＶが当該再定義ＣＰＵリソース上限値以上であると（Ｓ３０７／Ｙ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行不可能と判断し、実行可能プロセスキューを指すポインタを次のプロセスに向け（Ｓ３０８）、Ｓ３０４の処理へ戻る。
【００８７】
ＺＶが当該再定義ＣＰＵリソース上限値未満であると（Ｓ３０７／Ｎ）、ＣＰＵリソース管理プログラム３００は、当該プロセスを実行可能と判断し、Ｓ３１０の処理へ分岐する。そして、ＣＰＵリソース管理プログラム３００は、実行可能と判断した当該プロセスを実行するために、実行可能プロセスキューから取り外す（Ｓ３１０）。
【００８８】
ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマ（Ｓ１１２において起動）を停止し、ＣＰＵリソースタイマの値（当該ＶＰプロセスの実行時間）を当該ＶＰプロセスの再定義ＤＣ番号に対応するＣＰＵリソース使用時間に加算する（Ｓ３１１）。
【００８９】
次に、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマを初期化して起動し（Ｓ３１２）、ＶＭ０（または、ＶＭ１）上のプロセス（Ｓ３１０で、取りはずしたもの）を実行させる（Ｓ３２０）。
【００９０】
Ｓ３３０〜Ｓ３３３は、実行していたＶＭ０（または、ＶＭ１）上のプロセスが終了、または、中断した場合の処理である。
【００９１】
Ｓ３２０におけるＶＭ０（または、ＶＭ１）上のプロセスの実行が終了（または、中断）すると（Ｓ３３０）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマを停止する（Ｓ３３１）。
【００９２】
そして、ＣＰＵリソース管理プログラム３００は、当該ＶＭ０（または、ＶＭ１）上のプロセスの再定義ＤＣ番号のＣＰＵリソース使用時間にＣＰＵリソースタイマの値（ＶＭ０（またはＶＭ１）上のプロセス実行時間）を加算する（Ｓ３３１）。
【００９３】
ＶＭ０（または、ＶＭ１）上のプロセスの実行中断の場合は、ＣＰＵリソース管理プログラム３００は、当該実行可能プロセスキューに当該プロセスを繋ぐ（Ｓ３３２）。プロセスの実行終了、中断のどちらの場合も、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマを初期化して起動する（Ｓ３３３）。
【００９４】
そして、ＣＰＵリソース管理プログラム３００は、Ｓ３０２へ戻ってＶＭ０（または、ＶＭ１）上のプロセスに対するプロセス選択処理を繰り返す。
【００９５】
Ｓ３０４において、ＶＭ０（または、ＶＭ１）上のプロセスが存在しなかった場合には（Ｓ３０４／Ｎ）、ＣＰＵリソース管理プログラム３００は、ＢＭの主記憶領域ヘアクセスするためにＣＰＵ（ハードウェア）をＶＭモードから通常モードヘ戻す（Ｓ３４０）。そして、ＣＰＵリソース管理プログラム３００は、ＶＰプロセスを終了させる（Ｓ３４１）。
【００９６】
ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマ（Ｓ１１２において起動）を停止し、ＣＰＵリソースタイマの値（当該ＶＰプロセスの実行時間）を当該ＶＰプロセスの再定義ＤＣ番号に対応するＣＰＵリソース使用時間に加算する（Ｓ３４２）。そして、ＣＰＵリソース管理プログラム３００は、Ｓ１０１の処理に戻る。
【００９７】
ここで、Ｓ３４１において、ＣＰＵリソース管理プログラム３００が、ＶＰプロセスを終了させずに、ＶＰプロセスをＢＭの実行可能プロセスキューに繋げる方式も可能である。
【００９８】
また、ＣＰＵリソース管理プログラム３００は、Ｓ２０Ａ、または、Ｓ３２０におけるプロセスの実行中に、一定の短い間隔で割り込んで、実行中チェック処理により、Ｂ／Ａ（後述する）、Ｃ／Ａ（後述する）の値をチェックする（Ｓ４０Ａ〜Ｓ４０７）。
【００９９】
また、Ａが事前に設定された一定値Ｔ以上になった場合、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース管理初期化処理（Ｓ５０Ａ〜Ｓ５０４）を実行する。このＣＰＵリソース管理初期化処理は、ＣＰＵリソース管理に使用する各種の情報を初期化するもので、ＣＰＵがアイドル状態の時にも動作する。
【０１００】
実行中チェック処理においては、ＣＰＵリソース管理プログラム３００は、まず、ＣＰＵリソースタイマと全再定義ＤＣ番号に対応するＣＰＵリソース使用時間とアイドル時間の総和を計算してＡとする（Ｓ４０Ａ）。
【０１０１】
ＣＰＵがアイドル状態の場合（Ｓ４０１／Ｙ）、ＣＰＵリソース管理プログラム３００は、Ａが一定値Ｔ以上かどうかを確認する（Ｓ４０７）。Ａが一定値Ｔ以上であると（Ｓ４０７／Ｙ）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース管理初期化処理を実行し、そうでなければ（Ｓ４０７／Ｎ）、処理を終了する。
【０１０２】
ＣＰＵがアイドルでない場合（Ｓ４０１／Ｎ）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマと実行中のプロセスの再定義ＤＣ番号に対応したＣＰＵリソース使用時間の和をＢとする（Ｓ４０２）。
【０１０３】
Ｂ／Ａの値が［実行中のプロセスの再定義ＣＰＵリソース上限値］以上であれば（Ｓ４０３／Ｙ）、ＣＰＵリソース管理プログラム３００は、Ｓ２１０、または、Ｓ３３０の処理に分岐して当該プロセスを中断させる。
【０１０４】
Ｂ／Ａの値が実行中のプロセスの再定義ＣＰＵリソース上限未満であれば（Ｓ４０３／Ｎ）、ＣＰＵリソース管理プログラム３００は、実行中のプロセスの種類を調べる（Ｓ４０４）。実行中のプロセスが、ＢＭでＶＭ０（または、ＶＭ１）として定義されたプロセス、または、ＶＭ０（またはＶＭ１）上のプロセスであれば（Ｓ４０４／Ｙ）、ＣＰＵリソース管理プログラム３００は、Ｓ４０５に進む。そうでなければ（Ｓ４０４／Ｎ）、ＣＰＵリソース管理プログラム３００は、Ｓ４０７へ分岐する。
【０１０５】
すなわち、図４における（ＤＣ番号（ＢＭ）０，１、再定義ＤＣ番号０，１）または、（再定義ＤＣ番号３，４，５，６）であれば、Ｓ４０５が実行され、そうでなければ（ＤＣ番号（ＢＭ）２、再定義ＤＣ番号２）、Ｓ４０７が実行される。
【０１０６】
次に、ＣＰＵリソース管理プログラム３００は、当該ＶＰプロセスと該当するＶＭ０（またはＶＭ１）上のプロセスのＣＰＵリソース使用時間とＣＰＵリソースタイマの値の総和を計算してＣとする（Ｓ４０５）。たとえば、当該プロセスがＶＭ１に該当する再定義ＤＣ番号１のＶＰプロセス、または、ＶＭ１上のプロセス（再定義ＤＣ番号４，５）であると、再定義ＤＣ番号１，５，６のＣＰＵリソース使用時間の和とＣＰＵリソースタイマの値との総和がＣである。
【０１０７】
ＣＰＵリソース管理プログラム３００は、値ＺＫ＝Ｃ／Ａが、［当該プロセスに対応したＶＰプロセスの再定義ＣＰＵリソース上限値］以上かどうかを確認する（Ｓ４０６）。たとえば、実行中の当該プロセスが再定義ＤＣ番号１，５，６に対応する場合、値ＺＫが４０［％］以上かどうかが確認される。
【０１０８】
ＺＫが当該再定義ＣＰＵリソース上限値以上であると（Ｓ４０６／Ｙ）、ＣＰＵリソース管理プログラム３００は、Ｓ２１０、または、Ｓ３３０の処理に分岐して当該プロセスを中断させる。ＺＫが当該再定義ＣＰＵリソース上限値未満であると（Ｓ４０６／Ｎ）、ＣＰＵリソース管理プログラム３００は、Ａが一定値Ｔ以上かどうかを確認する（Ｓ４０７）。
【０１０９】
Ａが一定値Ｔ以上であると（Ｓ４０７／Ｙ）、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース管理初期化処理を行い、そうでないと（Ｓ４０７／Ｎ）、実行中チェック処理を終了し、プロセスの実行に戻る。
【０１１０】
ＣＰＵリソース管理初期化処理においては、まず、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソースタイマが動作中ならば、ＣＰＵリソースタイマを初期化して起動する（Ｓ５０Ａ）。そして、ＣＰＵリソース管理プログラム３００は、すべてのＣＰＵリソース使用時間（図５）をリセットし（Ｓ５０１）、ＣＰＵアイドル時間（図５）をリセットする（Ｓ５０２）。
【０１１１】
ＣＰＵリソース管理プログラム３００は、ＶＭ０（または、ＶＭ１）の実行可能プロセスキューにプロセスが繋がっている場合（Ｓ５０３／Ｙ）、当該ＶＭ０（または、ＶＭ１）に対応するＶＰプロセスがＢＭの実行可能プロセスキューを確認する（５０４）。当該ＶＭ０（または、ＶＭ１）に対応するＶＰプロセスがＢＭの実行可能プロセスキューに繋がっていなければ、ＣＰＵリソース管理プログラム３００は、ＶＰプロセスをＢＭの実行可能プロセスキューに繋げる（Ｓ５０４）。
【０１１２】
ＣＰＵリソース管理プログラム３００は、ＶＭ０（または、ＶＭ１）の実行可能プロセスキューにプロセスが繋がってない場合（Ｓ５０３／Ｎ）、または、Ｓ５０４実行後、ＣＰＵリソース管理初期化処理を終了する。
【０１１３】
次に、ＣＰＵリソース定義情報ＣＢＳ、ＣＰＵリソース定義情報ＣＶＭ０（または、ＣＰＵリソース定義情報ＣＶＭ１）、および、ＣＰＵリソース再定義情報ＣＲＳの生成の動作について説明する。ゲストＯＳ５００、５１０に関しては、ゲストＯＳ５００に代表させて説明する。
【０１１４】
図９は、第２の実施の形態の動作を示すフローチャートである。図９を参照すると、まず、ホストＯＳ２００は、オペレータ等からの入力を受け取り、ＣＰＵリソース定義情報ＣＢＳを生成し、ＢＭの領域（図５）に格納する（ステップＳ８０１）。次に、ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース定義情報ＣＢＳに基づいて、ＣＰＵリソース再定義情報ＣＲＳを生成し、ＢＭの領域に格納する（ステップＳ８０２）。
【０１１５】
この時点では、まだ、ＣＰＵリソース定義情報ＣＶＭ０、ＣＰＵリソース定義情報ＣＶＭ１が生成されていないので、ＣＰＵリソース定義情報ＣＢＳの内容とＣＰＵリソース再定義情報ＣＲＳの内容とは同一である。
【０１１６】
次に、ＶＭ制御プログラム４００が動作し、ゲストＯＳ５００のプロセスが、ＶＭ０の実行可能プロセスキューに繋がる（ステップＳ８０３）。ゲストＯＳ５００自身は、個別のＤＣ番号（ＶＭ０）を持たない。
【０１１７】
図６〜図７のステップＳ１０１、Ｓ１０７／Ｎ、Ｓ１１１、Ｓ１１３／Ｙ、Ｓ３０Ａ、Ｓ３０７／Ｎ、Ｓ３１０の処理が実行され、ステップＳ３２０において、ゲストＯＳ５００のプロセスが実行される（ステップＳ８０４）。
【０１１８】
ゲストＯＳ５００は、オペレータ等からの入力を受け取り、ＣＰＵリソース定義情報ＣＶＭ０を生成し、ＶＭ０の領域（図５）に格納する（ステップＳ８０５）。次に、ゲストＯＳ５００は、ＶＭリソース管理プログラム６００に、ＣＰＵリソース定義情報ＣＶＭ０の生成を通知する（ステップＳ８０６）。
【０１１９】
ＶＭリソース管理プログラム６００は、ＣＰＵリソース定義情報ＣＶＭ０を獲得し、ＣＰＵリソース管理プログラム３００に渡す（ステップＳ８０７）。
【０１２０】
ＣＰＵリソース管理プログラム３００は、ＣＰＵリソース定義情報ＣＶＭ０を受け取ると、ＣＰＵリソース定義情報ＣＶＭ０、および、ＣＰＵリソース定義情報ＣＢＳに基づいて、ＣＰＵリソース再定義情報ＣＲＳを生成する（ステップＳ８０８）。
【０１２１】
この場合、ＣＰＵリソース管理プログラム３００は、ゲストＯＳ５００の再定義ＤＣ番号を対応するＢＭ−ＤＣ番号０とする。
【０１２２】
そして、ＣＰＵリソース管理プログラム３００は、生成したＣＰＵリソース再定義情報ＣＲＳを、ＢＭの領域、および、ＶＭ０（または／および、ＶＭ１）の領域に格納する（ステップＳ８０９）。
【０１２３】
次に、第２の実施の形態の効果について説明する。
【０１２４】
第２の実施の形態は、第１の実施の形態の一例である。したがって、第２の実施の形態は、第１の実施の形態と同一の効果を持つ。
【０１２５】
また、第２の実施の形態は、ＶＰプロセス、または、ＶＭ０（または、ＶＭ１）上のプロセスに再定義ＤＣ番号、再定義ＣＰＵリソース上限値を生成する。さらに、第２の実施の形態は、全再定義ＤＣ番号に対応するＣＰＵリソース使用時間とＣＰＵアイドル時間の総和Ａ、および、ＶＭ０（または、ＶＭ１）に対応する全ＣＰＵリソース使用時間の総和Ｃを算出する。そして、第２の実施の形態は、Ｃ／Ａと再定義ＣＰＵリソース上限値を比較して、ＶＰプロセス、ＶＭ０（または、ＶＭ１）上のプロセスの実行可否を判断することにより、ＶＭ０（または、ＶＭ１）上プロセスについてもＣＰＵリソースを管理する構成である。
【０１２６】
したがって、第２の実施の形態は、仮想マシン（ＶＭ０（または、ＶＭ１）等）上で実行させるプログラムのプロセスに対するＣＰＵリソース管理を容易に実施できるという効果を持つ。
【０１２７】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１２８】
［付記１］
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムと、
前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理するＣＰＵリソース管理プログラムと、
を含むことを特徴とするコンピュータシステム。
【０１２９】
［付記２］
前記ＣＰＵリソース管理プログラムは、前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行うことを特徴とする付記１のコンピュータシステム。
【０１３０】
［付記３］
前記第１種のＣＰＵリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記第２種のＣＰＵリソース定義情報は、対応する前記ＶＭ制御プログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記ＣＰＵリソース管理プログラムは、前記ユーザプログラムに対して前記第１種のＣＰＵリソース定義情報における割り当ての割合と前記第２種のＣＰＵリソース定義情報における対応する前記ＶＭ制御プログラムの割合を乗じた値を前記ＣＰＵリソース再定義情報の内容とすることを特徴とする付記２のコンピュータシステム。
【０１３１】
［付記４］
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記ＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記３のコンピュータシステム。
【０１３２】
［付記５］
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記仮想マシンに対応する前記ＶＭ制御プログラムのプロセスのＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ＶＭ制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記４のコンピュータシステム。
【０１３３】
［付記６］
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムとを含み、
ＣＰＵリソース管理プログラムが、前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理することを特徴とするＣＰＵリソース管理方法。
【０１３４】
［付記７］
前記ＣＰＵリソース管理プログラムは、前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行うことを特徴とする付記６のＣＰＵリソース管理方法。
【０１３５】
［付記８］
前記第１種のＣＰＵリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記第２種のＣＰＵリソース定義情報は、対応する前記ＶＭ制御プログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記ＣＰＵリソース管理プログラムは、前記ユーザプログラムに対して前記第１種のＣＰＵリソース定義情報における割り当ての割合と前記第２種のＣＰＵリソース定義情報における対応する前記ＶＭ制御プログラムの割合を乗じた値を前記ＣＰＵリソース再定義情報の内容とすることを特徴とする付記７のＣＰＵリソース管理方法。
【０１３６】
［付記９］
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記ＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記８のＣＰＵリソース管理方法。
【０１３７】
［付記１０］
前記ＣＰＵリソース管理プログラムは、実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記仮想マシンに対応する前記ＶＭ制御プログラムのプロセスのＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ＶＭ制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記９のＣＰＵリソース管理方法。
【０１３８】
［付記１１］
ホストＯＳと、
仮想マシンを動作させるＶＭ制御プログラムと、
前記仮想マシンに対応するゲストＯＳと、
前記仮想マシン上で実行されるユーザプログラムと、
前記ユーザプログラムに対するＣＰＵリソースの割り当てを含む前記仮想マシンごとの第１種のＣＰＵリソース定義情報を渡すＶＭリソース管理プログラムとを含むコンピュータシステムのコンピュータに、
前記第１種のＣＰＵリソース定義情報を受け取り、前記仮想マシンに割り当てたＣＰＵリソースの範囲内で、前記ユーザプログラムに再割り当てし、ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソースを管理する動作をさせる、
ことを特徴とするＣＰＵリソース管理プログラム。
【０１３９】
［付記１２］
前記コンピュータに、
前記ＶＭ制御プログラムに対する前記ＣＰＵリソースの割り当てを含む第２種のＣＰＵリソース定義情報を生成し、前記第１種のＣＰＵリソース定義情報、および、前記第２種のリソース定義情報を再割り当てし、前記ＣＰＵリソース再定義情報を生成し、前記ＣＰＵリソース再定義情報、および、前記ユーザプログラムのＣＰＵリソース使用時間を用いて前記ＣＰＵリソースの管理を行う動作をさせることを特徴とする付記１１のＣＰＵリソース管理プログラム。
【０１４０】
［付記１３］
前記第１種のＣＰＵリソース定義情報は、対応する前記ユーザプログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含み、
前記第２種のＣＰＵリソース定義情報は、対応する前記ＶＭ制御プログラムのプロセスの実行時間に対するＣＰＵリソース割り当ての割合の上限であるＣＰＵリソース上限値を含む前記コンピュータシステムの前記コンピュータに、
前記ユーザプログラムに対して前記第１種のＣＰＵリソース定義情報における割り当ての割合と前記第２種のＣＰＵリソース定義情報における対応する前記ＶＭ制御プログラムの割合を乗じた値を前記ＣＰＵリソース再定義情報の内容とさせることを特徴とする付記１２のＣＰＵリソース管理プログラム。
【０１４１】
［付記１４］
前記コンピュータに、
実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記ＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ユーザプログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記１３のＣＰＵリソース管理プログラム。
【０１４２】
［付記１５］
前記コンピュータに、
実行可能プロセスキューに繋がれた前記ユーザプログラムのプロセスの実行に際し、［前記ユーザプログラムの前記仮想マシンに対応する前記ＶＭ制御プログラムのプロセスのＣＰＵリソース使用時間］／［全プロセスのＣＰＵリソース使用時間＋ＣＰＵアイドル時間］が前記ＣＰＵ再定義情報内の当該前記ＶＭ制御プログラムの割り当ての割合以上であれば、前記ユーザプログラムのプロセスを実行しないことを特徴とする付記１４のＣＰＵリソース管理プログラム。
【符号の説明】
【０１４３】
１００    コンピュータシステム
２００    ホストＯＳ
３００    ＣＰＵリソース管理プログラム
４００    ＶＭ制御プログラム
４１０    ＶＭ制御プログラム
５００    ゲストＯＳ
５１０    ゲストＯＳ
６００    ＶＭリソース管理プログラム
６１０    ＶＭリソース管理プログラム
７００    ユーザプログラム
７０１    ユーザプログラム
７１０    ユーザプログラム
７１１    ユーザプログラム
７２０    ユーザプログラム
１Ａ０    ＣＰＵ（０）
１Ａｎ    ＣＰＵ（ｎ）
２Ａ０    Ｉ／Ｏインタフェース
２Ａｍ    Ｉ／Ｏインタフェース
３Ａ０    主記憶
４Ａ０    ハードディスク
ＣＢＳ    ＣＰＵリソース定義情報
ＣＶＭ０    ＣＰＵリソース定義情報
ＣＶＭ１    ＣＰＵリソース定義情報
ＣＲＳ    ＣＰＵリソース再定義情報
ＰＲＧ−２    プロセス（１）
ＶＰ−０    プロセス（２）
ＶＰ−１    プロセス（３）
ＶＭ０−３    プロセス（４）
ＶＭ０−４    プロセス（５）
ＶＭ１−５    プロセス（６）
ＶＭ１−６    プロセス（７）
【図１】
0006426495.tif 000002
【図２】
0006426495.tif 000003
【図３】
0006426495.tif 000004
【図４】
0006426495.tif 000005
【図５】
0006426495.tif 000006
【図６】
0006426495.tif 000007
【図７】
0006426495.tif 000008
【図８】
0006426495.tif 000009
【図９】
0006426495.tif 000010