(57)【要約】【課題】複数の仮想計算機それぞれの仮想時刻を適切に制御できるようにすることを主な目的とする。【解決手段】記憶装置１０９は、実行状態と実行可能状態と待ち状態とのいずれかの動作状態になる複数の仮想計算機１２０の仮想計算機１２０別に仮想時刻と仮想時刻の時間加速倍率とを含んだ仮想計算機管理データ１３０を記憶する。スケジューリング部１１３は、実行可能状態の仮想計算機１２０のうち実行状態にする仮想計算機１２０を選択し、選択した仮想計算機１２０にＣＰＵ１０１を割り当てる。スケジューリング部１１３は、ＣＰＵ１０１が割り当てられた実行状態の仮想計算機１２０の仮想時刻を時間加速倍率で進めた時刻に更新し、実行可能状態の仮想計算機１２０の仮想時刻を更新せずに停止し、待ち状態の仮想計算機１２０の仮想時刻を時間加速倍率で進めた時刻に更新する。【選択図】図１
2013125336.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、
実行状態と実行可能状態と待ち状態とのいずれかの動作状態になる複数のタスクのタスク別に時刻を記憶する時刻情報記憶部と、
実行可能状態のタスクのうち実行状態にするタスクを選択し、選択したタスクに前記ＣＰＵを割り当てるＣＰＵ割り当て部と、
前記ＣＰＵ割り当て部によって前記ＣＰＵが割り当てられた実行状態のタスクの時刻を更新して進め、実行可能状態のタスクの時刻を更新せずに停止し、待ち状態のタスクの時刻を更新して進める時刻制御部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記時刻情報記憶部は、前記複数のタスクのタスク別に時刻を進める速さを表す時刻速度を記憶し、
前記時刻制御部は、前記実行状態のタスクの時刻を前記実行状態のタスクの時刻速度で進めた時刻に更新し、前記待ち状態のタスクの時刻を前記待ち状態のタスクの時刻速度で進めた時刻に更新する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、経過時間をカウントするカウンタを備え、
前記時刻制御部は、前記カウンタによってカウントされた経過時間と前記実行状態のタスクの時刻速度とに基づいて前記実行状態のタスクの仮想の経過時間を算出し、前記実行状態のタスクの時刻を前記仮想の経過時間が経過した時刻に更新する
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記ＣＰＵ割り当て部は、実行可能状態のタスクのうち実行状態にする新たなタスクを選択し、前記実行状態のタスクから前記新たなタスクに前記ＣＰＵを割り当て直し、
前記時刻制御部は、前記実行状態のタスクから前記新たなタスクに前記ＣＰＵが割り当て直されるときに、前記実行状態のタスクの時刻を更新する
ことを特徴とする請求項１から請求項３いずれかに記載の情報処理装置。
【請求項５】
前記時刻制御部は、前記実行状態のタスクが時刻を使用するときに、前記実行状態のタスクの時刻を更新する
ことを特徴とする請求項１から請求項４いずれかに記載の情報処理装置。
【請求項６】
前記時刻制御部は、待ち状態のタスクの動作状態が実行可能状態になるときに、前記待ち状態のタスクの時刻を更新する
ことを特徴とする請求項１から請求項５いずれかに記載の情報処理装置。
【請求項７】
前記タスクが仮想計算機であることを特徴とする請求項１から請求項６いずれかに記載の情報処理装置。
【請求項８】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、実行状態と実行可能状態と待ち状態とのいずれかの動作状態になる複数のタスクのタスク別に時刻を記憶する時刻情報記憶部と、ＣＰＵ割り当て部と、時刻制御部とを備える情報処理装置によって実行する時刻制御方法であって、
前記ＣＰＵ割り当て部が、実行可能状態のタスクのうち実行状態にするタスクを選択し、選択したタスクに前記ＣＰＵを割り当て、
前記時刻制御部が、前記ＣＰＵ割り当て部によって前記ＣＰＵが割り当てられた実行状態のタスクの時刻を更新して進め、実行可能状態のタスクの時刻を更新せずに停止し、待ち状態のタスクの時刻を更新して進める
ことを特徴とする時刻制御方法。
【請求項９】
請求項８記載の時刻制御方法をコンピュータに実行させるための時刻制御プログラム
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、仮想計算機の仮想時刻を制御する情報処理装置、時刻制御方法および時刻制御プログラムに関するものである。
【背景技術】
【０００２】
計算機内の時間の進行速度を実時間よりも速める時間進行制御方式が提案されている。この方式は、例えば１ヶ月分の時間経過に相当する試験を数日間で実施するために使用される。
従来の時間進行制御方式では、タイマからＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）へのタイマ割り込みの間隔を加速係数を用いて短縮し、さらに加速係数に応じた時刻の補正によって時間進行の加速を行っていた（例えば、特許文献１）。
【０００３】
また、１台の計算機上で複数のソフトウェアプラットフォームを動作させ、それぞれで時刻進行の加速を行う方法も提案されている（例えば、特許文献２）。
さらに、サービスプロセッサを備えた情報処理装置のハイパーバイザ上で、仮想計算機の時間進行の加速を行う方法も提案されている（例えば、特許文献３）。
【０００４】
また、仮想計算機を実行するための支援機能を備えたＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）として、例えばＩｎｔｅｌ  ＩＡ−３２ＣＰＵがある（「Ｉｎｔｅｌ」は登録商標）。
このＣＰＵには、各物理ＣＰＵへのタイマ割り込み機能（非特許文献１）、フリーランカウンタ機能（非特許文献２）、仮想化支援機能（非特許文献３）がある。
【０００５】
従来の時間進行制御方式は、他の仮想計算機にＣＰＵが割り当てられているときにも実行可能状態の仮想計算機の時間が進行してしまうため、実行可能状態の仮想計算機にＣＰＵが割り当てられた際に周期処理が予定時間内に完了しない、という課題がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０１−３０９１３６号公報
【特許文献２】特開平０９−１７１４５８号公報
【特許文献３】特開平１１−０１５５５８号公報
【非特許文献】
【０００７】
【非特許文献１】「Ｉｎｔｅｌ６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ」、「Ｖｏｌｕｍｅ  ３Ａ：  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ，Ｐａｒｔ  １」、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｍａｙ  ２０１１、「１０．５．４  ＡＰＩＣ  Ｔｉｍｅｒ」、［ｏｎｌｉｎｅ］、［２０１１年１１月２４日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｃｏｎｔｅｎｔ／ｄａｍ／ｄｏｃ／ｍａｎｕａｌ／６４−ｉａ−３２−ａｒｃｈｉｔｅｃｔｕｒｅｓ−ｓｏｆｔｗａｒｅ−ｄｅｖｅｌｏｐｅｒ−ｖｏｌ−３ａ−ｐａｒｔ−１−ｍａｎｕａｌ．ｐｄｆ＞
【非特許文献２】「Ｉｎｔｅｌ６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ」、「Ｖｏｌｕｍｅ  ３Ａ：  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ，Ｐａｒｔ  １」、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｍａｙ  ２０１１、「１６．２  ＴＩＭＥ−ＳＴＡＭＰ  ＣＯＵＮＴＥＲ」、［ｏｎｌｉｎｅ］、［２０１１年１１月２４日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｃｏｎｔｅｎｔ／ｄａｍ／ｄｏｃ／ｍａｎｕａｌ／６４−ｉａ−３２−ａｒｃｈｉｔｅｃｔｕｒｅｓ−ｓｏｆｔｗａｒｅ−ｄｅｖｅｌｏｐｅｒ−ｖｏｌ−３ａ−ｐａｒｔ−１−ｍａｎｕａｌ．ｐｄｆ＞
【非特許文献３】「Ｉｎｔｅｌ６４  ａｎｄ  ＩＡ−３２  Ａｒｃｈｉｔｅｃｔｕｒｅｓ  Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｅｒ’ｓ  Ｍａｎｕａｌ」、「Ｖｏｌｕｍｅ  ３Ｂ：  Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｇｕｉｄｅ，Ｐａｒｔ  ２」、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ、Ｍａｙ  ２０１１、「ＣＨＡＰＴＥＲ  ２１  ＶＩＲＴＵＡＬ−ＭＡＣＨＩＮＥ  ＣＯＮＴＲＯＬ  ＳＴＲＵＣＴＵＲＥＳ」、［ｏｎｌｉｎｅ］、［２０１１年１１月２４日検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｃｏｎｔｅｎｔ／ｄａｍ／ｄｏｃ／ｍａｎｕａｌ／６４−ｉａ−３２−ａｒｃｈｉｔｅｃｔｕｒｅｓ−ｓｏｆｔｗａｒｅ−ｄｅｖｅｌｏｐｅｒ−ｖｏｌ−３ｂ−ｐａｒｔ−２−ｍａｎｕａｌ．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、複数のタスク（例えば、仮想計算機）それぞれの時刻を適切に制御できるようにすることを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、
実行状態と実行可能状態と待ち状態とのいずれかの動作状態になる複数のタスクのタスク別に時刻を記憶する時刻情報記憶部と、
実行可能状態のタスクのうち実行状態にするタスクを選択し、選択したタスクに前記ＣＰＵを割り当てるＣＰＵ割り当て部と、
前記ＣＰＵ割り当て部によって前記ＣＰＵが割り当てられた実行状態のタスクの時刻を更新して進め、実行可能状態のタスクの時刻を更新せずに停止し、待ち状態のタスクの時刻を更新して進める時刻制御部とを備える。
【発明の効果】
【００１０】
本発明によれば、複数のタスク（例えば、仮想計算機）それぞれの時刻を適切に制御することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における物理計算機１００の構成図。
【図２】実施の形態１における仮想計算機管理データ１３０の内容を示す図。
【図３】実施の形態１における計算機切り替え処理を示すフローチャート。
【図４】実施の形態１におけるＣＰＵ割り当て処理（Ｓ２００）を示すフローチャート。
【図５】実施の形態１における実行計算機の仮想時刻算出処理を示すフローチャート。
【図６】実施の形態１における実行計算機のタイマ割り込み処理を示すフローチャート。
【図７】実施の形態１における待ち状態移行処理を示すフローチャート。
【図８】実施の形態１における待ち状態解除処理を示すフローチャート。
【図９】実施の形態１における仮想計算機１２０の状態遷移図。
【発明を実施するための形態】
【００１２】
実施の形態１．
仮想計算機（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）の時刻の進行速度を制御する形態について説明する。
【００１３】
図１は、実施の形態１における物理計算機１００の構成図である。
実施の形態１における物理計算機１００の構成について、図１に基づいて説明する。
【００１４】
物理計算機１００（情報処理装置の一例）は、仮想計算機を実行するコンピュータである。
【００１５】
物理計算機１００は、ＣＰＵ１０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、タイマ１０２、カウンタ１０３、コントローラ１０４、記憶装置１０９などのハードウェアを備える。
【００１６】
ＣＰＵ１０１は、ＯＳ（オペレーティングシステム）やプログラムを実行して物理計算機１００を機能させるハードウェアである。ＣＰＵ１０１は各種のレジスタを備える。また、ＣＰＵ１０１は仮想化支援機能を有する（例えば、非特許文献３を参照）。
実施の形態１において、ＣＰＵ１０１は、物理計算機１００を後述するＶＭモニタ部１１０として機能させるための仮想計算機制御プログラム（または時間制御プログラム）や、物理計算機１００を後述する仮想計算機１２０として機能させるための仮想計算機プログラムを実行する。ＶＭモニタ部１１０や仮想計算機１２０の処理や方法はＣＰＵ１０１を用いて実行される。仮想計算機制御プログラム（または時間制御プログラム）はＶＭモニタ部１１０の処理や方法を物理計算機１００に実行させ、仮想計算機プログラムは仮想計算機１２０の処理や方法を物理計算機１００に実行させる。
【００１７】
タイマ１０２は、所定時間が経過したときに割り込みを発生して所定時間の経過を通知するハードウェアである。
実施の形態１において、タイマ１０２には所定の通知周期が設定され、タイマ１０２は通知周期が経過する毎にタイマ割り込みを発生して通知周期の経過を通知する（例えば、非特許文献１を参照）。
【００１８】
カウンタ１０３は、時刻（または経過時間）を算出するためのハードウェアである。
実施の形態１において、カウンタ１０３は所定の周期でカウンタ値をカウントアップする（例えば、非特許文献２を参照）。
【００１９】
コントローラ１０４は、データの入出力を行うハードウェアである。コントローラ１０４はデータの入出力時に割り込みを発生させる。
ネットワーク（通信回線）を介して通信を行うネットワークコントローラや、ハードディスク装置に対してデータの読み書きを行うディスクコントローラは、コントローラ１０４の一例である。
【００２０】
記憶装置１０９（時刻情報記憶部の一例）は、データやプログラムを記憶するハードウェアである。
ＲＯＭやＲＡＭなどのメモリ、またはハードディスク装置やＣＤ−ＲＯＭ（またはＤＶＤ−ＲＯＭ）ドライブは、記憶装置１０９の一例である。
後述する仮想計算機管理データ１３０やスケジュールデータ１４０は、記憶装置１０９に記憶するデータの一例である。
ＯＳ、仮想計算機制御プログラム（または時間制御プログラム）および仮想計算機プログラムは、記憶装置１０９に記憶するプログラムの一例である（図示省略）。
【００２１】
物理計算機１００は、さらに、ＶＭモニタ部１１０と複数の仮想計算機１２０とを備える。仮想計算機１２０の数は２つであっても、３つであっても、または４つ以上であっても構わない。
【００２２】
ＶＭモニタ部１１０は、割り込み処理部１１１とカウンタ処理部１１２とスケジューリング部１１３とを備え、複数の仮想計算機１２０を制御する。
【００２３】
割り込み処理部１１１は、エミュレーション処理によって仮想計算機１２０の割り込みを制御する。例えば、割り込み処理部１１１は、仮想計算機１２０のタイマ（後述する仮想タイマ部１２５）またはコントローラ（後述する仮想コントローラ部１２７）の割り込みを制御する。
カウンタ処理部１１２（時刻制御部の一例）は、エミュレーション処理によって仮想計算機１２０のカウンタ（後述する仮想カウンタ部１２６）を制御する。
スケジューリング部１１３（ＣＰＵ割り当て部、時刻制御部の一例）は、スケジュールデータ１４０に設定されたスケジュールに従って各仮想計算機１２０にＣＰＵ１０１を割り当てる。スケジュールデータ１４０は、ＣＰＵ１０１を割り当てる仮想計算機１２０の順番やＣＰＵ１０１を割り当てる時間などをＣＰＵ１０１の割り当てスケジュールとして定義（設定）したデータである。実施の形態１において、スケジュールデータ１４０は各仮想計算機１２０の優先度を示し、スケジューリング部１１３はスケジュールデータ１４０に示された優先度の高い順に各仮想計算機１２０にＣＰＵ１０１を割り当てる。
【００２４】
仮想計算機１２０（タスクの一例）は、タスクまたはプロセスとして動作する仮想的な計算機である。
仮想計算機１２０は、ゲストＯＳ部１２１と仮想タイマ部１２５と仮想カウンタ部１２６と仮想コントローラ部１２７とを備える。
【００２５】
ゲストＯＳ部１２１は、仮想計算機１２０用のＯＳ（ゲストＯＳ）を実行する。
ゲストＯＳ部１２１は、情報処理部１２２と割り込み設定部１２３と時刻算出部１２４とを備える。
【００２６】
情報処理部１２２は、仮想計算機１２０用の所定の情報処理（例えば、所定時間が経過する毎に発生する周期処理）を実行する。
割り込み設定部１２３は、割り込みを発生させるまでの時間（割り込み時間）を仮想タイマ部１２５に設定する。
時刻算出部１２４は、仮想計算機１２０の内部時刻（仮想時刻）を算出する。
【００２７】
仮想タイマ部１２５は、仮想計算機１２０で使用する仮想的なタイマ１０２である。
仮想カウンタ部１２６は、仮想計算機１２０で使用する仮想的なカウンタ１０３である。
仮想コントローラ部１２７は、仮想計算機１２０で使用する仮想的なコントローラ１０４である。
【００２８】
実施の形態１において「〜部」または「仮想計算機」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」または「仮想計算機」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００２９】
図２は、実施の形態１における仮想計算機管理データ１３０の内容を示す図である。
実施の形態１における仮想計算機管理データ１３０について、図２に基づいて説明する。
【００３０】
仮想計算機管理データ１３０は仮想計算機１２０を管理するためのデータである。仮想計算機管理データ１３０は仮想計算機１２０と同じ数だけ存在する。仮想計算機１２０と仮想計算機管理データ１３０とは予め対応付けられているものとする。
【００３１】
仮想計算機管理データ１３０は、動作状態１３１と、コンテキスト１３２と、時間加速要否フラグ１３３と、時間加速倍率１３４と、仮想カウンタ値１３５と、物理カウンタオフセット値１３６と、割り込み発生回数１３７と、通知回数１３８とを含む。
【００３２】
動作状態１３１は、仮想計算機１２０の動作状態として「実行状態」「実行可能状態」または「待ち状態」を示す。
「実行状態」は、仮想計算機１２０にＣＰＵ１０１が割り当てられて仮想計算機１２０が動作している状態である。
「実行可能状態」は、仮想計算機１２０にＣＰＵ１０１が割り当てられてないため仮想計算機１２０が動作しておらず、ＣＰＵ１０１が割り当てられれば仮想計算機１２０が動作する状態である。
「待ち状態」は、仮想計算機１２０の動作が割り込み待ちによって中断し、ＣＰＵ１０１が奪われ（ＣＰＵ１０１の割り当てが解除され）、割り込みが発生するまでＣＰＵ１０１が割り当てられない状態である。
【００３３】
コンテキスト１３２は、ＣＰＵ１０１の割り当てが解除されたときの仮想計算機１２０の状態を保存または復元するためのデータである。例えば、コンテキスト１３２は、ＣＰＵ１０１内の各レジスタに記憶されたレジスタ値や、メモリ内の所定の記憶領域に記憶された制御データを含む。
【００３４】
時間加速要否フラグ１３３は、実時刻が進む速さに対して仮想計算機１２０の仮想時刻を進める速さを変更するか否かを示すフラグである。時間加速要否フラグ１３３の値が「時間加速要」である場合、仮想計算機１２０の仮想時刻は実時刻より速く（または遅く）進む。また、時間加速要否フラグ１３３の値が「時間加速不要」である場合、仮想計算機１２０の仮想時刻は実時刻と同じ速さで進む。
時間加速要否フラグ１３３は予め設定しておく。
【００３５】
時間加速倍率１３４（時刻速度の一例）は、実時刻が進む速さに対して仮想計算機１２０の仮想時刻を進める速さの倍率を示す。時間加速倍率１３４が「１．０」より大きければ、仮想計算機１２０の仮想時刻は実時刻より速く進み、時間加速倍率１３４が「１．０」より小さければ、仮想計算機１２０の仮想時刻は実時刻より遅く進む。例えば、時間加速倍率１３４が「２．０」であれば仮想時刻は実時刻の倍の速さで進む。つまり、実時刻が１分進んだ場合、仮想時刻は２分進む。また、時間加速倍率１３４が「０．５」であれば仮想時刻は実時刻の半分の速さで進む。つまり、実時刻が１分進んだ場合、仮想時刻は３０秒進む。
時間加速倍率１３４は、時間加速要否フラグ１３３に「時間加速要」が設定される場合に予め設定する。但し、時間加速要否フラグ１３３に「時間加速不要」が設定される場合、つまり、仮想計算機１２０の仮想時刻を実時刻と同じ速さで進める場合、時間加速倍率１３４に「１．０」を予め設定しても構わない。
時間加速倍率１３４の代わりに、単位時間当たりの仮想時刻の経過時間（例えば、実時間「１秒」当たりの仮想時刻の経過時間が「１０秒」）など、倍率以外の情報を使用しても構わない。
【００３６】
仮想カウンタ値１３５（時刻の一例）は、仮想計算機１２０の仮想時刻を表すカウンタ値である。
【００３７】
物理カウンタオフセット値１３６は、仮想カウンタ値１３５を前回更新したときのカウンタ１０３のカウンタ値（物理カウンタ値）を示す。
【００３８】
割り込み発生回数１３７（割り込み時間情報の一例）は、仮想計算機１２０にタイマ割り込みを発生させるためのタイマ１０２からの通知回数を示す。但し、割り込み発生回数１３７の代わりに、回数以外の情報（例えば、割り込み時間）を使用しても構わない。
【００３９】
通知回数１３８（経過時間情報の一例）は、タイマ１０２から所定の通知周期の経過を通知された通知回数を示す。但し、通知回数１３８の代わりに、回数以下の情報（例えば、経過時間）を使用しても構わない。
通知回数１３８の初期値は「０」であり、通知回数１３８はタイマ１０２から通知があるたびに「１」ずつ加算され、仮想計算機１２０にタイマ割り込みを発生させたときに「０」に初期化される。
【００４０】
図３は、実施の形態１における計算機切り替え処理を示すフローチャートである。
実施の形態１における計算機切り替え処理について、図３に基づいて説明する。
【００４１】
図３に示す実行計算機切り替え処理は、実行計算機に対してＣＰＵ１０１が割り当てられた時間が所定の割り当て時間を経過したときに、ＶＭモニタ部１１０のスケジューリング部１１３によって実行される。
実行計算機とは、ＣＰＵ１０１が割り当てられている実行状態の仮想計算機１２０である。
【００４２】
Ｓ１１０において、スケジューリング部１１３は、記憶装置１０９から実行計算機用の仮想計算機管理データ１３０を選択する。
スケジューリング部１１３は、実行計算機のコンテキスト１３２を実行計算機用の仮想計算機管理データ１３０に保存（設定）する。例えば、スケジューリング部１１３は、ＣＰＵ１０１内の各レジスタに記憶されているレジスタ値や、メモリ内の所定の記憶領域に記憶されている制御データを実行計算機のコンテキスト１３２として仮想計算機管理データ１３０に上書きする。
Ｓ１１０の後、Ｓ１２０に進む。
【００４３】
Ｓ１２０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０の動作状態１３１を「実行状態」から「実行可能状態」に変更する。
Ｓ１２０の後、Ｓ１３０に進む。
【００４４】
Ｓ１３０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ１４０に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ２００に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ１４０に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００４５】
Ｓ１４０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０から時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６とを取得し、カウンタ１０３から物理カウンタ値を取得する。
スケジューリング部１１３は、時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６と物理カウンタ値とに基づいて、実行計算機の新たな仮想カウンタ値を算出する。
スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０に設定されている仮想カウンタ値１３５を新たな仮想カウンタ値で更新する。
【００４６】
新たな仮想カウンタ値は、仮想カウンタ値１３５が表す仮想時刻から仮想経過時間だけ経過した時刻を表す。
仮想経過時間とは、物理カウンタオフセット値１３６が表す過去時刻から物理カウンタ値が表す現在時刻までの実経過時間を時間加速倍率１３４に応じて更新して得られる時間である。
新たな仮想カウンタ値を算出するための算出式は「新たな仮想カウンタ値＝仮想カウンタ値１３５＋（（物理カウンタ値−物理カウンタオフセット値１３６）×時間加速倍率１３４）」である。
Ｓ１４０の後、Ｓ２００へ進む。
【００４７】
Ｓ２００において、スケジューリング部１１３は、後述するＣＰＵ割り当て処理を実行することによって、いずれかの仮想計算機１２０にＣＰＵ１０１を割り当てる。
Ｓ２００により、実行計算機切り替え処理は終了する。
【００４８】
スケジューリング部１１３は、図３とは異なる処理順序でＳ１１０からＳ１４０の各処理を実行しても構わない。
【００４９】
図４は、実施の形態１におけるＣＰＵ割り当て処理（Ｓ２００）を示すフローチャートである。
実施の形態１におけるＣＰＵ割り当て処理（Ｓ２００）について、図４に基づいて説明する。
【００５０】
Ｓ２１０において、スケジューリング部１１３は、各仮想計算機１２０の仮想計算機管理データ１３０の動作状態１３１を参照して「実行可能状態」の仮想計算機１２０を判定する。以下、「実行可能状態」の仮想計算機１２０を「実行可能計算機」という。
スケジューリング部１１３は、スケジュールデータ１４０に基づいて次にＣＰＵ１０１を割り当てる実行可能計算機を選択する。例えば、スケジューリング部１１３は、最も優先度が高い実行可能計算機を選択する。
Ｓ２１０の後、Ｓ２２０に進む。
【００５１】
Ｓ２２０において、スケジューリング部１１３は、Ｓ２１０で選択した実行可能計算機の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ２３０に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ２４０に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ２３０に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００５２】
Ｓ２３０において、スケジューリング部１１３は、カウンタ１０３から物理カウンタ値を取得し、Ｓ２１０で選択した実行可能計算機の仮想計算機管理データ１３０の物理カウンタオフセット値１３６を物理カウンタ値で更新する。
Ｓ２３０の後、Ｓ２４０に進む。
【００５３】
Ｓ２４０において、スケジューリング部１１３は、Ｓ２１０で選択した実行可能計算機の仮想計算機管理データ１３０の動作状態１３１を「実行可能状態」から「実行状態」に変更する。
Ｓ２４０の後、Ｓ２５０に進む。
【００５４】
Ｓ２５０において、スケジューリング部１１３は、Ｓ２１０で選択した実行可能計算機の仮想計算機管理データ１３０からコンテキスト１３２を取得し、取得したコンテキスト１３２を用いて実行可能計算機の前回実行時の状態を復元する。
例えば、スケジューリング部１１３は、コンテキスト１３２に含まれる各レジスタ値をＣＰＵ１０１内の各レジスタに設定し、コンテキスト１３２に含まれる制御データをメモリ内の所定の記憶領域に設定する。
Ｓ２５０の後、Ｓ２６０に進む。
【００５５】
Ｓ２６０において、スケジューリング部１１３は、実行計算機からＳ２１０で選択した実行可能計算機にＣＰＵ１０１を割り当て直す。
ＣＰＵ１０１を割り当てられた実行可能計算機は新たな実行計算機として動作を再開し、ＣＰＵ１０１を奪われた実行計算機は実行可能計算機として待機する。
Ｓ２６０により、ＣＰＵ割り当て処理（Ｓ２００）は終了する。
【００５６】
スケジューリング部１１３は、図４とは異なる処理順序でＳ２２０からＳ２５０の各処理を実行しても構わない。
【００５７】
図５は、実施の形態１における実行計算機の仮想時刻算出処理を示すフローチャートである。
実施の形態１における実行計算機の仮想時刻算出処理について、図５に基づいて説明する。
【００５８】
実行計算機の情報処理部１２２は、仮想時刻を使用する情報処理が発生した場合に時刻算出部１２４を呼び出す。図５に示す仮想時刻算出処理は時刻算出部１２４が呼び出されたときに実行される。
【００５９】
Ｓ３１０において、実行計算機の時刻算出部１２４は仮想カウンタ部１２６を呼び出し、ＣＰＵ１０１は仮想化支援機能（例えば、非特許文献３を参照）によって仮想カウンタ部１２６の呼び出しを検出してＶＭモニタ部１１０のカウンタ処理部１１２を呼び出す。
Ｓ３１０の後、Ｓ３２０に進む。
【００６０】
Ｓ３２０において、カウンタ処理部１１２は、カウンタ１０３から物理カウンタ値を取得する。
Ｓ３２０の後、Ｓ３３０に進む。
【００６１】
Ｓ３３０において、カウンタ処理部１１２は、記憶装置１０９から実行計算機用の仮想計算機管理データ１３０を選択する。
カウンタ処理部１１２は、実行計算機用の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ３４０に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ３３１に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ３４０に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００６２】
Ｓ３３１において、カウンタ処理部１１２は、Ｓ３２０で取得した物理カウンタ値を新たな仮想カウンタ値として仮想カウンタ部１２６に設定する。
Ｓ３３１の後、Ｓ３７０に進む。
【００６３】
Ｓ３４０において、カウンタ処理部１１２は、実行計算機用の仮想計算機管理データ１３０から時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６とを取得する。
カウンタ処理部１１２は、時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６とＳ３２０で取得した物理カウンタ値とに基づいて、実行計算機の新たな仮想カウンタ値を算出する。実行計算機の新たな仮想カウンタ値の算出方法は図３のＳ１４０と同じである。
カウンタ処理部１１２は、実行計算機用の仮想計算機管理データ１３０に設定されている仮想カウンタ値１３５を新たな仮想カウンタ値で更新する。
Ｓ３４０の後、Ｓ３５０に進む。
【００６４】
Ｓ３５０において、カウンタ処理部１１２は、Ｓ３４０で算出した新たな仮想カウンタ値（仮想カウンタ値１３５）を仮想カウンタ部１２６に設定する。
Ｓ３５０の後、Ｓ３６０に進む。
【００６５】
Ｓ３６０において、カウンタ処理部１１２は、実行計算機用の仮想計算機管理データ１３０に設定されている物理カウンタオフセット値１３６をＳ３２０で取得した物理カウンタ値で更新する。
Ｓ３６０の後、Ｓ３７０に進む。
【００６６】
Ｓ３７０において、カウンタ処理部１１２から仮想カウンタ部１２６に処理が戻り、仮想カウンタ部１２６はＳ３３１またはＳ３６０で設定された新たな仮想カウンタ値を時刻算出部１２４に出力する。
時刻算出部１２４は、仮想カウンタ部１２６から新たな仮想カウンタ値を取得し、取得した新たな仮想カウンタ値を用いて仮想時刻を算出し、算出した仮想時刻を情報処理部１２２に出力する。但し、時刻算出部１２４は新たな仮想カウンタ値を情報処理部１２２に出力し、情報処理部１２２は新たな仮想カウンタ値を仮想時刻として使用してもよいし、新たな仮想カウンタ値を用いて仮想時刻を算出してもよい。カウンタ値を用いた時刻の算出方法は一般的な計算機と同じである。
情報処理部１２２は、時刻算出部１２４から出力された仮想時刻（または仮想カウンタ値）を用いて所定の情報処理を実行する。
Ｓ３７０により、仮想時刻算出処理は終了する。
【００６７】
カウンタ処理部１１２は、図５とは異なる処理順序でＳ３４０からＳ３６０の各処理を実行しても構わない。例えば、カウンタ処理部１１２は、Ｓ３４０またはＳ３５０を実行する前にＳ３６０を実行しても構わない。
【００６８】
図６は、実施の形態１における実行計算機のタイマ割り込み処理を示すフローチャートである。
実施の形態１における実行計算機のタイマ割り込み処理について、図６に基づいて説明する。
【００６９】
図６に示すタイマ割り込み処理は、実行計算機の情報処理部１２２がタイマ割り込みを発生させるために割り込み設定部１２３を呼び出した場合に実行される。
例えば、実行計算機の情報処理部１２２は、所定時間が経過する度に情報処理（周期処理）を実行するために所定時間を割り込み時間として指定して割り込み設定部１２３を呼び出す。
【００７０】
Ｓ４１０において、割り込み設定部１２３は、割り込み時間を指定して仮想タイマ部１２５を呼び出し、ＣＰＵ１０１は仮想化支援機能（例えば、非特許文献３を参照）によって仮想タイマ部１２５の呼び出しを検出してＶＭモニタ部１１０の割り込み処理部１１１を呼び出す。
Ｓ４１０の後、Ｓ４２０に進む。
【００７１】
Ｓ４２０において、割り込み処理部１１１は、記憶装置１０９から実行計算機用の仮想計算機管理データ１３０を選択する。
割り込み処理部１１１は、実行計算機用の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ４２２に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ４２１に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ４２２に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００７２】
Ｓ４２１において、割り込み処理部１１１は、割り込み時間とタイマ１０２の通知周期とに基づいて割り込み発生回数１３７を算出し、算出した割り込み発生回数１３７を実行計算機用の仮想計算機管理データ１３０に設定する。
タイマ１０２には通知周期が予め設定され、タイマ１０２は通知周期が経過する度に通知周期の経過を割り込み処理部１１１に通知するものとする。タイマ１０２の通知周期は十分に短い時間であり、割り込み時間はタイマ１０２の通知周期より長い。
割り込み発生回数１３７は、割り込み時間をタイマ１０２の通知周期で除算して得られる数である。例えば、割り込み時間が「６０秒」であり、タイマ１０２の通知周期が「０．１秒」である場合、割り込み発生回数１３７は「６００（＝６０／０．１）」である。
Ｓ４２１の後、Ｓ４３０に進む。
【００７３】
Ｓ４２２において、割り込み処理部１１１は、実行計算機用の仮想計算機管理データ１３０から時間加速倍率１３４を取得する。
割り込み処理部１１１は、割り込み時間と時間加速倍率１３４とタイマ１０２の通知周期とに基づいて割り込み発生回数１３７を算出し、算出した割り込み発生回数１３７を実行計算機用の仮想計算機管理データ１３０に設定する。
タイマ１０２には通知周期が予め設定され、タイマ１０２は通知周期が経過する度に通知周期の経過を割り込み処理部１１１に通知するものとする。タイマ１０２の通知周期は十分に短い時間であり、割り込み時間はタイマ１０２の通知周期より長い。
割り込み発生回数１３７は、時間加速倍率１３４に応じた割り込み時間（仮想の割り込み時間）をタイマ１０２の通知周期で除算して得られる数である。例えば、割り込み時間が「６０秒」であり、時間加速倍率１３４が「１０倍」であり、タイマ１０２の通知周期が「０．１秒」である場合、割り込み発生回数１３７は「６０（＝（６０／１０）／０．１）」である。
Ｓ４２２の後、Ｓ４３０に進む。
【００７４】
Ｓ４３０において、タイマ１０２は、前回の通知を行ってから新たに通知周期が経過したときに、通知周期の経過を通知するタイマ割り込みを発生させる。割り込み処理部１１１は、発生したタイマ割り込みを検出する。
Ｓ４３０の後、Ｓ４３１に進む。
【００７５】
Ｓ４３１において、割り込み処理部１１１は、実行計算機用の仮想計算機管理データ１３０の通知回数１３８に「１」を加算して通知回数１３８を更新する。通知回数１３８の初期値は「０」である。
割り込み処理部１１１は、更新後の通知回数１３８と割り込み発生回数１３７とを比較し、更新後の通知回数１３８が割り込み発生回数１３７に達したか否かを判定する。
更新後の通知回数１３８が割り込み発生回数１３７に達した場合（ＹＥＳ）、Ｓ４４０に進む。
更新後の通知回数１３８が割り込み発生回数１３７に達していない場合（ＮＯ）、Ｓ４３０に戻る。
【００７６】
Ｓ４４０において、割り込み処理部１１１は、実行計算機用の仮想計算機管理データ１３０の通知回数１３８を「０」に初期化し、仮想タイマ部１２５を呼び出す。
仮想タイマ部１２５は割り込み時間の経過を通知するタイマ割り込みを発生し、情報処理部１２２はタイマ割り込みを検出して情報処理（例えば、周期処理）を実行する。
タイマ割り込みを繰り返し発生させる場合（周期処理を実行する場合）、Ｓ４３０に戻る。但し、タイマ割り込みを繰り返し発生させる必要がない場合、タイマ割り込み処理は終了する。
【００７７】
図７は、実施の形態１における待ち状態移行処理を示すフローチャートである。
実施の形態１における待ち状態移行処理について、図７に基づいて説明する。
【００７８】
図７に示す待ち状態移行処理は、実行計算機が仮想コントローラ部１２７や仮想タイマ部１２５からの割り込み待ちの状態になったときに、ＶＭモニタ部１１０のスケジューリング部１１３によって実行される。例えば、ＶＭモニタ部１１０のスケジューリング部１１３は、実行計算機の情報処理部１２２によってＣＰＵ１０１のＨＬＴ命令（割り込みが発生するまでＣＰＵ１０１を停止させる命令）が実行されたときに、図７に示す待ち状態移行処理を実行する。
【００７９】
Ｓ５１０において、スケジューリング部１１３は、記憶装置１０９から実行計算機用の仮想計算機管理データ１３０を選択する。
スケジューリング部１１３は、実行計算機のコンテキスト１３２を実行計算機用の仮想計算機管理データ１３０に保存（設定）する。例えば、スケジューリング部１１３は、ＣＰＵ１０１内の各レジスタに記憶されているレジスタ値や、メモリ内の所定の記憶領域に記憶されている制御データを実行計算機のコンテキスト１３２として仮想計算機管理データ１３０に上書きする。
Ｓ５１０の後、Ｓ５２０に進む。
【００８０】
Ｓ５２０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０の動作状態１３１を「実行状態」から「待ち状態」に変更する。
Ｓ５２０の後、Ｓ５３０に進む。
【００８１】
Ｓ５３０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ５４０に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ２００に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ５４０に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００８２】
Ｓ５４０において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０から時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６とを取得し、カウンタ１０３から物理カウンタ値を取得する。
スケジューリング部１１３は、時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６と物理カウンタ値とに基づいて、実行計算機の新たな仮想カウンタ値を算出する。実行計算機の新たな仮想カウンタ値の算出方法は図３のＳ１４０と同じである。
スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０に設定されている仮想カウンタ値１３５を新たな仮想カウンタ値で更新する。
Ｓ５４０の後、Ｓ５４１に進む。
【００８３】
Ｓ５４１において、スケジューリング部１１３は、実行計算機用の仮想計算機管理データ１３０の物理カウンタオフセット値１３６を物理カウンタ値で更新する。
Ｓ５４１の後、Ｓ２００に進む。
【００８４】
Ｓ２００において、スケジューリング部１１３は、ＣＰＵ割り当て処理（図４参照）を実行することによって、いずれかの仮想計算機１２０にＣＰＵ１０１を割り当てる。
Ｓ２００により、待ち状態移行処理は終了する。
【００８５】
スケジューリング部１１３は、図７と異なる処理順序でＳ５１０からＳ５４１の各処理を実行しても構わない。
【００８６】
図８は、実施の形態１における待ち状態解除処理を示すフローチャートである。
実施の形態１における待ち状態解除処理について、図８に基づいて説明する。
【００８７】
図８に示す待ち状態解除処理は、待ち状態の仮想計算機１２０に対して仮想コントローラ部１２７や仮想タイマ部１２５から割り込みが発生したときに、ＶＭモニタ部１１０のスケジューリング部１１３によって実行される。例えば、ＶＭモニタ部１１０の割り込み処理部１１１は仮想コントローラ部１２７をエミュレートするコントローラ１０４や仮想タイマ部１２５をエミュレートするタイマ１０２からの割り込みを検出してスケジューリング部１１３を呼び出す。スケジューリング部１１３は割り込み処理部１１１から呼び出されたときに図８に示す待ち状態解除処理を実行する。
以下、待ち状態の仮想計算機１２０を「待ち計算機」という。割り込み処理部１１１は割り込みの情報に基づいて割り込みが発生した待ち計算機を判定し、判定した待ち計算機をスケジューリング部１１３に通知するものとする。
【００８８】
Ｓ６１０において、スケジューリング部１１３は、割り込みが発生した待ち計算機用の仮想計算機管理データ１３０を記憶装置１０９から選択する。
スケジューリング部１１３は、割り込みが発生した待ち計算機用の仮想計算機管理データ１３０の時間加速要否フラグ１３３を参照して時間加速（または時間減速）の要否を判定する。
時間加速要否フラグ１３３に「時間加速要」が設定されている場合、Ｓ６２０に進む。
時間加速要否フラグ１３３に「時間加速不要」が設定されている場合、Ｓ６３０に進む。但し、時間加速要否フラグ１３３のフラグ値に関わらず、Ｓ６２０に処理を進めてもよい。時間加速（または時間減速）が不要な場合の時間加速倍率１３４は「１．０」である。
【００８９】
Ｓ６２０において、スケジューリング部１１３は、割り込みが発生した待ち計算機用の仮想計算機管理データ１３０から時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６とを取得し、カウンタ１０３から物理カウンタ値を取得する。
スケジューリング部１１３は、時間加速倍率１３４と仮想カウンタ値１３５と物理カウンタオフセット値１３６と物理カウンタ値とに基づいて、割り込みが発生した待ち計算機の新たな仮想カウンタ値を算出する。新たな仮想カウンタ値の算出方法は図３のＳ１４０と同じである。
スケジューリング部１１３は、割り込みが発生した待ち計算機用の仮想計算機管理データ１３０に設定されている仮想カウンタ値１３５を新たな仮想カウンタ値で更新する。
Ｓ６２０の後、Ｓ６３０に進む。
【００９０】
Ｓ６３０において、スケジューリング部１１３は、割り込みが発生した待ち計算機用の仮想計算機管理データ１３０の動作状態１３１を「待ち状態」から「実行可能状態」に変更する。
Ｓ６３０により、待ち状態解除処理は終了する。
【００９１】
図９は、実施の形態１における仮想計算機１２０の状態遷移図である。
実施の形態１における仮想計算機１２０の状態遷移について、図９に基づいて説明する。
【００９２】
「実行状態」の仮想計算機１２０は、ＣＰＵ１０１の割り当て時間が終了したときに「実行可能状態」に遷移し、割り込み待ちになったときに「待ち状態」に遷移する。
「実行状態」の間、仮想計算機１２０の仮想時刻は時間加速倍率１３４が表す速さ、または実時刻と同じ速さで進む。
【００９３】
「実行可能状態」の仮想計算機１２０は、ＣＰＵ１０１が割り当てられたときに「実行状態」に遷移する。
「実行可能状態」の間、仮想計算機１２０の仮想時刻は停止する。
【００９４】
「待ち状態」の仮想計算機１２０は、割り込みが発生したときに「実行可能状態」に遷移する。
「待ち状態」の間、仮想計算機１２０の仮想時刻は時間加速倍率１３４が表す速さ、または実時刻と同じ速さで進む。
【００９５】
実施の形態１において、例えば、以下のような情報処理装置（物理計算機１００）について説明した。
時刻情報記憶部（記憶装置１０９）は、実行状態と実行可能状態と待ち状態とのいずれかの動作状態になる複数のタスク（仮想計算機１２０）のタスク別に時刻と時刻を進める速さを表す時刻速度（時間加速倍率１３４）とを記憶する。
ＣＰＵ割り当て部（スケジューリング部１１３）は、実行可能状態のタスクのうち実行状態にするタスクを選択し、選択したタスクにＣＰＵ１０１を割り当てる。
時刻制御部（スケジューリング部１１３）は、ＣＰＵ１０１が割り当てられている実行状態のタスクの時刻を実行状態のタスクの時刻速度で進めた時刻に更新する。時刻制御部は、実行可能状態のタスクの時刻を更新せずに停止する。時刻制御部は、待ち状態のタスクの時刻を待ち状態のタスクの時刻速度で進めた時刻に更新する。
【００９６】
実施の形態１において、情報処理装置（物理計算機１００）は、動作状態「実行状態」「実行可能状態」「待ち状態」に応じてタスク（仮想計算機１２０）の時刻を適切に制御することができる。
【符号の説明】
【００９７】
１００  物理計算機、１０１  ＣＰＵ、１０２  タイマ、１０３  カウンタ、１０４  コントローラ、１０９  記憶装置、１１０  ＶＭモニタ部、１１１  割り込み処理部、１１２  カウンタ処理部、１１３  スケジューリング部、１２０  仮想計算機、１２１  ゲストＯＳ部、１２２  情報処理部、１２３  割り込み設定部、１２４  時刻算出部、１２５  仮想タイマ部、１２６  仮想カウンタ部、１２７  仮想コントローラ部、１３０  仮想計算機管理データ、１３１  動作状態、１３２  コンテキスト、１３３  時間加速要否フラグ、１３４  時間加速倍率、１３５  仮想カウンタ値、１３６  物理カウンタオフセット値、１３７  割り込み発生回数、１３８  通知回数、１４０  スケジュールデータ。
【図１】
2013125336.tif 000003
【図２】
2013125336.tif 000004
【図３】
2013125336.tif 000005
【図４】
2013125336.tif 000006
【図５】
2013125336.tif 000007
【図６】
2013125336.tif 000008
【図７】
2013125336.tif 000009
【図８】
2013125336.tif 000010
【図９】
2013125336.tif 000011