(57)【特許請求の範囲】
【請求項１】
再起動される計算機において、
データが記憶される記憶領域を有するメモリと、
前記メモリが有する記憶領域に所定の予約サイズだけ連続する予約領域を確保することにより、データを記憶できる記憶領域を前記予約領域を除いた連続する残領域だけに制限する領域予約部と、
所定のプログラムを実行するためのプログラムデータを記憶する第１の記憶媒体から前記プログラムデータを読み出し、読み出したプログラムデータを前記残領域に記憶するプログラムロード部と、
前記プログラムロード部によって記憶されたプログラムデータに従って前記プログラムの初期化処理を実行するプログラム初期化部と、
前記プログラム初期化部が前記プログラムの初期化処理を完了したときに、前記残領域に記憶されている全てのデータをブートイメージとして第２の記憶媒体に保存するブートイメージ保存部と、
前記計算機が再起動された場合、前記第２の記憶媒体から前記ブートイメージを読み出し、読み出したブートイメージを前記残領域と同じ記憶領域に記憶するイメージロード部と、
前記イメージロード部によって記憶されたブートイメージを用いて前記プログラムを実行するプログラム実行部と
を備えたことを特徴とする計算機。
【請求項２】
前記計算機は、さらに、
前記プログラム初期化部が前記プログラムの初期化処理を完了したときに、前記領域予約部により確保された予約領域を解放する領域解放部を備え、
前記ブートイメージ保存部は、前記領域解放部により前記予約領域が解放されたときに前記ブートイメージを前記第２の記憶媒体に保存する
ことを特徴とする請求項１記載の計算機。
【請求項３】
前記計算機は、さらに、
前記所定の予約サイズと所定の最大サイズとを記憶する予約サイズ記憶部と、
前記プログラムロード部が前記プログラムデータを前記残領域に記憶するときと前記プログラム初期化部が前記プログラムの初期化処理を実行するときとの少なくともいずれかのときに前記残領域に空き領域が不足したか否かを判定する領域不足判定部と、
前記領域不足判定部によって前記残領域に空き領域が不足したと判定されなかった場合、前記最大サイズを前記予約サイズで更新し、前記予約サイズに所定の拡張サイズを加算して前記予約サイズを更新する予約サイズ更新部と、
前記領域不足判定部によって前記残領域に空き領域が不足したと判定されなかった場合、前記領域予約部によって確保された予約領域を解放する領域初期化部とを備え、
前記領域予約部は、前記領域初期化部によって前記予約領域が解放された場合、前記予約サイズ更新部によって更新された予約サイズだけ予約領域を確保し、
前記プログラムロード部は、前記領域予約部によって予約領域が確保された場合、前記予約領域を除いた残領域に前記プログラムデータを記憶し、
前記プログラム初期化部は、前記プログラムロード部によって前記プログラムデータが記憶された場合、記憶されたプログラムデータに従って前記プログラムの初期化処理を実行し、
前記領域不足判定部は、前記残領域に空き領域が不足したか否かを判定し、
前記予約サイズ更新部は、前記領域不足判定部によって前記残領域に空き領域が不足したと判定された場合、前記予約サイズ記憶部に記憶されている予約サイズと最大サイズとに基づいて前記予約サイズを前記最大サイズで更新し、
前記領域初期化部は、前記領域不足判定部によって前記残領域に空き領域が不足したと判定された場合、前記領域予約部によって確保された予約領域を解放し、
前記領域予約部は、前記領域初期化部によって前記予約領域が解放された場合、前記予約サイズ更新部によって更新された予約サイズだけ予約領域を確保し、
前記プログラムロード部は、前記領域予約部によって予約領域が確保された場合、前記予約領域を除いた残領域に前記プログラムデータを記憶し、
前記プログラム初期化部は、前記プログラムロード部によって前記プログラムデータが記憶された場合、記憶されたプログラムデータに従って前記プログラムの初期化処理を実行し、
前記ブートイメージ保存部は、前記プログラム初期化部が前記プログラムの初期化処理を完了したときに、前記残領域に記憶されている全てのデータをブートイメージとして第２の記憶媒体に保存する
ことを特徴とする請求項１または請求項２記載の計算機。
【請求項４】
前記計算機は、さらに、
前記メモリが有する記憶領域のうち所定の割当領域をバーチャルマシンに割り当てるバーチャルマシンモニタ部を備え、
前記領域予約部は、前記バーチャルマシンモニタ部により割り当てられた割当領域に所定の予約サイズだけ連続する予約領域を確保することにより、データを記憶できる記憶領域を前記予約領域を除いた連続する残領域だけに制限し、
前記イメージロード部は、前記バーチャルマシンが再起動された場合、前記第２の記憶媒体から前記ブートイメージを読み出し、読み出したブートイメージを前記残領域と同じ記憶領域に記憶する
ことを特徴とする請求項１から請求項３いずれかに記載の計算機。
【請求項５】
前記領域予約部と、前記プログラムロード部と、前記プログラム初期化部と、前記ブートイメージ保存部とを前記バーチャルマシンモニタ部が備えたことを特徴とする請求項４記載の計算機
【請求項６】
再起動される計算機の再起動方法において、
領域予約部が、メモリが有する記憶領域に所定の予約サイズだけ連続する予約領域を確保することにより、データを記憶できる記憶領域を前記予約領域を除いた連続する残領域だけに制限し、
プログラムロード部が、所定のプログラムを実行するためのプログラムデータを記憶する第１の記憶媒体から前記プログラムデータを読み出し、読み出したプログラムデータを前記残領域に記憶し、
プログラム初期化部が、前記プログラムロード部によって記憶されたプログラムデータに従って前記プログラムの初期化処理を実行し、
ブートイメージ保存部が、前記プログラム初期化部が前記プログラムの初期化処理を完了したときに、前記残領域に記憶されている全てのデータをブートイメージとして第２の記憶媒体に保存し、
イメージロード部が、前記計算機が再起動された場合、前記第２の記憶媒体から前記ブートイメージを読み出し、読み出したブートイメージを前記残領域と同じ記憶領域に記憶し、
プログラム実行部が、前記イメージロード部によって記憶されたブートイメージを用いて前記プログラムを実行する
ことを特徴とする計算機の再起動方法。
【請求項７】
メモリが有する記憶領域に所定の予約サイズだけ連続する予約領域を確保することにより、データを記憶できる記憶領域を前記予約領域を除いた連続する残領域だけに制限する領域予約処理と、
所定のプログラムを実行するためのプログラムデータを記憶する第１の記憶媒体から前記プログラムデータを読み出し、読み出したプログラムデータを前記残領域に記憶するプログラムロード処理と、
前記プログラムロード処理によって記憶されたプログラムデータに従って前記プログラムを初期化するプログラム初期化処理と、
前記プログラム初期化処理が完了したときに、前記残領域に記憶されている全てのデータをブートイメージとして第２の記憶媒体に保存するブートイメージ保存処理と、
計算機が再起動された場合、前記第２の記憶媒体から前記ブートイメージを読み出し、読み出したブートイメージを前記残領域と同じ記憶領域に記憶するイメージロード処理と、
前記イメージロード処理によって記憶されたブートイメージを用いて前記プログラムを実行するプログラム実行処理と
を前記計算機に実行させる再起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ブートイメージを用いて起動する計算機、バーチャルマシン稼働計算機、計算機の再起動方法および再起動プログラムに関するものである。
【背景技術】
【０００２】
高機能化した組込み機器は大量のメモリを搭載し、ＯＳ（オペレーティングシステム）上で多数のアプリケーションを動作する。
そのため、アプリケーションの初期化処理に要する時間が増加し、組込み機器が起動するまでに長い時間がかかってしまう。
【０００３】
このような課題を解決する起動方式として、ＯＳとアプリケーションとが起動完了した後のメモリイメージをブートイメージとして保存し、このブートイメージを使って起動する方式が提案されている。
この方式は、ハイバネーションブートと呼ばれる技術を応用したものである。ハイバネーションブートとは、計算機の電源をオフにして作業中の処理を一時的に中断するためにメモリイメージを保存し、計算機の電源をオンにしたときにメモリイメージをロードして電源オフ前の状態に復帰する技術である。
【０００４】
このような起動方式により高速に起動するためには、メモリイメージのサイズ削減が重要となる。
【０００５】
特許文献１や特許文献２は、メモリイメージのサイズ削減に関する技術を提案している。
特許文献１が提案する技術は、メモリの使用領域と未使用領域とを判別し、使用領域のみをメモリイメージとして保存する方式である。
特許文献２が提案する技術は、物理メモリの割当領域を再配置した後に、使用領域のみをメモリイメージとして保存する方式である。
但し、これらの方式は初期起動を高速化する方式として提案されているものではない。
【０００６】
また、特許文献１の方式や特許文献２の方式には以下のような課題がある。
特許文献１の方式では、メモリの使用領域と未使用領域とが細かく分断された場合、分断された使用領域毎にメモリイメージが保存される。そして、起動時には、メモリイメージ毎にアドレスを特定し、特定したアドレスに対応する記憶領域に各メモリイメージをロードする必要がある。このため、起動処理に長い時間を要し、高速に起動することができない。
特許文献２の方式は、物理メモリの再配置を行うため、ＯＳの仮想記憶管理構造に強く依存する。さらに、複雑な実装が必要であり、長い処理時間を要し、障害が発生しやすい。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平０９−３１９６６７号公報
【特許文献２】特開平１０−３３３９９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、例えば、計算機（例えば、組込み機器）を高速に起動できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の計算機は、
データが記憶される記憶領域を有するメモリと、
前記メモリが有する記憶領域に所定の予約サイズだけ連続する予約領域を確保することにより、データを記憶できる記憶領域を前記予約領域を除いた連続する残領域だけに制限する領域予約部と、
所定のプログラムを実行するためのプログラムデータを記憶する第１の記憶媒体から前記プログラムデータを読み出し、読み出したプログラムデータを前記残領域に記憶するプログラムロード部と、
前記プログラムロード部によって記憶されたプログラムデータに従って前記プログラムの初期化処理を実行するプログラム初期化部と、
前記プログラム初期化部が前記プログラムの初期化処理を完了したときに、前記残領域に記憶されている全てのデータをブートイメージとして第２の記憶媒体に保存するブートイメージ保存部と、
前記計算機が再起動された場合、前記第２の記憶媒体から前記ブートイメージを読み出し、読み出したブートイメージを前記残領域と同じ記憶領域に記憶するイメージロード部と、
前記イメージロード部によって記憶されたブートイメージを用いて前記プログラムを実行するプログラム実行部とを備える。
【発明の効果】
【００１０】
本発明によれば、例えば、ブートイメージのサイズを小さくしてブートイメージのロード時間を短縮することにより、計算機（例えば、組込み機器）を高速に起動することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における情報システム１００のハードウェア構成図。
【図２】実施の形態１における情報システム１００の機能構成図。
【図３】実施の形態１における情報システム１００の高速起動方法を示すフローチャート。
【図４】実施の形態１におけるブートイメージ作成処理（Ｓ１００）のフローチャート。
【図５】実施の形態１におけるブートイメージ作成処理（Ｓ１００）の概要図。
【図６】実施の形態１におけるブートイメージ作成処理（Ｓ１００）の概要図。
【図７】実施の形態１における高速起動処理（Ｓ２００）のフローチャート。
【図８】実施の形態１におけるブートイメージロード処理（Ｓ２１０）の概要図。
【図９】従来のブートイメージの一例を示す図。
【図１０】実施の形態２における情報システム１００の機能構成図。
【図１１】実施の形態２におけるブートイメージ作成処理（Ｓ１００）のフローチャート。
【図１２】実施の形態２におけるメモリ不足判定処理（Ｓ１９１）のフローチャート。
【図１３】実施の形態３における情報システム１００の機能構成図。
【図１４】実施の形態３におけるバーチャルマシン部２００の機能構成図。
【図１５】実施の形態４における情報システム１００の機能構成図。
【図１６】実施の形態４におけるバーチャルマシン部２００の機能構成図。
【図１７】実施の形態４における高速起動方法を示すフローチャート。
【図１８】実施の形態４におけるブートイメージ作成処理（Ｓ１００Ｂ）のフローチャート。
【発明を実施するための形態】
【００１２】
実施の形態１．
高速に起動するためのブートイメージを生成し、生成したブートイメージを用いて高速に起動する計算機について説明する。
【００１３】
図１は、実施の形態１における情報システム１００のハードウェア構成図である。
実施の形態１における情報システム１００のハードウェア構成について、図１に基づいて説明する。
【００１４】
情報システム１００は、コンピュータ、組込み機器、演算装置などの計算機を意味する。
【００１５】
情報システム１００は、ＣＰＵ１０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ブリッジ１０２、主メモリ１０３、ＩＯデバイス１０４（ＩＯ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）、通常起動用メモリ１０５、高速起動用メモリ１０６およびＲＯＭ１０７（リードオンリーメモリ）を備える。
【００１６】
ＣＰＵ１０１は、ブリッジ１０２およびバス１０２を介して主メモリ１０３、ＩＯデバイス１０４、通常起動用メモリ１０５、高速起動用メモリ１０６またはＲＯＭ１０７を制御する。
ＣＰＵ１０１は、単一のＣＰＵコアを内蔵したチップによって構成されても、複数のＣＰＵコアを内蔵したチップ（マルチコアＣＰＵ）で構成されても構わない。また、情報システム１００は、複数のＣＰＵ１０１を備えても構わない。
さらに、ＣＰＵ１０１は、ブリッジ１０２や各メモリを内蔵しても構わない。
【００１７】
ＩＯデバイス１０４は、情報システム１００の入出力を制御する。
【００１８】
主メモリ１０３は揮発性メモリまたは不揮発性メモリである。ＲＡＭ（ランダムアクセスメモリ）は主メモリ１０３の一例である。
通常起動用メモリ１０５、高速起動用メモリ１０６およびＲＯＭ１０７は不揮発性メモリである。
【００１９】
通常起動用メモリ１０５（第１の記憶媒体の一例）には、ＯＳデータ１９１や複数のアプリデータ１９２（プログラムデータの一例）が予め記憶される。
ＯＳデータ１９１とは、ＯＳ（オペレーティングシステム）と呼ばれるプログラムやＯＳで使用する各種データを含んだデータである。
アプリデータ１９２とは、アプリケーションプログラムやアプリケーションプログラムで使用する各種データを含んだデータである。以下、アプリケーションプログラムを「アプリ」という。
【００２０】
ＯＳデータ１９１やアプリデータ１９２はブートイメージ１９９を生成する際に主メモリ１０３（メモリの一例）にロードされ、ＣＰＵ１０１により主メモリ１０３から読み出されて実行される。
【００２１】
高速起動用メモリ１０６（第２の記憶媒体の一例）には、生成されたブートイメージ１９９が保存される。
ブートイメージ１９９は情報システム１００の高速起動時に主メモリ１０３にロードされ、ＣＰＵ１０１により主メモリ１０３から読み出されて実行される。
ブートイメージ１９９については後述する。
【００２２】
ＲＯＭ１０７には、ブートローダ１９０と呼ばれるプログラムが予め記憶される。
ブートローダ１９０は、情報システム１００の起動時にＣＰＵ１０１により読み出されて実行される。
【００２３】
後述する「〜部」として説明する機能は、ＯＳまたはブートローダ１９０の一部としてＣＰＵ１０１により実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００２４】
実施の形態において構成図またはフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００２５】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００２６】
図２は、実施の形態１における情報システム１００の機能構成図である。
実施の形態１における情報システム１００の機能構成について、図２に基づいて説明する。
【００２７】
情報システム１００は、ＯＳ部１１０とブートローダ部１２０とを備える。
【００２８】
情報システム１００が起動された際、主メモリ１０３（予約サイズ記憶部の一例）にはＯＳデータ１９１やアプリデータ１９２（図示省略）の他に、メモリ管理テーブル１９３や予約パラメータ１９４が記憶される。メモリ管理テーブル１９３および予約パラメータ１９４については後述する。
【００２９】
ＯＳ部１１０はＣＰＵ１０１（図１参照）を用いてＯＳを実行し、ブートローダ部１２０はＣＰＵ１０１を用いてブートローダ１９０を実行する。
【００３０】
ＯＳ部１１０は、予約パラメータ指定部１１１、メモリ領域予約部１１２、アプリ起動部１１３、メモリ領域解放部１１４、ブートイメージ保存部１１５、アプリ実行部１１６およびＯＳ制御部１１９を備える。
【００３１】
ブートローダ部１２０は、ブートイメージロード部１２１とブート制御部１２９とを備える。
【００３２】
予約パラメータ指定部１１１は、情報システム１００が起動された際に予約サイズを含んだ予約パラメータ１９４を主メモリ１０３に記憶する。
【００３３】
メモリ領域予約部１１２（領域予約部の一例）は、主メモリ１０３が有する記憶領域に予約パラメータ１９４で指定された予約サイズだけ連続する予約領域を確保する。これにより、メモリ領域予約部１１２は、データを記憶できる記憶領域を予約領域を除いた連続する残領域（後述する起動領域）だけに制限する。
【００３４】
アプリ起動部１１３（プログラムロード部、プログラム初期化部の一例）は、通常起動用メモリ１０５からアプリデータ１９２を読み出し、読み出したアプリデータ１９２を残領域に記憶する。
アプリ起動部１１３は、残領域に記憶したアプリデータに従ってアプリの初期化処理を実行する。
【００３５】
メモリ領域解放部１１４（領域解放部の一例）は、アプリ起動部１１３がアプリの初期化処理を完了したときに、メモリ領域予約部１１２により確保された予約領域を解放する。
【００３６】
ブートイメージ保存部１１５は、アプリ起動部１１３がアプリの初期化処理を完了したときに、残領域に記憶されている全てのデータ（後述するメモリイメージ）をブートイメージ１９９として高速起動用メモリ１０６に保存する。
例えば、ブートイメージ保存部１１５は、メモリ領域解放部１１４により予約領域が解放されたときにブートイメージ１９９を高速起動用メモリ１０６に保存する。
【００３７】
ＯＳ制御部１１９は、ＯＳの初期化処理や情報システム１００の停止処理を行う。
【００３８】
ブート制御部１２９は、ＯＳデータ１９１をロードしてＯＳ部１１０の実行を開始する。
【００３９】
ブートイメージロード部１２１（イメージロード部の一例）は、情報システム１００が再起動された場合、高速起動用メモリ１０６からブートイメージ１９９を読み出し、読み出したブートイメージ１９９を残領域と同じ記憶領域に記憶する。
【００４０】
アプリ実行部１１６（プログラム実行部の一例）は、ブートイメージロード部１２１によって記憶されたブートイメージ１９９を用いてアプリを実行する。
【００４１】
図３は、実施の形態１における情報システム１００の高速起動方法を示すフローチャートである。
実施の形態１における情報システム１００の高速起動方法（計算機の再起動方法の一例）について、図３に基づいて説明する。
【００４２】
Ｓ１００において、ＯＳ部１１０はブートイメージ１９９を作成する。ブートイメージ作成処理（Ｓ１００）の詳細については別途説明する。
【００４３】
以後、情報システム１００を再起動する毎に、Ｓ２００からＳ４００を実行する。
【００４４】
Ｓ２００において、ブートローダ部１２０は、ブートイメージ１９９を主メモリ１０３にロードすることにより情報システム１００を起動する。高速起動処理（Ｓ２００）の詳細については別途説明する。
Ｓ２００の後、Ｓ３００に進む。
【００４５】
Ｓ３００において、ＯＳ部１１０のアプリ実行部１１６は、ブートイメージ１９９に含まれるアプリデータに従ってアプリを実行する。
Ｓ３００の後、Ｓ４００に進む。
【００４６】
Ｓ４００において、ＯＳ部１１０のＯＳ制御部１１９は、所定の停止処理を実行して情報システム１００を停止する。
【００４７】
図４は、実施の形態１におけるブートイメージ作成処理（Ｓ１００）のフローチャートである。
実施の形態１におけるブートイメージ作成処理（図３のＳ１００）について、図４に基づいて説明する。
【００４８】
まず、ブートイメージ作成処理（Ｓ１００）の概要について説明する。
【００４９】
ブート制御部１２９は、ＯＳデータ１９１を主メモリ１０３にロードする（Ｓ１１０）。
予約パラメータ指定部１１１は予約パラメータ１９４を主メモリ１０３にロードし（Ｓ１２０）、メモリ領域予約部１１２は予約パラメータ１９４に基づいて予約領域を主メモリ１０３に確保する（Ｓ１３０）。
ＯＳ制御部１１９はＯＳを初期化する（Ｓ１４０）。
アプリ起動部１１３はアプリデータ１９２を主メモリ１０３にロードし（Ｓ１５０）、アプリを初期化する（Ｓ１６０）。
メモリ領域解放部１１４は予約領域を解放する（Ｓ１７０）。
ブートイメージ保存部１１５は、メモリイメージをブートイメージ１９９として保存する（Ｓ１８０）。
【００５０】
図５、図６は、実施の形態１におけるブートイメージ作成処理（Ｓ１００）の概要図である。
図４に示すブートイメージ作成処理（Ｓ１００）の概要について、図５および図６に基づいて説明する。
【００５１】
図５、６において、「ＯＳ」はＯＳ用に確保された記憶領域（以下、「ＯＳ領域」という）を示し、「パラメータ」は予約パラメータ１９４が記憶された記憶領域を示し、「メモリ管理テーブル」はメモリ管理テーブル１９３が記憶された記憶領域を示す。「パラメータ」および「メモリ管理テーブル」はＯＳ領域に含まれるが、「ＯＳ」と区別して記載した。
また、「アプリ＃ｎ」はアプリ＃ｎ用に確保された記憶領域（以下、「アプリ領域」という）を示す。
【００５２】
Ｓ１３０の終了時とＳ１６０の終了時とＳ１７０の終了時とのそれぞれの主メモリ１０３の状態を図５に示す。
主メモリ１０３に予約領域１０３ｂが確保された後（Ｓ１３０）、起動領域１０３ａを用いてＯＳの初期化処理（Ｓ１４０）とアプリの初期化処理（Ｓ１６０）とが行われ、その後、予約領域１０３ｂが解放される（Ｓ１７０）。
起動領域１０３ａとは、主メモリ１０３の記憶領域のうち予約領域１０３ｂを除いた残りの記憶領域のことである。通常、起動領域１０３ａは主メモリ１０３の記憶領域の先頭部分に確保され、予約領域１０３ｂは主メモリ１０３の記憶領域の最終部分に確保される。
【００５３】
Ｓ１７０の終了時の主メモリ１０３と、Ｓ１８０で高速起動用メモリ１０６に保存されるブートイメージ１９９との関係を図６に示す。
予約領域１０３ｂが解放された後（Ｓ１７０）、起動領域１０３ａのメモリイメージがブートイメージ１９９として高速起動用メモリ１０６に保存される（Ｓ１８０）。
起動領域１０３ａのメモリイメージとは、起動領域１０３ａ（使用領域および空き領域）の全体をコピーしたデータである。起動領域１０３ａのメモリイメージには、起動領域１０３ａに記憶されている各データが起動領域１０３ａ内と同じデータ位置（相対位置）に含まれる。
【００５４】
次に、図４に戻り、ブートイメージ作成処理（Ｓ１００）の詳細について説明する。
【００５５】
Ｓ１１０において、ブート制御部１２９は、通常起動用メモリ１０５からＯＳデータ１９１を読み出し、読み出したＯＳデータ１９１を主メモリ１０３に記憶する（図５内の左図「ＯＳ」「パラメータ」「メモリ管理テーブル」）。
ＯＳデータ１９１には主メモリ１０３の使用領域、空き領域および予約領域を管理するためのメモリ管理テーブル１９３が含まれる。メモリ管理テーブル１９３には、未使用の記憶領域（空き領域）であることを示すフラグ値「０」が初期値として記憶領域のアドレスに対応付けて設定されている。また、ＯＳデータ１９１には予約パラメータ１９４が設定されるパラメータデータが含まれる。
ＯＳデータ１９１が主メモリ１０３に記憶されることによりＯＳ部１１０の実行が開始される。つまり、ＯＳの実行が開始される。
また、ＯＳ制御部１１９は、使用中の記憶領域（使用領域）であることを示すフラグ値「１」をＯＳデータ１９１の記憶領域を示すアドレスに対応付けて、メモリ管理テーブル１９３に設定する。
また、ＯＳリジューム処理やＩＯデバイス１０４の起動処理が行われる（後述する図７のＳ２２０、Ｓ２３０を参照のこと）。
Ｓ１１０の後、Ｓ１２０に進む。
【００５６】
Ｓ１２０において、予約パラメータ指定部１１１は予約パラメータ１９４を含んだＯＳブートパラメータを取得し、取得したＯＳブートパラメータに含まれる予約パラメータ１９４を主メモリ１０３に記憶する。
ＯＳブートパラメータは、情報システム１００が起動される際に情報システム１００の利用者によって指定される。例えば、ＯＳブートパラメータは、ＯＳ１９１を起動するためのＯＳブート引数、またはＯＳ１９１の構成情報を指定するためのコンフィグレーションパラメータとして指定される。
予約パラメータ１９４は、主メモリ１０３に確保する予約領域１０３ｂの開始アドレスと予約サイズとの組からなる。
Ｓ１２０の後、Ｓ１３０に進む。
【００５７】
Ｓ１３０において、メモリ領域予約部１１２は主メモリ１０３に記憶された予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて予約領域１０３ｂを主メモリ１０３に確保する（図５参照）。以後、予約領域１０３ｂは解放されるまで使用することができない。
予約領域１０３ｂの確保はメモリ管理テーブル１９３を更新することにより行われる。つまり、メモリ領域予約部１１２は、予約パラメータ１９４に指定された開始アドレスから予約パラメータ１９４に指定された予約サイズだけ連続する記憶領域を予約領域１０３ｂとしてメモリ管理テーブル１９３に設定する。例えば、メモリ領域予約部１１２は、予約領域１０３ｂであることを示すフラグ値「２」を予約領域１０３ｂを示すアドレスに対応付けてメモリ管理テーブル１９３に設定する。
Ｓ１３０の後、Ｓ１４０に進む。
【００５８】
Ｓ１４０において、ＯＳ制御部１１９は、主メモリ１０３に記憶されたＯＳデータ１９１に従って、起動領域１０３ａを用いてＯＳの従来の初期化処理を行う。起動領域１０３ａとは、主メモリ１０３の記憶領域のうち予約領域１０３ｂを除いた残りの記憶領域のことである（図３参照）。
ＯＳの初期化処理では、ＯＳを実行するための各種データを記憶するためにＯＳ用の記憶領域（ＯＳ領域）が起動領域１０３ａに確保され、また不要になった記憶領域が解放される。ＯＳ制御部１１９は記憶領域の確保または解放に応じてメモリ管理テーブル１９３の設定を行う。
Ｓ１４０の後、Ｓ１５０に進む。
【００５９】
Ｓ１５０において、アプリ起動部１１３は、アプリデータ１９２を通常起動用メモリ１０５から読み出し、読み出したアプリデータ１９２を主メモリ１０３の起動領域１０３ａに記憶する。アプリ起動部１１３は、アプリデータ１９２を記憶した記憶領域を使用領域としてメモリ管理テーブル１９３の設定を行う。
Ｓ１５０の後、Ｓ１６０に進む。
【００６０】
Ｓ１６０において、アプリ起動部１１３は、主メモリ１０３に記憶したアプリデータ１９２に従って、起動領域１０３ａを用いて各アプリの従来の初期化処理を行う。
アプリの初期化処理では、アプリを実行するための各種データを記憶するためにアプリ用の記憶領域（アプリ領域）が起動領域１０３ａに確保され、また不要になった記憶領域が解放される。アプリ起動部１１３は記憶領域の確保または解放に応じてメモリ管理テーブル１９３の設定を行う。
Ｓ１６０により各アプリを実行することが可能な状態になる。通常、アプリ（特に、ＯＳと共に実行を開始するスタートアッププログラム）を実行することが可能な状態になるまでの処理（Ｓ１１０〜Ｓ１６０）を情報システム１００の起動処理という。
Ｓ１６０の後、Ｓ１７０に進む。
【００６１】
Ｓ１７０において、メモリ領域解放部１１４は、主メモリ１０３に記憶された予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて予約領域１０３ｂを解放する。以後、予約領域１０３ｂであった記憶領域を使用することが可能である。
つまり、メモリ領域解放部１１４は、空き領域を示すフラグ値「０」を予約領域１０３ｂのアドレスに対応付けてメモリ管理テーブル１９３に設定する。
Ｓ１７０の後、Ｓ１８０に進む。
【００６２】
Ｓ１８０において、ブートイメージ保存部１１５は、主メモリ１０３に記憶された予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて起動領域１０３ａのメモリイメージをブートイメージ１９９として高速起動用メモリ１０６に保存する。
Ｓ１８０により、ブートイメージ作成処理（Ｓ１００）は終了する。
【００６３】
図７は、実施の形態１における高速起動処理（Ｓ２００）のフローチャートである。
実施の形態１における高速起動処理（図３のＳ２００）について、図７に基づいて説明する。
【００６４】
Ｓ２１０において、ブートイメージロード部１２１は、高速起動用メモリ１０６からブートイメージ１９９を読み出し、読み出したブートイメージ１９９を主メモリ１０３に記憶する。
これにより、各アプリを実行することが可能な状態になる。
Ｓ２１０の後、Ｓ２２０に進む。
【００６５】
Ｓ２２０において、ブート制御部１２９は、従来のＯＳリジューム処理を実行してＯＳ部１１０に制御を移す。ＯＳリジューム処理では、例えば、ＯＳの制御データがＣＰＵ１０１の制御レジスタに設定（復元）される。
Ｓ２２０の後、Ｓ２３０に進む。
【００６６】
Ｓ２３０において、ＯＳ制御部１１９は、Ｉ／Ｏドライバとして機能し、ＣＰＵ１０１のＩ／Ｏレジスタの初期設定を行う。そして、ＩＯデバイス１０４の実行が開始される。
これにより、情報システム１００の状態は、ブートイメージ１９９を保存したときと同じ状態に戻る。
Ｓ２３０により、高速起動処理（Ｓ２００）は終了する。
【００６７】
図８は、実施の形態１におけるブートイメージロード処理（Ｓ２１０）の概要図である。
実施の形態１におけるブートイメージロード処理（図７のＳ２１０）の概要について、図８に基づいて説明する。
【００６８】
ブートイメージロード処理（図７のＳ２１０）により、ブートイメージ１９９は高速起動用メモリ１０６から読み出され、主メモリ１０３の記憶領域の先頭部分に記憶される。つまり、ブートイメージ１９９は、主メモリ１０３の起動領域１０３ａ（図６参照）と同じ記憶領域に記憶される。
【００６９】
実施の形態１において、例えば、以下のような情報システム１００について説明した。
情報システム１００は、ＯＳとアプリケーションとの起動が完了した後のメモリイメージを不揮発メモリ（高速起動用メモリ１０６）に保存し、このメモリイメージをブートイメージとして起動する。
情報システム１００は、ブートイメージを作成するためにメモリ領域予約部１１２、メモリ領域解放部１１４、予約パラメータ指定部１１１および予約パラメータ１９４を備える。
メモリ領域予約部１１２は、物理メモリ領域（主メモリ１０３）の一部を予約し、ＯＳがその領域を他に割り当てることを禁止する。
メモリ領域解放部１１４は、予約された物理メモリ領域を解放し、ＯＳがその領域を未使用メモリとして必要な処理に割り当てることを可能にする。
予約パラメータ指定部１１１は、予約する物理メモリ領域のサイズ（予約サイズ）やアドレス情報（開始アドレス）をＯＳのブート時にパラメータ（予約パラメータ１９４）として記憶する。
【００７０】
予め物理メモリの一部（予約領域）を予約することにより、使用中の物理メモリを集約することができる。
集約した使用中の物理メモリだけをブートイメージとして保存することにより、ブートイメージを保存する不揮発メモリ（高速起動用メモリ１０６）のサイズを削減することができる。つまり、不揮発メモリの記憶容量は小さくても構わないため、情報システム１００の小型化および低価格化という効果を奏することができる。
さらに、ブートイメージが小さいため、不揮発メモリから主メモリへのブートイメージの転送が早く終了し、情報システム１００を短い時間で起動することができる。
【００７１】
図９は、従来のブートイメージの一例を示す図である。
図９に示すように、従来は、予約領域（図５参照）が無いため、主メモリ全体を利用してＯＳおよびアプリが初期化され、主メモリ全体をブートイメージとして保存する必要があった。
一方、実施の形態（図５、図６参照）では、予約領域が有るため、主メモリのうち予約領域を除いた残りの記憶領域（起動領域）を利用してＯＳおよびアプリを初期化し、この残りの記憶領域だけをブートイメージとして保存することができる。
【００７２】
また、実施の形態では、ブートイメージ作成時に、物理メモリの使用領域と未使用領域との判定（特許文献１参照）や、物理メモリの再配置処理（特許文献２参照）のような複雑な処理を行う必要がない。このため、ＯＳの変更を最小限に抑えることができる。また、従来と同様の起動処理（ブートイメージの記憶）で情報システム１００を高速起動することができる。
【００７３】
実施の形態２．
ブートイメージを生成するための最適な予約サイズを判定する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００７４】
図１０は、実施の形態２における情報システム１００の機能構成図である。
実施の形態２における情報システム１００の機能構成について、図１０に基づいて説明する。
【００７５】
主メモリ１０３には、予約領域の最大値（予約最大値１９５）を設定する変数を記憶する。この変数は、予約パラメータ１９４に含んでも、予約パラメータ１９４とは別に設けてもどちらでも構わない。
【００７６】
ＯＳ部１１０は、実施の形態１の構成（図２参照）に加えて、メモリ不足検出部１１７と予約パラメータ更新部１１８とを備える。
【００７７】
メモリ不足検出部１１７（領域不足判定部の一例）は、アプリ起動部１１３がアプリデータ１９２を残領域（起動領域）に記憶するときとアプリ起動部１１３がアプリの初期化処理を実行するときとの少なくともいずれかのときに残領域に空き領域が不足したか否かを判定する。
【００７８】
予約パラメータ更新部１１８（予約サイズ更新部の一例）は、メモリ不足検出部１１７によって残領域に空き領域が不足したと判定されなかった場合、予約最大値１９５（最大サイズ）を予約サイズで更新し、予約サイズに所定の拡張サイズを加算して予約サイズを更新する。
【００７９】
ＯＳ制御部１１９（領域初期化部の一例）は、メモリ不足検出部１１７によって残領域に空き領域が不足したと判定されなかった場合、メモリ領域予約部１１２によって確保された予約領域を解放する。
【００８０】
メモリ領域予約部１１２は、ＯＳ制御部１１９によって予約領域が解放された場合、予約パラメータ更新部１１８によって更新された予約サイズだけ予約領域を確保する。
【００８１】
アプリ起動部１１３は、メモリ領域予約部１１２によって予約領域が確保された場合、予約領域を除いた残領域（起動領域）にアプリデータ１９２を記憶する。
アプリ起動部１１３は、記憶したアプリデータ１９２に従ってアプリの初期化処理を実行する。
【００８２】
メモリ不足検出部１１７は、残領域に空き領域が不足したか否かを判定する。
予約パラメータ更新部１１８は、メモリ不足検出部１１７によって残領域に空き領域が不足したと判定された場合、予約サイズを予約最大値１９５で更新する。
ＯＳ制御部１１９は、メモリ不足検出部１１７によって残領域に空き領域が不足したと判定された場合、メモリ領域予約部１１２によって確保された予約領域を解放する。
メモリ領域予約部１１２は、ＯＳ制御部１１９によって予約領域が解放された場合、予約パラメータ更新部１１８によって更新された予約サイズだけ予約領域を確保する。
アプリ起動部１１３は、メモリ領域予約部１１２によって予約領域が確保された場合、予約領域を除いた残領域（起動領域）にアプリデータ１９２を記憶する。
アプリ起動部１１３は、記憶したアプリデータ１９２に従ってアプリの初期化処理を実行する。
ブートイメージ保存部１１５は、アプリ起動部１１３がアプリの初期化処理を完了したときに、残領域に記憶されている全てのデータ（メモリイメージ）をブートイメージ１９９として高速起動用メモリ１０６に保存する。
【００８３】
情報システム１００の高速起動方法の処理の流れは実施の形態１（図３参照）と同じである。
但し、ブートイメージ作成処理（Ｓ１００）は実施の形態１と一部が異なる。
【００８４】
図１１は、実施の形態２におけるブートイメージ作成処理（Ｓ１００）のフローチャートである。
実施の形態２におけるブートイメージ作成処理（図３のＳ１００）について、図１１に基づいて説明する。
【００８５】
以下、実施の形態１（図４）で説明したＳ１１０からＳ１６０の処理を「領域予約起動処理」という。
【００８６】
まず、情報システム１００は、予約パラメータ１９４に設定されている予約サイズの初期値を用いて、第１の領域予約起動処理（図４のＳ１１０からＳ１６０）を実行する。但し、予約サイズの初期値は大きめの値にする。例えば、情報システム１００の利用者は、予約サイズとして主メモリ１０３の記憶サイズを指定する。
第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）において主メモリ１０３にメモリ不足（空き領域の不足）が発生した場合、メモリ不足が発生した処理で第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）は終了する。例えば、メモリ不足が発生した場合、記憶領域の確保が失敗してメモリ不足のＯＳ例外が発生するか、またはアプリの初期化が失敗してアプリが起動しない。
第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）の後、Ｓ１９１に進む。
【００８７】
Ｓ１９１において、メモリ不足検出部１１７は、領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生したか否かを判定する。
【００８８】
図１２は、実施の形態２におけるメモリ不足判定処理（Ｓ１９１）のフローチャートである。
実施の形態２におけるメモリ不足判定処理（Ｓ１９１）について、図１２に基づいて説明する。
【００８９】
Ｓ１９１ａにおいて、メモリ不足検出部１１７は、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足のＯＳ例外が発生したか否かを判定する。
メモリ不足のＯＳ例外が発生した場合（ＹＥＳ）、メモリ不足検出部１１７はメモリ不足が発生したと判定する（Ｓ１９１ｃ）。
メモリ不足のＯＳ例外が発生しなかった場合（ＮＯ）、Ｓ１９１ｂに進む。
【００９０】
Ｓ１９１ｂにおいて、メモリ不足検出部１１７は、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）で起動すべき所定の全てのアプリが正常に起動しているか否かを判定する。
所定の全てのアプリが正常に起動している場合（ＹＥＳ）、メモリ不足検出部１１７はメモリ不足が発生しなかったと判定する（１９１ｄ）。
所定の全てのアプリのうち少なくともいずれかのアプリが正常に起動していない場合（ＮＯ）、メモリ不足検出部１１７はメモリ不足が発生したと判定する（Ｓ１９１ｃ）。
【００９１】
図１１に戻り、ブートイメージ作成処理（Ｓ１００）の説明を続ける。
【００９２】
Ｓ１９１での判定の結果、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生した場合（ＹＥＳ）、Ｓ１９４に進む。
Ｓ１９１での判定の結果、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生しなかった場合（ＮＯ）、Ｓ１９２に進む。
【００９３】
Ｓ１９２において、予約パラメータ更新部１１８は、予約パラメータ１９４を参照し、予約パラメータ１９４に設定されている予約サイズを予約最大値１９５の変数に設定する。
さらに、予約パラメータ更新部１１８は、予約サイズに所定の拡張サイズ（例えば、１６メガバイト）を加算した値を新たな予約サイズとして算出し、算出した新たな予約サイズでＯＳブートパラメータ内の予約サイズを更新する。更新後の予約サイズは、次回の領域予約起動処理（特に、Ｓ１３０）で用いられる。
Ｓ１９２の後、Ｓ１９３に進む。
【００９４】
Ｓ１９３において、ＯＳ制御部１１９は、ソフトウェアによる情報システム１００の従来の再起動処理を行う。通常、ソフトウェアによる再起動処理はＯＳの機能として提供され、このＯＳの機能を呼び出すことにより実行される。
再起動処理が行われることにより、主メモリ１０３の全ての記憶領域が使用可能になる。つまり、予約領域が解放された状態になる。
Ｓ１９３の後、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）に戻る。
【００９５】
今回の領域予約起動処理（Ｓ１１０−Ｓ１６０）ではＳ１９２で拡張された予約サイズを用いて、前回の領域予約起動処理（Ｓ１１０−Ｓ１６０）の予約領域よりも大きな予約領域が確保される。
このため、今回の領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生する可能性がある。
【００９６】
以下に、第１の領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生した場合（Ｓ１９１、ＮＯ）の処理について説明する。
【００９７】
Ｓ１９４において、予約パラメータ更新部１１８は、予約最大値１９５の変数を参照し、予約最大値１９５でＯＳブートパラメータ内の予約サイズを更新する。
更新後の予約サイズは、領域予約起動処理（Ｓ１１０−Ｓ１６０）でメモリ不足が発生しない最大の予約サイズである。つまり、更新後の予約サイズは、ブートイメージ１９９として保存される起動領域を最小にする最適な予約サイズである。
Ｓ１９４の後、Ｓ１９１に進む。
【００９８】
Ｓ１９５において、ＯＳ制御部１１９は、ソフトウェアによる情報システム１００の従来の再起動処理を行う。
Ｓ１９５の後、第２の領域予約起動処理（Ｓ１１０−Ｓ１６０）に進む。
【００９９】
第２の領域予約起動処理（Ｓ１１０−Ｓ１６０）では、Ｓ１９４で予約最大値１９５に更新された予約サイズを用いて最適な予約領域が確保される。
第２の領域予約起動処理（Ｓ１１０−Ｓ１６０）の後、Ｓ１７０に進む。
【０１００】
Ｓ１７０において、メモリ領域解放部１１４は、実施の形態１（図４）で説明したように予約領域を解放する。
Ｓ１７０の後、Ｓ１８０に進む。
【０１０１】
Ｓ１８０において、ブートイメージ保存部１１５は、実施の形態１（図４）で説明したように起動領域のメモリイメージをブートイメージ１９９としてブートローダ部１２０に保存する。
Ｓ１８０により、ブートイメージ作成処理（Ｓ１００）は終了する。
【０１０２】
ブートイメージ１９９を用いた高速起動処理（Ｓ２００）は実施の形態１（図７）と同じである。
【０１０３】
実施の形態２において、例えば、以下のような情報システム１００について説明した。
情報システム１００は、ＯＳ制御部１１９、予約パラメータ更新部１１８、メモリ不足検出部１１７および予約最大値１９５を備える。
ＯＳ制御部１１９は、ＯＳの再起動処理を呼び出すことにより、自動的な再起動を可能とする。
予約パラメータ更新部１１８は、物理メモリ領域の予約サイズ情報を自動的に更新する。
メモリ不足検出部１１７は、ＯＳまたはアプリケーションの起動完了までに発生したメモリ不足エラーを検出する。
予約最大値１９５は、ＯＳおよびアプリケーションがメモリ不足エラーを発生せずに起動したときのメモリ領域予約パラメータ（予約サイズ）である。
【０１０４】
情報システム１００は、物理メモリ領域の予約サイズを一定値づつ増加させて再起動を繰り返し、正常に動作する物理メモリ領域の予約サイズの最大値を取得する。そして、情報システム１００は、予約サイズが最大値である場合のブートイメージを記録する。
これにより、最も小さいブートイメージを自動的に作成することができる。そして、ブートイメージを保存する不揮発メモリのサイズを削減すると共に、情報システム１００を短時間で起動することができる。
【０１０５】
実施の形態３．
情報システム１００内で複数のバーチャルマシンを高速に起動する形態について説明する。
以下、実施の形態１、２と異なる事項について主に説明する。説明を省略する事項については実施の形態１、２と同様である。
【０１０６】
図１３は、実施の形態３における情報システム１００の機能構成図である。
実施の形態３における情報システム１００の機能構成について、図１３に基づいて説明する。
【０１０７】
情報システム１００は、仮想化技術により複数のバーチャルマシンを制御する。仮想化技術とは、ソフトウェアによって仮想的な計算機（バーチャルマシン）を実装する技術である。仮想化技術では、ＣＰＵやメモリなどのハードウェア資源がバーチャルマシン毎に割り当てられる。
【０１０８】
情報システム１００は、バーチャルマシンモニタ部１３０と複数のバーチャルマシン部２００とを備える。但し、バーチャルマシン部２００は一つであっても構わない。
【０１０９】
バーチャルマシン部２００は、バーチャルマシンの機能（例えば、バーチャルマシンのＯＳ）を実行する。
【０１１０】
バーチャルマシンモニタ部１３０は複数のバーチャルマシン部２００を制御する。
例えば、バーチャルマシンモニタ部１３０は、主メモリ１０３の記憶領域のうち所定の割当領域を割当メモリ２０３として各バーチャルマシン部２００に割り当てる。
【０１１１】
図１４は、実施の形態３におけるバーチャルマシン部２００の機能構成図である。
図１４に示すように、バーチャルマシン部２００の機能構成は、実施の形態１で説明した情報システム１００と同様である。
但し、バーチャルマシン部２００は、実施の形態１の情報システム１００の主メモリ１０３に相当する構成として、バーチャルマシンモニタ部１３０によって割り当てられた割当メモリ２０３を備える。
【０１１２】
つまり、メモリ領域予約部１１２は、バーチャルマシンモニタ部１３０により割り当てられた割当メモリ２０３に予約パラメータ１９４で指定された予約サイズだけ連続する予約領域を確保する。これにより、データを記憶できる記憶領域を予約領域を除いた連続する残領域（起動領域）だけに制限することができる。
また、ブートイメージロード部１２１は、バーチャルマシン部２００が再起動された場合、高速起動用メモリ１０６から当該バーチャルマシン部２００のブートイメージ１９９を読み出し、読み出したブートイメージを残領域と同じ記憶領域に記憶する。
【０１１３】
バーチャルマシン部２００の高速起動方法は、実施の形態１で説明した情報システム１００の高速起動方法（図３参照）と同様である。
また、バーチャルマシン部２００のブートイメージ作成処理（Ｓ１００）および高速起動処理（Ｓ２００）は、実施の形態１で説明した情報システム１００のブートイメージ作成処理（Ｓ１００）（図４参照）および高速起動処理（Ｓ２００）（図７参照）と同様である。
【０１１４】
バーチャルマシン部２００は、実施の形態２の情報システム１００と同様に、最大の予約サイズを判定し、最適なブートイメージ１９９を作成してもよい。
【０１１５】
実施の形態３において、例えば、以下のような情報システム１００について説明した。
情報システム１００は、ハードウェアの仮想化機能を持つバーチャルマシンモニタ上で実施の形態１、２で説明した高速起動方式を実行する。
【０１１６】
これにより、バーチャルマシンモニタ上で複数のＯＳ（バーチャルマシン）が動作した場合でも、各ＯＳおよびアプリケーションのメモリイメージをブートイメージとしてＯＳ毎に作成し、各ＯＳを高速に起動することができる。
【０１１７】
実施の形態４．
ブートイメージを作成する機能をバーチャルマシンモニタ部１３０に備える形態について説明する。
以下、実施の形態３と異なる事項について主に説明する。説明を省略する事項については実施の形態３と同様である。
【０１１８】
図１５は、実施の形態４における情報システム１００の機能構成図である。
実施の形態４における情報システム１００の機能構成について、図１５に基づいて説明する。
【０１１９】
情報システム１００は、主メモリ１０３、複数（または一つ）のバーチャルマシン部２００およびバーチャルマシンモニタ部１３０を備える。
【０１２０】
バーチャルマシンモニタ部１３０は、予約パラメータ指定部１１１、ブートイメージ保存部１１５、ＶＭメモリ割当部１３１（ＶＭ：バーチャルマシン）およびＶＭ制御部１３９を備える。
ＶＭメモリ割当部１３１（領域予約部、領域解放部の一例）は、各バーチャルマシン部２００の割当メモリ２０３を管理する。例えば、ＶＭメモリ割当部１３１は、各バーチャルマシン部２００のメモリ領域予約部１１２およびメモリ領域解放部１１４として機能する（実施の形態１−３参照）。
ＶＭ制御部１３９は、各バーチャルマシン部２００を制御する。例えば、ＶＭ制御部１３９は主メモリ１０３の所定の記憶領域を割当メモリ２０３として各バーチャルマシン部２００に割り当てる。
【０１２１】
主メモリ１０３は、各バーチャルマシン部２００の割当メモリ２０３を管理するメモリ管理テーブルとしてＶＭ管理テーブル２９３を記憶する。
主メモリ１０３は、さらに、バーチャルマシン部２００毎に予約パラメータ１９４を記憶する。
【０１２２】
図１６は、実施の形態４におけるバーチャルマシン部２００の機能構成図である。
実施の形態４におけるバーチャルマシン部２００の機能構成について、図１６に基づいて説明する。
【０１２３】
バーチャルマシン部２００は、割当メモリ２０３、ＯＳ部１１０およびブートローダ部１２０を備える。
ＯＳ部１１０はアプリ起動部１１３とアプリ実行部１１６とＯＳ制御部１１９とを備え、ブートローダ部１２０はブートイメージロード部１２１とブート制御部１２９とを備える。
【０１２４】
図１７は、実施の形態４における高速起動方法を示すフローチャートである。
実施の形態４における高速起動方法について、図１７に基づいて説明する。
【０１２５】
以下に説明するＳ１００ＢからＳ４００Ｂは、実施の形態１で説明したＳ１００からＳ４００（図３参照）に相当する。
【０１２６】
Ｓ１００Ｂにおいて、バーチャルマシンモニタ部１３０は、バーチャルマシン部２００毎にブートイメージ１９９を作成する。
Ｓ２００Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は各バーチャルマシン部２００のブートローダ部１２０を呼び出し、各ブートローダ部１２０はブートイメージ１９９を用いてバーチャルマシン部２００を起動する。
Ｓ３００Ｂにおいて、各バーチャルマシン部２００のアプリ実行部１１６は、ブートイメージ１９９に含まれるアプリデータ１９２に従ってアプリを実行する。
Ｓ４００Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は、各バーチャルマシン部２００を停止する。
【０１２７】
図１８は、実施の形態４におけるブートイメージ作成処理（Ｓ１００Ｂ）のフローチャートである。
実施の形態４におけるブートイメージ作成処理（図１７のＳ１００Ｂ）について、図１８に基づいて説明する。
【０１２８】
以下に説明するＳ１１０ＢからＳ１８０Ｂは、実施の形態１で説明したＳ１１０からＳ１８０（図４参照）に相当する。
【０１２９】
Ｓ１１０Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は、バーチャルマシン部２００毎にＯＳデータ１９１を通常起動用メモリ１０５から読み出し、読み出したＯＳデータ１９１を割当メモリ２０３に記憶する。
Ｓ１１０Ｂの後、Ｓ１２０Ｂに進む。
【０１３０】
Ｓ１２０Ｂにおいて、バーチャルマシンモニタ部１３０の予約パラメータ指定部１１１は、バーチャルマシン部２００毎にバーチャルマシンのＯＳブートパラメータを取得し、取得したＯＳブートパラメータに含まれる予約パラメータ１９４を主メモリ１０３に記憶する。
Ｓ１２０Ｂの後、Ｓ１３０Ｂに進む。
【０１３１】
Ｓ１３０Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭメモリ割当部１３１は、バーチャルマシン部２００毎に予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて予約領域を割当メモリ２０３に確保する。
つまり、ＶＭメモリ割当部１３１は、各バーチャルマシン部２００の予約領域のアドレスに対応付けて予約領域を示すフラグ値「２」をＶＭ管理テーブル２９３に設定する。
Ｓ１３０Ｂの後、Ｓ１４０Ｂに進む。
【０１３２】
Ｓ１４０Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は、各バーチャルマシン部２００にＣＰＵ１０１の使用時間を割り当てることによりバーチャルマシン部２００の実行を開始する。
そして、各バーチャルマシン部２００のＯＳ制御部１１９は、割当メモリ２０３に記憶されたＯＳデータ１９１に従って、起動領域（予約領域を除いた残りの記憶領域）を用いてＯＳの初期化処理を行う。
ＯＳ制御部１１９は、ＯＳの初期化処理での記憶領域の確保または解放をバーチャルマシンモニタ部１３０のＶＭメモリ割当部１３１を介して実行する。例えば、記憶領域を確保する場合、ＯＳ制御部１１９は確保された記憶領域のアドレス情報をＶＭメモリ割当部１３１から取得する。また、記憶領域を解放する場合、ＯＳ制御部１１９は解放する記憶領域のアドレス情報をＶＭメモリ割当部１３１に通知する。
バーチャルマシンモニタ部１３０は、ＯＳ制御部１１９からの要求に従って記憶領域の確保または解放を行う。このとき、バーチャルマシンモニタ部１３０は、確保した記憶領域のアドレスに対応付けて使用領域を示すフラグ値「１」をＶＭ管理テーブル２９３に設定する。また、バーチャルマシンモニタ部１３０は、解放する記憶領域のアドレスに対応付けて空き領域を示すフラグ値「０」をＶＭ管理テーブル２９３に設定する。
Ｓ１４０Ｂの後、Ｓ１５０Ｂに進む。
【０１３３】
Ｓ１５０Ｂにおいて、各バーチャルマシン部２００のアプリ起動部１１３は、通常起動用メモリ１０５からアプリデータ１９２を読み出し、読み出したアプリデータ１９２を割当メモリ２０３の起動領域に記憶する。アプリ起動部１１３は、アプリデータ１９２を記憶した記憶領域のアドレス情報をバーチャルマシンモニタ部１３０のＶＭメモリ割当部１３１に通知する。ＶＭメモリ割当部１３１は、通知されたアドレス情報に基づいてアプリデータ１９２の記憶領域のアドレスに対応付けて使用領域を示すフラグ値「１」をＶＭ管理テーブル２９３に設定する。
Ｓ１５０Ｂの後、Ｓ１６０Ｂに進む。
【０１３４】
Ｓ１６０Ｂにおいて、各バーチャルマシン部２００のアプリ起動部１１３は、割当メモリ２０３に記憶したアプリデータ１９２に従って、起動領域を用いて各アプリの初期化処理を行う。
アプリ起動部１１３は、アプリの初期化処理での記憶領域の確保または解放をバーチャルマシンモニタ部１３０のＶＭメモリ割当部１３１を介して実行する。
ＶＭメモリ割当部１３１は、アプリ起動部１１３からの要求に従ってＶＭ管理テーブル２９３を更新する（Ｓ１４０Ｂと同様）。
Ｓ１６０Ｂの後、Ｓ１０１Ｂに進む。
【０１３５】
Ｓ１０１Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は、各バーチャルマシン部２００に対してＣＰＵ１０１の使用時間の割り当てを停止することにより、バーチャルマシン部２００の実行を停止する。
Ｓ１０１Ｂの後、Ｓ１７０Ｂに進む。
【０１３６】
Ｓ１７０Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭメモリ割当部１３１は、バーチャルマシン部２００毎に予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて予約領域を解放する。
つまり、ＶＭメモリ割当部１３１は、各バーチャルマシン部２００の予約領域のアドレスに対応付けて空き領域を示すフラグ値「２」をＶＭ管理テーブル２９３に設定する。
Ｓ１７０Ｂの後、Ｓ１８０Ｂに進む。
【０１３７】
Ｓ１８０Ｂにおいて、バーチャルマシンモニタ部１３０のブートイメージ保存部１１５は、バーチャルマシン部２００毎に予約パラメータ１９４を参照し、参照した予約パラメータ１９４に基づいて起動領域のメモリイメージをブートイメージ１９９として高速起動用メモリ１０６に保存する。
つまり、ブートイメージ保存部１１５は、バーチャルマシン部２００毎にブートイメージ１９９を保存する。
Ｓ１８０Ｂの後、Ｓ１０２Ｂに進む。
【０１３８】
Ｓ１０２Ｂにおいて、バーチャルマシンモニタ部１３０のＶＭ制御部１３９は、各バーチャルマシン部２００にＣＰＵ１０１の使用時間を割り当てることにより、バーチャルマシン部２００の実行を再開する。
Ｓ１０２Ｂにより、ブートイメージ作成処理（Ｓ１００Ｂ）は終了する。
【０１３９】
高速起動処理（図１７のＳ２００Ｂ）は、実施の形態１（図７）と同様である。
【０１４０】
バーチャルマシンモニタ部１３０は、実施の形態２の情報システム１００と同様に、最大の予約サイズを判定し、最適なブートイメージ１９９を作成してもよい。
【０１４１】
実施の形態４において、例えば、以下のような情報システム１００について説明した。
【０１４２】
情報システム１００は、従来のバーチャルマシンのＯＳに修正を加えることなく実施の形態１、２で説明した高速起動方式を実現するために以下の構成を備える。
情報システム１００は、ブートイメージ保存部１１５、ＶＭ管理テーブル２９３、ＶＭメモリ割当部１３１および予約パラメータ指定部１１１を備える。
ブートイメージ保存部１１５は、バーチャルマシンモニタ上で動作するＯＳおよびアプリケーションのメモリイメージをブートイメージとして不揮発メモリ（高速起動用メモリ１０６）に保存する。
ＶＭ管理テーブル２９３は、バーチャルマシンのＯＳに割り当てている物理メモリ（割当メモリ２０３）のマップ情報を管理すると共に、バーチャルマシンのＯＳに割り当てた物理メモリの一部を予約領域として指定する。
ＶＭメモリ割当部１３１は、バーチャルマシンのＯＳからの要求に基づき物理メモリを割り当てる。また、ＶＭメモリ割当部１３１は、予約領域として指定された物理メモリに対するメモリ割当要求があった場合、ＶＭ管理テーブル２９３を参照し、予約領域でない物理メモリを割り当てる。
【０１４３】
ブートイメージを作成する構成をバーチャルマシンモニタに入れることにより、バーチャルマシンモニタのＯＳ自体に変更を加えずに使用中の物理メモリを起動領域に集約することができる。
また、ブートイメージの不揮発メモリ（高速起動用メモリ１０６）への保存処理自体も、バーチャルマシンモニタにより行うことができ、バーチャルマシンのＯＳ毎にブートイメージの保存手段を持つ必要がない。
【符号の説明】
【０１４４】
１００  情報システム、１０１  ＣＰＵ、１０２  ブリッジ、１０３  主メモリ、１０３ａ  起動領域、１０３ｂ  予約領域、１０４  ＩＯデバイス、１０５  通常起動用メモリ、１０６  高速起動用メモリ、１０７  ＲＯＭ、１０９  バス、１１０  ＯＳ部、１１１  予約パラメータ指定部、１１２  メモリ領域予約部、１１３  アプリ起動部、１１４  メモリ領域解放部、１１５  ブートイメージ保存部、１１６  アプリ実行部、１１７  メモリ不足検出部、１１８  予約パラメータ更新部、１１９  ＯＳ制御部、１２０  ブートローダ部、１２１  ブートイメージロード部、１２９  ブート制御部、１３０  バーチャルマシンモニタ部、１３１  ＶＭメモリ割当部、１３９  ＶＭ制御部、１９０  ブートローダ、１９１  ＯＳデータ、１９２  アプリデータ、１９３  メモリ管理テーブル、１９４  予約パラメータ、１９５  予約最大値、１９９  ブートイメージ、２００  バーチャルマシン部、２０３  割当メモリ、２９３  ＶＭ管理テーブル。
【図１】
0005579085.tif 000002
【図２】
0005579085.tif 000003
【図３】
0005579085.tif 000004
【図４】
0005579085.tif 000005
【図５】
0005579085.tif 000006
【図６】
0005579085.tif 000007
【図７】
0005579085.tif 000008
【図８】
0005579085.tif 000009
【図９】
0005579085.tif 000010
【図１０】
0005579085.tif 000011
【図１１】
0005579085.tif 000012
【図１２】
0005579085.tif 000013
【図１３】
0005579085.tif 000014
【図１４】
0005579085.tif 000015
【図１５】
0005579085.tif 000016
【図１６】
0005579085.tif 000017
【図１７】
0005579085.tif 000018
【図１８】
0005579085.tif 000019