(57)【要約】【課題】中断後に再度起動する場合に迅速に希望するアプリケーションを使用することが可能なプログラム、コンピュータ及び制御方法を提供する。【解決手段】ＶＭ２上で動作する複数のアプリケーション２１２が使用するＲＡＭ１２の各使用領域を領域ファイル１５１に記憶する。運転中のＶＭ２に対する中断命令を受け付けた場合、複数のアプリケーション２１２が使用するＲＡＭ１２上の情報をＨＤ１５へ保存する。そして、中断中のＶＭ２に対する起動命令を受け付けた場合、複数のアプリケーション２１２の内、ＨＤ１５からＲＡＭ１２の使用領域へ優先的に復元するアプリケーション２１２を選択する。【選択図】図２
2010211526.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を実行させるプログラム。
【請求項２】
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域に関する情報を記憶する記憶ステップと、
前記選択ステップにより選択したアプリケーションプログラムが使用していた前記記憶部に保存されたメモリ上の情報を、前記記憶ステップにおいて記憶された使用領域に関する情報に基づいて特定されるメモリ上の使用領域へ復元する復元ステップと
を含む請求項１に記載のプログラム。
【請求項３】
前記記憶ステップは、
アプリケーションプログラムを特定するための識別情報と、アプリケーションプログラムが使用するメモリの使用領域と、を対応付けて記憶し、
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記記憶ステップにおいて記憶された識別情報に対応する選択項目を出力するステップと、
前記識別情報に基づいて出力した選択項目に対する入力操作を受け付けるステップと、
前記アプリケーションプログラムの内、入力操作を受け付けた選択項目に対応する識別情報に係るアプリケーションプログラムを特定するステップと
を含む請求項２に記載のプログラム。
【請求項４】
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域及び前記アプリケーションプログラムの使用に関する履歴情報を取得する取得ステップを備え、
前記記憶ステップは、
前記取得ステップにより取得した複数のアプリケーションプログラムが使用するメモリの各使用領域及び履歴情報を、前記アプリケーションプログラムを特定する識別情報に対応付けて記憶する
請求項２に記載のプログラム。
【請求項５】
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した履歴情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
請求項４に記載のプログラム。
【請求項６】
複数の仮想マシンの動作を制御するコンピュータにおいて、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存手段と、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択手段と
を備えるコンピュータ。
【請求項７】
コンピュータ上で動作する複数の仮想マシンを制御する制御方法において、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作する複数の仮想マシンを制御するためのプログラム、コンピュータ及び制御方法に関する。
【背景技術】
【０００２】
近年、複数の仮想マシンを仮想的に制御するコンピュータが普及している。仮想マシンを制御するコンピュータにおいても、パーソナルコンピュータと同様に（例えば特許文献１参照）、中断機能を有している。仮想マシンの中断時には当該仮想マシンが使用しているメモリ内の情報をハードディスク等に退避させる。そして、起動時にはこの退避した情報をメモリに復元する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３６２４２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、起動時においてハードディスク等に記憶した情報を復元する場合、その復元に多くの時間を要するため、早期使用を望むユーザにとっては必ずしも利便性が高いとはいえなかった。
【０００５】
本発明は斯かる事情に鑑みてなされたものである。その目的は、優先的に復元するアプリケーションプログラムを選択することにより、中断後に再度起動する場合に迅速に希望するアプリケーションプログラムを使用することが可能なプログラム等を提供することにある。
【課題を解決するための手段】
【０００６】
本願に開示するプログラムは、コンピュータ上で動作する複数の仮想マシンを制御するためのプログラムにおいて、コンピュータに、運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップとを実行させる。
【発明の効果】
【０００７】
当該装置の一観点によれば、選択されたアプリケーションプログラムから順にメモリの使用領域に情報が復元されるため、より迅速に使用を希望するアプリケーションプログラムの利用が可能となる。
【図面の簡単な説明】
【０００８】
【図１】制御システムの概要を示す説明図である。
【図２】物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図３】保存ファイルのレコードレイアウトを示す説明図である。
【図４】ＶＭ管理部のレコードレイアウトを示す説明図である。
【図５】ハードウェア情報ファイルのレコードレイアウトを示す説明図である。
【図６】ＲＡＭの内容を模式的に示す説明図である。
【図７】領域ファイルのレコードレイアウトを示す説明図である。
【図８】選択画面のイメージを示す説明図である。
【図９】ページテーブルのレコードレイアウトを示す説明図である。
【図１０】復元処理の遷移を模式的に示す説明図である。
【図１１】中断処理の手順を示すフローチャートである。
【図１２】中断処理の手順を示すフローチャートである。
【図１３】領域ファイルの生成処理の手順を示すフローチャートである。
【図１４】復元処理の手順を示すフローチャートである。
【図１５】復元処理の手順を示すフローチャートである。
【図１６】復元処理の手順を示すフローチャートである。
【図１７】ページフォルト処理の手順を示すフローチャートである。
【図１８】ページフォルト処理の手順を示すフローチャートである。
【図１９】実施の形態２に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図２０】履歴ファイルのレコードレイアウトを示す説明図である。
【図２１】実施の形態２に係る領域ファイルのレコードレイアウトを示す説明図である。
【図２２】中断処理の手順を示すフローチャートである。
【図２３】中断処理の手順を示すフローチャートである。
【図２４】中断する前に識別情報の入力を受け付ける際の手順を示すフローチャートである。
【図２５】中断する前に識別情報の入力を受け付ける際の手順を示すフローチャートである。
【図２６】選択処理の手順を示すフローチャートである。
【図２７】コンピュータの表示部に表示される画面イメージを示す説明図である。
【図２８】履歴ファイルのレコードレイアウトを示す説明図である。
【図２９】時刻情報及び選択情報の取得処理の手順を示すフローチャートである。
【図３０】時刻情報及び選択情報の取得処理の手順を示すフローチャートである。
【図３１】選択処理の手順を示すフローチャートである。
【図３２】選択処理の手順を示すフローチャートである。
【図３３】選択処理の手順を示すフローチャートである。
【図３４】物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図３５】優先度に基づく選択処理の手順を示すフローチャートである。
【図３６】優先度に基づく選択処理の手順を示すフローチャートである。
【図３７】優先度に基づく選択処理の手順を示すフローチャートである。
【図３８】選択画面のイメージを示す説明図である。
【図３９】優先度の付与手順を示すフローチャートである。
【図４０】優先度の付与手順を示すフローチャートである。
【図４１】実施の形態９に係る優先度算出処理の手順を示すフローチャートである。
【図４２】実施の形態１０に係る履歴ファイルのレコードレイアウトを示す説明図である。
【図４３】実施の形態１０に係る優先度算出処理の手順を示すフローチャートである。
【図４４】実施の形態１０に係る優先度算出処理の手順を示すフローチャートである。
【図４５】実施の形態１１に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【図４６】補正処理の手順を示すフローチャートである。
【図４７】実施の形態１２に係る履歴ファイルのレコードレイアウトを示す説明図である。
【図４８】実施の形態１２に係る優先度算出処理の手順を示すフローチャートである。
【図４９】実施の形態１２に係る優先度算出処理の手順を示すフローチャートである。
【図５０】実施の形態１３に係る物理マシン及びＶＭのハードウェア及びソフトウェアを示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は制御システムの概要を示す説明図である。制御システムはコンピュータ１、仮想マシン２及び端末装置３、３、３・・を含む。コンピュータ１は例えばサーバコンピュータであり複数の仮想マシン（以下ＶＭ：(Virtual Machine)という）２１、２２、２３、・・（以下、場合により２で代表する）を制御する。
【００１０】
端末装置３は例えばパーソナルコンピュータ、または、通信機能、入出力装置及びモニタを有する入出力装置等である。以下では、コンピュータ１を物理マシン１といい、また端末装置３はパーソナルコンピュータ（以下、コンピュータ３という）であるものとして説明する。
【００１１】
コンピュータ３と物理マシン１とはＵＳＢ（Universal Serial Bus）ケーブル、または、インターネット若しくはＬＡＮ（Local Area Network）等の通信網を介して接続されており、所定のプロトコルにて情報を送受信する。本実施の形態においては、コンピュータ３は物理マシン１に対しＬＡＮにより接続されている例を挙げて説明する。コンピュータ３を使用するユーザは物理マシン１を介してＶＭ２を起動する。物理マシン１上では複数のＶＭ２１、２２、２３、・・・が動作している。以下ではＶＭ２１乃至２３の３台のＶＭ２を物理マシン１が制御する例を挙げて説明するが、この数に限定するものではない。
【００１２】
続いて本実施形態の概要を説明する。運転中のＶＭ２１が中断命令を受け付けた場合、物理マシン１はＶＭ２１を中断する。この場合ＶＭ２１が使用していたメモリ内の情報をハードディスク等の他の記憶部に保存（以下、場合により記憶という）する。ＶＭ２１を起動する場合、中断時に使用していたアプリケーションプログラム（以下、アプリケーションという）の一覧を表示する。図１の例ではアプリケーションＡ、アプリケーションＢ及びアプリケーションＣの３つが表示される。ユーザは優先的に復元を希望するアプリケーションを選択する。物理マシン１はこの選択されたアプリケーションに係る情報を記憶部からメモリへ優先的に復元する。以下、詳細な内容を説明する。
【００１３】
図２は物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。物理マシン１はハードウェアリソース１０及び仮想化レイヤ１７を含む。ハードウェアリソース１０は、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、記憶部（ＨＤ１５）、ＮＩＣ（Network Interface Card）１６、時計部１８及び電源制御部１９等を含む。ハードウェアリソース１０は仮想化ソフトウェアである仮想化レイヤ１７の制御下におかれる。ＣＰＵ１１は仮想化レイヤ１７及び仮想化レイヤ１７上の制御モジュール１７０の指示に従い、バス（図示せず）を介して接続される各ハードウェアを制御する。
【００１４】
メモリとしてのＲＡＭ１２は例えばＳＲＡＭ（Static ＲＡＭ）、ＤＲＡＭ（Dynamic ＲＡＭ）、フラッシュメモリ等である。ＲＡＭ１２は、ＣＰＵ１１による仮想化レイヤ１７等各種プログラムの実行時に発生する種々のデータを一時的に記憶する。ＲＡＭ１２とは異なる他の記憶部は、例えばハードディスクまたは大容量メモリが利用される。本実施の形態においては他の記憶部はハードディスクであるものとして説明し、以下ではＨＤ１５という。ＨＤ１５はＶＭ２にて作成されたファイル及び仮想化レイヤ１７の指示により記憶すべき各種データ等を記憶する。ＮＩＣ１６はイーサーネットカード等であり、コンピュータ３または図示しない他のＷｅｂサーバ等とＨＴＴＰ（HyperText Transfer Protocol）等により情報を送受信する。時計部１８は時刻情報をＣＰＵ１１へ出力する。
【００１５】
仮想化レイヤ１７と連携する制御モジュール１７０はＶＭ２１、２２、２３の中断処理または停止処理、及び、物理マシン１の電源管理処理を含む各種処理を行う。制御モジュール１７０は保存部１７１、選択部１７２、復元部１７３、中断部１７６、停止部１７７、起動部１７９、取得部１７８及びＶＭ管理部１７４等を含みＲＡＭ１２上にロードされて実行される。ＲＡＭ１２またはＨＤ１５にはページテーブル１７５、領域ファイル１５１及びハードウェア情報ファイル１５２等が用意されている。なお、本実施の形態においてはハードウェアリソース１０上で仮想化レイヤ１７が直接動作するハイパーバイザー型の仮想化ソフトウェアを用いる例を説明するが、これに限るものではない。Windows（登録商標）またはLinux（登録商標）上で仮想化ソフトウェアが動作するホスト型を用いても良いことはもちろんである。
【００１６】
停止状態にある物理マシン１を起動し、ＶＭ２１の利用を希望するユーザはコンピュータ３により物理マシン１を起動する。コンピュータ３は物理マシン１に対し起動命令を出力する。また、コンピュータ３は複数のＶＭ２の内、起動を希望するＶＭ２を特定するための識別情報（以下、ＶＭＩＤという）及びＶＭ２の起動命令を物理マシン１へ出力する。なお、本実施の形態においてはＶＭ２１を起動する例を挙げて説明する。ＮＩＣ１６はWake On Lanに対応しており、物理マシン１の起動命令を受けて電源制御部１９へ起動命令を出力する。なお、コンピュータ３は物理マシン１の電源を投入するためのマジックパケットをＮＩＣ１６へ出力する。
【００１７】
電源制御部１９は図示しない交流電源からの電力を物理マシン１へ供給する。これにより、物理マシン１が起動し、また仮想化レイヤ１７及び制御モジュール１７０も起動する。起動部１７９はＶＭ２１を起動する。ＶＭ２１は仮想化レイヤ１７の制御下で動作する。ＶＭ２１に対してインストールされたＯＳ（Operating System）２１１は各種アプリケーションＡ、Ｂ、Ｃ・・（以下、場合により２１２で代表する）を実行する。アプリケーション２１２は例えば文書作成用アプリケーション、ブラウザ、表計算文書作成用アプリケーション、メーラ、または、プレゼンテーション用文書作成アプリケーション等である。ＶＭ２１はＮＩＣ１６を介してコンピュータ３へ画面情報を出力する。同様に他のユーザは他のコンピュータ３を用いてＶＭ２２を利用することができる。この場合、他のコンピュータ３はＶＭ２２のＶＭＩＤ及びＶＭ２２の起動命令を物理マシン１へ出力する。起動部１７９はこれを受けてＶＭ２２を起動する。なお、ユーザを特定するための固有のユーザ識別情報を付与し、複数のユーザが一のＶＭ２１を共有するようにしても良い。
【００１８】
コンピュータ３からＶＭ２１の中断命令が出力された場合、中断部１７６はこれを受け付け、ＶＭ２１を中断する。中断部１７６は、ＲＡＭ１２内に記憶されたＶＭ２１のコンテキスト情報及びデバイス情報を含むハードウェア情報をハードウェア情報ファイル１５２に保存する。また、中断部１７６は中断命令を保存部１７１へ出力する。保存部１７１は、ＶＭ２１が中断命令を受け付けた際に使用しているＲＡＭ１２上の情報をＨＤ１５内の保存ファイル１５３に保存する。
【００１９】
図３は保存ファイル１５３のレコードレイアウトを示す説明図である。保存ファイル１５３はＶＭＩＤフィールド、中断開始時刻フィールド、アドレスフィールド、サイズフィールド、及び情報フィールドを含む。ＶＭＩＤフィールドには中断命令を受けたＶＭ２のＶＭＩＤが記憶される。中断開始時刻フィールドには、ＶＭ２を中断した際に時計部１８から出力される時刻（以下、中断開始時刻という）がＶＭＩＤに対応づけて記憶されている。アドレスフィールドには中断命令を受けたＶＭ２が使用しているＲＡＭ１２のアドレスがＶＭＩＤに対応づけて記憶されている。
【００２０】
サイズフィールドには、中断命令を受けたＶＭ２が使用しているＲＡＭ１２のサイズが記憶され、情報フィールドには中断命令を受けたＶＭ２が使用しているＲＡＭ１２内の情報が記憶されている。保存部１７１は中断命令を受け付けた場合、対象となるＶＭＩＤ及び時計部１８から出力される時刻を中断開始時刻として保存ファイル１５３に記憶する。また保存部１７１はＶＭＩＤに対応づけて中断命令を受け付けたＶＭ２が使用するＲＡＭ１２のアドレス、サイズ及び情報を保存ファイル１５３に記憶する。
【００２１】
中断後ＶＭ２１が使用していたＲＡＭ１２の領域は解放される。コンピュータ３からＶＭ２１の停止命令を受け付けた場合、停止部１７７はこれを受け付け、ＶＭ２１を停止する。具体的には、ＶＭ２１が使用しているＯＳ２１１及びアプリケーション２１２を全て終了し、ＲＡＭ１２の領域内の情報をＨＤ１５に記憶することなく開放し、ＶＭ２１の動作をシャットダウンする。
【００２２】
図４はＶＭ管理部１７４のレコードレイアウトを示す説明図である。ＶＭ管理部１７４は運転、中断、または停止を含むＶＭ２の状態をＶＭＩＤに対応づけて記憶している。図４の例ではＶＭＩＤが「ＶＭ０１」のＶＭ２１は運転状態にあり、ＶＭＩＤが「ＶＭ０２」のＶＭ２２は中断状態にあることを示す。ＶＭ管理部１７４はＶＭ２１の状態を監視し、状態に変化があった場合に、ＶＭＩＤに対応づけて変化後の状態を記憶する。
【００２３】
図５はハードウェア情報ファイル１５２のレコードレイアウトを示す説明図である。ハードウェア情報ファイル１５２はＶＭＩＤフィールド、中断開始時刻フィールド及びハードウェア情報フィールドを含む。中断開始時刻フィールドには、ＶＭＩＤに対応づけて中断部１７６がＶＭ２を中断した際の時計部１８から出力される時刻情報（中断開始時刻）が記憶されている。
【００２４】
ハードウェア情報フィールドにはＶＭＩＤに対応づけて、中断状態にあるＶＭ２を中断時と同じ状態で復元するためのＣＰＵ１１及びＲＡＭ１２等のハードウェアに関する情報が記憶されている。具体的にはハードウェア情報はＣＰＵ１１のレジスタ情報等のコンテキスト情報、並びに、各ハードウェアのＩ／Ｏレジスタ値及びＨＤ１５のアクセスモード等のデバイス情報等が該当する。中断部１７６はＶＭ２を中断する場合、ＲＡＭ１２に記憶された中断対象のＶＭ２のハードウェア情報を読み出し、ＶＭＩＤに対応づけてハードウェア情報をハードウェア情報ファイル１５２に記憶する。中断部１７６はあわせて中断時または中断命令を受け付けた際に時計部１８から出力される時刻を中断開始時刻として記憶する。
【００２５】
起動部１７９はコンピュータ３から中断状態にあるＶＭ２１の起動命令を受け付ける。起動命令にはＶＭＩＤが含まれており、起動部１７９はＶＭＩＤに対応するＶＭ２１を起動する。起動部１７９は選択部１７２、復元部１７３及び取得部１７８に対し起動命令を出力する。復元部１７３は保存ファイル１５３に記憶した中断時のＲＡＭ１２の情報を復元するに際し、選択部１７２により選択されたアプリケーション２１２から優先的に復元する。
【００２６】
取得部１７８は起動対象となるＶＭＩＤを参照し、保存ファイル１５３に記憶した中断時のＲＡＭ１２内の情報を読み出す。図６はＲＡＭ１２の内容を模式的に示す説明図である。図６において０、ａ、ｂ・・・ｇは中断時にＶＭ２１が使用していたＲＡＭ１２内の仮想アドレスを示す。なお、アドレスには仮想アドレス及び物理アドレスが存在するが、説明を容易にするために、仮想アドレスを例に挙げて説明する。なお、仮想アドレス及び物理アドレス間の関連づけは後述するページテーブル１７５に記憶されている。ここでの仮想アドレスとは、ＶＭ２における物理アドレスのことを指し、ＶＭ２のＯＳ２１１は、仮想アドレスを物理アドレスとして扱う。その仮想アドレスを実際の物理アドレスに変換するためにページテーブル１７５を使用する。
【００２７】
ＶＭ２１は仮想アドレス０〜ｇの領域を使用しており、仮想アドレスａ〜ｂはＯＳ２１１の領域であり、アプリケーション２１２のコードを含むＯＳ２１１が記憶されている。本実施の形態においては、中断時にアプリケーションＡ、アプリケーションＢ及びアプリケーションＣの３つが起動されていたものとして説明する。なお、アプリケーションＡとアプリケーションＢとは、文書作成用アプリケーションとブラウザとのように異なる種類のアプリケーション２１２である場合の他、同一のアプリケーション２１２であるが使用しているファイルが異なる場合も含む。
【００２８】
仮想アドレスｃ〜ｄはアプリケーションＡの使用領域であり、仮想アドレスｅ〜ｆはアプリケーションＢの使用領域であり、仮想アドレスｆ〜ｇはアプリケーションＣの使用領域である。ＯＳ２１１内にはアプリケーションＡ乃至Ｃ（プロセス）の情報及び各アプリケーションＡ乃至Ｃが使用するＲＡＭ１２の使用領域が記憶されている。取得部１７８はＯＳ２１１内部を解析し、中断時に使用していた各アプリケーション２１２を特定すると共に、各アプリケーション２１２が使用していたＲＡＭ１２の使用領域を取得する。具体的には取得部１７８は各アプリケーション２１２の情報へアクセスするための変数（以下、プロセスリスト）のアドレスの特定を行う。この場合、取得部１７８はＯＳ２１１のコンパイル時に作成されるシンボル（関数名または変数名）とアドレスとの組になった情報から、プロセスリストのアドレスの特定を行う。その他、ＯＳ２１１の仮想アドレス先頭から命令を順次解析することで、プロセスリストのアドレスを特定しても良い。具体的な特定方法の一例を以下に示す。Linux（登録商標）においては、ＯＳ２１１（カーネル）のコンパイル時に、シンボル（関数または変数名）が、実行時にどのアドレスに展開されるかを示すファイル”System.map”が、実行ファイル以外にも作成される。「プロセスリストのアドレス」は、Linux（登録商標）では、”init_task”という変数名の構造体である。例えばある環境においては、”init_task”は”System.map”にて、”ffffffff802e5ae0 D init_task”と記載されている。つまり、実行時には、”init_task”は”0xffffffff802e5ae0”のアドレスに配置される。このアドレスを参照することにより、”init_task”にリストとしてつながれているプロセスをすべて辿ることにより、全てのプロセスの構造体を取得することができる。その他、”System.map”が存在しない例を説明する。この場合、ＯＳ２１１（カーネル）が配置される場所は変化しないため、カーネルのブート後の処理をマシン語から解析し、”init_task”を使用する箇所を特定する。これは、カーネルがどのような処理を行うのかを予め把握しておくことで実行することができる。
【００２９】
次いで、取得部１７８はプロセスリストのアドレスを参照し、ＯＳ２１１内に存在する構造体内部の検索を行い各アプリケーション２１２の構造体を特定する。取得部１７８は、当該特定したアプリケーション２１２の構造体内部を解析し、各アプリケーション２１２の使用領域を取得する。取得部１７８は取得したアプリケーション２１２の使用領域等を領域ファイル１５１に記憶する。図７は領域ファイル１５１のレコードレイアウトを示す説明図である。領域ファイル１５１はＶＭＩＤ毎に各アプリケーション２１２の使用領域に関する情報を記憶している。領域ファイル１５１は識別情報フィールド、使用領域フィールド、サイズフィールド及びブロック番号フィールドを含む。
【００３０】
識別情報フィールドには、中断時に実行していたアプリケーション２１２を特定するための固有の識別情報が記憶される。この識別情報は、アプリケーション名、アプリケーション２１２に付与される固有のＩＤ、アプリケーション名及び当該アプリケーション２１２のファイル名、パス、フォルダ名、ブラウザ名及びＷｅｂページ名、メーラ及びトレイ名、並びに、メーラ及びメールタイトル等である。例えば文書作成アプリケーションの場合、アプリケーション名及び文書のファイル名が識別情報として記憶される。また、エクスプローラ等のフォルダ内部を表示するアプリケーション２１２の場合、フォルダ名、またはパス等が識別情報として記憶される。
【００３１】
アプリケーション２１２がブラウザである場合、ブラウザ名及び中断時に表示していたＷｅｂページを特定するためのＷｅｂページ名またはＵＲＬ（Uniform Resource Locator）が識別情報として記憶される。またアプリケーション２１２がメーラの場合、メーラの種類、及び、トレイ名またはメールのフォルダ名等が識別情報として記憶される。本実施の形態においては、説明を容易にするためにアプリケーションＡが、文書作成アプリケーションでありファイル名が「文書Ａ」、アプリケーションＢが同じく文書作成アプリケーションでありファイル名が「文書Ｂ」であるものとして説明する。またアプリケーションＣが、プレゼンテーション用アプリケーションでありファイル名が「スライドＣ」であるものとして説明する。
【００３２】
アプリケーション２１２の識別情報に対応づけて使用領域フィールドには使用領域が記憶されている。例えばアプリケーションＡの使用領域は仮想アドレスｃ〜ｄと記憶されている。サイズフィールドには、各アプリケーション２１２が使用する使用領域のサイズを記憶している。なお、本実施の形態においては使用領域に関する情報として識別情報及び使用領域を例としてあげたがこれに限るものではない。例えば、使用領域に関する情報として識別情報、及び各アプリケーション２１２の先頭仮想アドレスとサイズとを記憶するようにしても良い。この場合、先頭仮想アドレス及びサイズから、各識別情報に対応する使用領域が算出される。ブロック番号フィールドにはＨＤ１５へのスワップ先のアドレスが記憶されている。中断時においてアプリケーション２１２が使用するＲＡＭ１２内の情報がＨＤ１５へスワップされている場合、スワップ先の番号が記憶される。図７の例ではアプリケーションＣについてスワップ先の番号が記憶されている。ブロック番号が存在している場合は、その領域がＯＳ２１１によってスワップインされるアドレスが未定なため、使用領域は無効である。また、スワップインはＯＳ２１１によって行われるため、ブロック番号は、ＨＤ１５からスワップインすべき情報をあらかじめ読み込んでおくために使用する。つまり、キャッシュとしてメモリに読み込んでおくことで、ＯＳ２１１のスワップインの処理のときに、ＨＤ１５から読み込む時間を短縮することが目的である。
【００３３】
取得部１７８は上述した如くＯＳ２１１からアプリケーション２１２を特定し、特定したアプリケーション２１２についてＯＳ２１１内の構造体を解析することでアプリケーション名及びファイル名を抽出する。取得部１７８は抽出したアプリケーション２１２のアプリケーション名及びファイル名を識別情報として領域ファイル１５１に記憶する。また取得部１７８はＯＳ２１１を解析しアプリケーション２１２の使用領域を取得し、領域ファイル１５１に記憶する。また、取得部１７８はＯＳ２１１を解析し、アプリケーション２１２の情報がＨＤ１５にスワップされていると判断した場合、スワップ先のブロック番号を領域ファイル１５１に記憶する。
【００３４】
選択部１７２は領域ファイル１５１を参照し、アプリケーション２１２の識別情報を選択するための選択画面をＨＤ１５から読み出す。選択部１７２は選択画面をコンピュータ３へ出力する。図８は選択画面のイメージを示す説明図である。選択部１７２は領域ファイル１５１から起動対象となるＶＭＩＤに対応する識別情報を読み出す。選択部１７２はテンプレートとなる基本選択画面に、読み出した識別情報を記述し、選択画面３４を生成する。図８に示す如く、選択画面３４には、複数のアプリケーション２１２の識別情報が表示され、識別情報に対応する選択項目が表示される。以下では識別情報に対応する選択項目をチェックボックス３４１という。ユーザはコンピュータ３のマウス等から優先的に復元を希望するアプリケーション２１２の識別情報に対応するチェックボックス３４１をクリックし、決定ボタン３４２をクリックする。なお識別情報に対応する選択項目を出力する際は、チェックボックス３４１に代えて、ハイパーリンク（図示せず）を選択項目として出力しても良い。この場合、選択部１７２は識別情報を特定するための情報が付加されたハイパーリンクを識別情報に対応づけて記述する。選択部１７２は、当該ハイパーリンクに対する入力操作をコンピュータ３から受け付ける。
【００３５】
コンピュータ３にて選択された識別情報はＮＩＣ１６を介して、選択部１７２により受け付けられる。選択部１７２は選択された識別情報を復元部１７３へ出力する。本実施の形態においては文書作成アプリケーション「文書Ａ」（アプリケーションＡ）が選択されたものとして説明する。復元部１７３はＶＭ２１が使用するＲＡＭ１２の割り当てを行う。そして、復元部１７３はハードウェア情報ファイル１５２に記憶されたＶＭＩＤに対応するハードウェア情報を読み出す。復元部１７３はＲＡＭ１２に読み出したハードウェア情報を復元する。さらに、復元部１７３は取得部１７８が取得したＯＳ２１１をＲＡＭ１２の割り当てた領域に復元する。
【００３６】
続いて、復元部１７３は領域ファイル１５１に記憶した使用領域に関する情報に基づいて特定されるＲＡＭ１２上の使用領域へ「文書Ａ」の情報を復元する。復元部１７３は選択された識別情報「文書Ａ」に対応する使用領域を領域ファイル１５１から読み出す。復元部１７３は読み出した使用領域を元に、保存ファイル１５３からアプリケーションＡの復元に必要な情報を読み出す。そして復元部１７３は読み出した情報をＲＡＭ１２上の読み出した使用領域へ復元する。図９はページテーブル１７５のレコードレイアウトを示す説明図である。復元部１７３はページテーブル１７５に仮想アドレスと物理アドレスとの対応関係を記憶する。復元部１７３は復元の際、仮想アドレスに対応づけて復元先となるＲＡＭ１２の物理アドレスをページテーブル１７５に記憶する。コンピュータ３からアプリケーションＡの操作命令を受け付けた場合、優先的に復元された仮想アドレスに対応する物理アドレスがページテーブル１７５から読み出されて処理が実行される。
【００３７】
復元部１７３は優先的に復元するアプリケーションＡの復元を終えた後、他のアプリケーションＢ，Ｃの復元を同様に行う。なお上述した各種ファイルのレコードレイアウトはあくまで一例でありこれに限るものではない。データ間の関連づけが確保されているのであれば、他のデータの持ち方を採用しても良い。また保存ファイル１５３等は必ずしも物理マシン１内のＨＤ１５に記憶する必要はなく、ＮＩＣ１６を介して接続される図示しないデータベース内に記憶し、適宜情報の書き込み及び読み出しを行っても良い。また本実施の形態においては「文書Ａ」のみを選択する例を挙げたがこれに限るものではない。選択部１７２は、複数の識別情報を選択順位と共に、コンピュータ３から受け付けても良い。この場合、復元部１７３は複数の選択されたアプリケーション２１２，２１２，・・・の内、選択順位が高いアプリケーション２１２から優先的に復元する。例えば識別情報「文書Ａ」が選択順位「１」、識別情報「文書Ｂ」が選択順位「２」であるとする。選択部１７２はコンピュータ３から複数の識別情報及び選択順位の組み合わせを受け付ける。復元部１７３は選択順位を参照し、識別情報「文書Ａ」に係るアプリケーション２１２を先に復元する。「文書Ａ」の復元後、復元部１７３は、選択順位に従い、識別情報「文書Ｂ」に係るアプリケーション２１２の復元を行う。
【００３８】
図１０は復元処理の遷移を模式的に示す説明図である。図１０Ａは中断時におけるＲＡＭ１２の状態を示す説明図である。中断時にはアプリケーションＡ、アプリケーションＢ及びアプリケーションＣがそれぞれＲＡＭ１２を使用している。図１０Ｂは優先的にアプリケーションＡを復元する際のＲＡＭ１２の状態を示す説明図である。選択されたアプリケーションＡの使用領域ｃ〜ｄについて情報が復元されている。図１０Ｃは優先的に復元したアプリケーションＡの後に、アプリケーションＢが復元されている状態を示す説明図である。アプリケーションＡに次いでアプリケーションＢが使用領域ｅ〜ｆに復元されている。
【００３９】
図１０Ｄは復元が完了した際のＲＡＭ１２の状態を示す説明図である。最後に使用領域ｆ〜ｇにアプリケーションＣの情報が復元される。なお、図１０Ｂの如くアプリケーションＢ及びアプリケーションＣの復元が完了していない場合、復元部１７３はページフォルトを発生させ、ＨＤ１５から対応する情報をＲＡＭ１２に復元する。具体的には、復元部１７３は仮想アドレスに対するアクセスをコンピュータ３から受け付けた場合、ページテーブル１７５の対応する物理アドレスを参照する。ここで復元部１７３は物理アドレスが存在しないと判断した場合、領域ファイル１５１の使用領域に対応する情報を保存ファイル１５３から読み出す。そして復元部１７３は読み出した情報をＲＡＭ１２に復元する。
【００４０】
例えばアプリケーションＣの使用領域ｆ〜ｇに対する操作命令を受け付けた場合、ＨＤ１５内の保存ファイル１５３に記憶された情報の内、使用領域ｆ〜ｇに対応する情報を読み出して、ＲＡＭ１２に復元する。なお、上述した保存部１７１等の制御モジュール１７０が実行する処理はＣＰＵ１１が行う。
【００４１】
図１１及び図１２は中断処理の手順を示すフローチャートである。ユーザは物理マシン１の起動後に使用を希望するＶＭ２をコンピュータ３にて指定する。コンピュータ３はＶＭ２のＶＭＩＤ及び起動命令を物理マシン１へ出力する。物理マシン１の起動部１７９はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ１１１）。起動部１７９はＶＭ２を起動する（ステップＳ１１２）。ＶＭ２上ではＯＳ２１１が起動する。ＶＭ管理部１７４はＶＭＩＤに対応づけて状態「運転」を記憶する（ステップＳ１１３）。またコンピュータ３からアプリケーション２１２の起動命令を受け付けた場合、ＶＭ２上のＯＳ２１１はアプリケーション２１２を起動する（ステップＳ１１４）。本例では複数のアプリケーションＡ，Ｂ，Ｃが起動されているものとして説明する。
【００４２】
ユーザはＶＭ２の中断を希望する場合コンピュータ３から中断命令を入力する。コンピュータ３はＶＭ２の中断命令及び対象となるＶＭＩＤを出力する。中断部１７６はＮＩＣ１６を介してコンピュータ３からＶＭ２の中断命令及びＶＭＩＤを受け付けたか否かを判断する（ステップＳ１１５）。中断部１７６はＶＭＩＤの中断命令を受け付けていないと判断した場合（ステップＳ１１５でＮＯ）、処理をステップＳ１１４へ戻す。一方、中断部１７６はＶＭ２の中断命令及びＶＭＩＤを受け付けたと判断した場合（ステップＳ１１５でＹＥＳ）、中断命令を保存部１７１へ出力する。ここでは、中断部１７６への中断命令の出力例を示したが、コンピュータ３において、ＶＭ２上のＯＳ２１１に対して中断命令を発行することも可能である。その際は、ＯＳ２１１から中断命令が中断部１７６へ出力される。
【００４３】
保存部１７１はＲＡＭ１２内の中断対象のＶＭ２に係るハードウェア情報をハードウェア情報ファイル１５２に、ＶＭＩＤに対応づけて記憶する（ステップＳ１１６）。この場合保存部１７１は時計部１８から出力される時刻を中断開始時刻としてＶＭＩＤに対応づけてハードウェア情報ファイル１５２に記憶する（ステップＳ１１７）。保存部１７１は中断対象のＶＭ２が使用しているＲＡＭ１２内の情報をＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ１１８）。
【００４４】
保存部１７１は時計部１８から出力される時刻を中断開始時刻としてＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ１１９）。その他保存部１７１は中断対象となるＶＭ２が使用するＲＡＭ１２の使用領域（アドレス）及びサイズをＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ１２１）。保存部１７１はステップＳ１２１の処理が完了した場合、完了情報を中断部１７６へ出力する。中断部１７６は完了情報を受信した場合、中断対象のＶＭ２が使用していたＲＡＭ１２等のハードウェアリソース１０を解放する（ステップＳ１２２）。ＶＭ管理部１７４はＶＭＩＤに対応づけて状態「中断」を記憶する（ステップＳ１２３）。
【００４５】
図１３は領域ファイル１５１の生成処理の手順を示すフローチャートである。中断状態にあるＶＭ２の起動を希望するユーザは、コンピュータ３から起動命令及び起動対象のＶＭＩＤを出力する。なお、コンピュータ３からＶＭＩＤを出力する代わりに、コンピュータ３のハードウェアのＭＡＣ（Media Access Control address）を物理マシン１へ出力するようにしても良い。この場合、物理マシン１はＭＡＣアドレスとＶＭＩＤとを対応づけており、ＶＭＩＤに対応するＶＭ２を起動することができる。またＶＭ２を特定できるものであれば、ユーザＩＤ、または、コンピュータ名等であっても良い。
【００４６】
起動部１７９はＮＩＣ１６を介して、ＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ１３１）。起動部１７９は起動命令を取得部１７８へ出力する。取得部１７８はＯＳ２１１内部を解析し、中断時に使用していた各アプリケーション２１２を特定すると共に、各アプリケーション２１２が使用していたＲＡＭ１２の使用領域を取得する。取得部１７８はまずＶＭＩＤを参照し、保存ファイル１５３から対応するＶＭ２の情報の内、ＯＳ２１１を読み出す（ステップＳ１３２）。取得部１７８はＯＳ２１１内の各アプリケーション２１２へアクセスするための変数であるプロセスリストのアドレスを特定する（ステップＳ１３３）。
【００４７】
取得部１７８は取得したプロセスリストのアドレスを参照し、ＯＳ２１１内に存在する構造体内部の検索を行い、各アプリケーション２１２の構造体を特定する（ステップＳ１３４）。取得部１７８は、当該特定したアプリケーション２１２の構造体内部を解析し、各アプリケーション２１２の使用領域を取得する（ステップＳ１３５）。取得部１７８は取得した使用領域に基づき当該使用領域のサイズを算出する（ステップＳ１３６）。
【００４８】
取得部１７８はアプリケーション２１２の構造体内部を解析し、各アプリケーション２１２のアプリケーション名及びファイル名を識別情報として取得する（ステップＳ１３７）。取得部１７８はＶＭＩＤ及び識別情報に対応づけて、取得した使用領域及びサイズを領域ファイル１５１に記憶する（ステップＳ１３８）。さらに取得部１７８は各アプリケーション２１２の構造体内部を解析し、スワップアウト状態が存在するか否かを判断する（ステップＳ１３９）。取得部１７８はスワップアウト状態が存在すると判断した場合（ステップＳ１３９でＹＥＳ）、退避先であるＨＤ１５のブロック番号を取得する（ステップＳ１３１０）。
【００４９】
取得部１７８はＶＭＩＤに対応づけて取得したアプリケーション２１２に係るブロック番号を、領域ファイル１５１に記憶する（ステップＳ１３１１）。取得部１７８はスワップアウト状態が存在しないと判断した場合（ステップＳ１３９でＮＯ）、ステップＳ１３１０及びＳ１３１１の処理をスキップする。
【００５０】
図１４乃至図１６は復元処理の手順を示すフローチャートである。図１３において述べた領域ファイル１５１の生成と同じく、中断状態にあるＶＭ２を起動する際にはＣＰＵ１１は以下の処理を行う。中断状態にあるＶＭ２の起動を希望するユーザは、コンピュータ３から起動命令及び起動対象のＶＭＩＤを出力する。起動部１７９はＮＩＣ１６を介して、ＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ１４１）。起動部１７９は起動命令を復元部１７３へ出力する。復元部１７３はハードウェア情報ファイル１５２からＶＭＩＤに対応するハードウェア情報を読み出す（ステップＳ１４２）。復元部１７３は起動対象となるＶＭ２にＲＡＭ１２の使用領域の割り当てを行う（ステップＳ１４３）。
【００５１】
復元部１７３はステップＳ１４２で読み出したＶＭ２のハードウェア情報を、ＲＡＭ１２に記憶する（ステップＳ１４４）。復元部１７３はＶＭＩＤに対応するＯＳ２１１を保存ファイル１５３から読み出す。復元部１７３は読み出したＯＳ２１１をステップＳ１４３で割り当てたＲＡＭ１２の領域に記憶する（ステップＳ１４５）。選択部１７２はＨＤ１５から予め記憶したテンプレートとなる基本選択画面を読み出す（ステップＳ１４６）。選択部１７２は領域ファイル１５１からＶＭＩＤに対応する識別情報を読み出す（ステップＳ１４７）。
【００５２】
選択部１７２は読み出した基本選択画面に識別情報を記述し、選択画面３４を生成する（ステップＳ１４８）。選択部１７２は生成した選択画面３４を、ＮＩＣ１６を介してコンピュータ３へ出力する（ステップＳ１４９）。これにより、コンピュータ３の表示部には図８に示す選択画面３４が表示される。ユーザはコンピュータ３に表示される識別情報の内優先的に復元を希望する識別情報を選択する。ユーザはマウス等を介して識別情報を選択するためのチェックボックス３４１をクリックし、決定ボタン３４２をクリックする。コンピュータ３は決定ボタン３４２のクリックをトリガに、ＶＭＩＤ及び識別情報を選択情報として物理マシン１へ出力する。
【００５３】
選択部１７２はＮＩＣ１６を介して、ＶＭＩＤ及び識別情報の入力を受け付ける（ステップＳ１４１０）。選択部１７２は選択された識別情報を復元部１７３へ出力する。復元部１７３は受け付けた識別情報に対応する使用領域を領域ファイル１５１から読み出す（ステップＳ１５２）。復元部１７３は、ＶＭＩＤに対応する当該使用領域の情報を保存ファイル１５３から読み出す（ステップＳ１５３）。
【００５４】
復元部１７３は読み出したアプリケーション２１２の情報を、ステップＳ１４３で割り当てたＲＡＭ１２に対して、ステップＳ１５２で読み出した使用領域に復元する（ステップＳ１５４）。使用領域は、ステップＳ１４３で割り当てられたＲＡＭ１２の領域に対して、相対的な領域となる。以降、使用領域（仮想アドレス）をＲＡＭ１２に復元する処理は、割り当てたＲＡＭ１２への相対的な領域とする。復元部１７３は情報を使用領域に復元する場合、ページテーブル１７５に使用領域に対応するＲＡＭ１２の物理アドレスを記憶する（ステップＳ１５５）。復元部１７３はステップＳ１５３で読み出した情報が使用領域内に全て復元されたか否かを判断する（ステップＳ１５６）。
【００５５】
復元部１７３は復元が終了していないと判断した場合（ステップＳ１５６でＮＯ）、ステップＳ１５４へ移行し処理を繰り返す。復元部１７３は復元が終了したと判断した場合（ステップＳ１５６でＹＥＳ）、復元完了情報をＶＭ管理部１７４へ出力する。ＶＭ管理部１７４は復元完了情報を受け付けた場合、状態を「運転」と記憶する（ステップＳ１５１４）。復元部１７３は、ステップＳ１４１０で受け付けた識別情報以外の情報を復元する。すなわちユーザが優先処理を希望しなかった他のアプリケーション２１２の復元処理を行う。復元部１７３は他のアプリケーション２１２の使用領域を領域ファイル１５１から読み出す（ステップＳ１５７）。
【００５６】
復元部１７３はＶＭＩＤに対応する使用領域の情報を保存ファイル１５３から読み出す（ステップＳ１５８）。復元部１７３は読み出した他のアプリケーション２１２の情報を、ステップＳ１４３でＶＭ２に割り当てたＲＡＭ１２に対して、ステップＳ１５７で読み出したＲＡＭ１２の使用領域に復元する（ステップＳ１５９）。復元部１７３はＲＡＭ１２の使用領域（仮想アドレス）に情報が記憶される度に、ページテーブル１７５に使用領域に対応するＲＡＭ１２の物理アドレスを記憶する（ステップＳ１５１１）。復元部１７３は復元が完了したか否かを判断する（ステップＳ１５１２）。
【００５７】
復元部１７３は復元が完了していないと判断した場合（ステップＳ１５１２でＮＯ）、ステップＳ１５９へ移行し処理を繰り返す。復元部１７３は復元が完了したと判断した場合（ステップＳ１５１２でＹＥＳ）、領域ファイル１５１に記憶した全ての識別情報に係るアプリケーション２１２の情報の復元が完了したか否かを判断する（ステップＳ１５１３）。復元部１７３は全てのアプリケーション２１２に係る情報の復元が完了していないと判断した場合（ステップＳ１５１３でＮＯ）、ステップＳ１５７へ移行し、未復元の識別情報に係るアプリケーション２１２の情報の復元を繰り返し実行する。
【００５８】
復元部１７３は全ての識別情報に係るアプリケーション２１２の情報の復元が完了したと判断した場合（ステップＳ１５１３でＹＥＳ）、処理を完了する。
【００５９】
図１７及び図１８はページフォルト処理の手順を示すフローチャートである。ステップＳ１５７乃至Ｓ１５１３の処理が完了するまでの間に、ＲＡＭ１２の物理アドレスに対応する情報が復元されていない場合、ページフォルト処理を実行する。
【００６０】
復元部１７３は、コンピュータ３から復元中のＲＡＭ１２へアプリケーション２１２に対するアクセス要求が存在するか否かを判断する（ステップＳ１６１）。復元部１７３はアクセス要求が存在しないと判断した場合（ステップＳ１６１でＮＯ）、以上の処理を繰り返す。一方、復元部１７３はアクセス要求があったと判断した場合（ステップＳ１６１でＹＥＳ）、ページテーブル１７５に仮想アドレスに対応する物理アドレスが存在するか否かを判断する（ステップＳ１６２）。
【００６１】
復元部１７３は物理アドレスが存在すると判断した場合（ステップＳ１６２でＹＥＳ）、既に当該アプリケーション２１２に対する復元が完了しているとして、ＲＡＭ１２から情報を読み出し（ステップＳ１６３）、処理を進行する。
【００６２】
その後処理を再びＳ１６１へ戻す。復元部１７３はアクセスのあった仮想アドレスに対する物理アドレスがページテーブル１７５に存在しないと判断した場合（ステップＳ１６２でＮＯ）、復元が完了していないことからページフォルト処理を以下のとおり行う。
【００６３】
復元部１７３は仮想アドレスに対応する情報を保存ファイル１５３から読み出す（ステップＳ１６９）。
【００６４】
復元部１７３は読み出した情報をＲＡＭ１２の使用領域（仮想アドレス）に復元する（ステップＳ１７１）。復元部１７３はページテーブル１７５に仮想アドレスに対応する物理アドレスを記憶する（ステップＳ１７２）。これにより、中断状態にあるＶＭ２を起動する場合、ユーザの希望するアプリケーション２１２を優先的に復元することが可能となる。また、他のアプリケーション２１２の使用するＲＡＭ１２については、バックグラウンドやページフォルトなどにより復元することが可能である。
【００６５】
実施の形態２
実施の形態２は中断前にアプリケーション２１２が使用するＲＡＭ１２の使用領域を領域ファイル１５１に記憶する形態に関する。図１９は実施の形態２に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。物理マシン１には履歴ファイル１５４が設けられる。図２０は履歴ファイル１５４のレコードレイアウトを示す説明図である。履歴ファイル１５４はアプリケーション２１２のＶＭ２別に、識別情報に対応づけて起動時刻を記憶している。なお、図２０の例はＶＭ２１のアプリケーション２１２の履歴ファイルを示している。各ＶＭ２のＯＳ２１１は、各ＶＭ２にて起動中のアプリケーション２１２のアプリケーション名、ファイル名及び使用領域等に関する情報を取得部１７８へ出力する。取得部１７８は履歴ファイル１５４にアプリケーション２１２の使用に関する履歴情報を記憶する。
【００６６】
履歴ファイル１５４はアプリケーション名フィールド、ファイル名フィールド、及び起動時刻フィールドを含む。本実施の形態においてはアプリケーション名及びファイル名を実行中のアプリケーション２１２を特定するための識別情報であるものとして説明する。アプリケーション名フィールドには、ＶＭ２毎に、ＶＭ２にて実行中のアプリケーション名が記憶される。ファイル名フィールドには、アプリケーション名に対応づけて実行中のアプリケーション２１２に係るファイル名が記憶されている。起動時刻フィールドには、各アプリケーション２１２が起動した際に時計部１８から出力されるアプリケーション２１２の使用開始時刻（以下、起動時刻という）を記憶している。なお、本実施の形態においては、説明を容易にするために日時のみを表示しているが、年も同様に記憶しても良いことはもちろんである。
【００６７】
ＶＭ２のＯＳ２１１はアプリケーション２１２が起動する度に、起動中のアプリケーション名及びファイル名を取得部１７８へ出力する。取得部１７８は取得したアプリケーション及びファイル名をＶＭ２毎に履歴ファイル１５４に記憶する。また取得部１７８は時計部１８の出力を参照し起動時刻を履歴ファイル１５４に記憶する。なお、起動時刻もＯＳ２１１から取得しても良い。図２１は実施の形態２に係る領域ファイル１５１のレコードレイアウトを示す説明図である。領域ファイル１５１はアプリケーション名フィールド、ファイル名フィールド、使用領域フィールド、及び、サイズフィールド等を含む。アプリケーション名フィールドにはＶＭ２にて実行中のアプリケーション名がＶＭ２毎に記憶されている。またファイル名フィールドには実行中のアプリケーション２１２に係るファイル名が記憶されている。
【００６８】
使用領域フィールドには識別情報に対応づけてアプリケーション２１２のファイルが使用しているＲＡＭ１２の使用領域を記憶している。サイズフィールドには識別情報に対応づけてアプリケーション２１２のファイルが使用しているＲＡＭ１２の使用領域のサイズを記憶している。なお、ブロック番号は実施の形態１で述べたとおりであるので説明を省略する。ＶＭ２のＯＳ２１１はアプリケーション２１２の起動、ＲＡＭ１２の使用領域の変更、及び、停止等があった場合、アプリケーション名、ファイル名及び使用領域の情報を取得部１７８へ出力する。
【００６９】
取得部１７８は取得したアプリケーション名、ファイル名及び使用領域をＶＭ２に対応づけて領域ファイル１５１に記憶する。また取得部１７８は取得した使用領域からサイズを算出し、識別情報に対応づけて領域ファイル１５１に記憶する。ＶＭ２のＯＳ２１１により起動中のアプリケーション２１２に関する情報が収集される。なお、実施の形態１と同様に取得部１７８は各ＶＭ２が使用するＲＡＭ１２のＯＳ２１１から一定時間毎にアプリケーション名、ファイル名及び使用領域を取得するようにしても良い。
【００７０】
図２２及び図２３は中断処理の手順を示すフローチャートである。ユーザは物理マシン１の起動後に使用を希望するＶＭ２をコンピュータ３にて指定する。コンピュータ３はＶＭ２のＶＭＩＤ及び起動命令を物理マシン１へ出力する。物理マシン１の起動部１７９はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ２２１）。起動部１７９はＶＭ２を起動する（ステップＳ２２２）。ＶＭ２上ではＯＳ２１１が起動する。ＶＭ管理部１７４はＶＭＩＤに対応づけて状態「運転」を記憶する（ステップＳ２２３）。
【００７１】
ＯＳ２１１はアプリケーション２１２の起動命令を受け付けたか否かを判断する（ステップＳ２２４）。ＯＳ２１１は起動命令を受け付けたと判断した場合（ステップＳ２２４でＹＥＳ）、起動したアプリケーション名及びファイル名を取得部１７８へ出力する（ステップＳ２２５）。取得部１７８はアプリケーション名及びファイル名を取得する。取得部１７８は取得したアプリケーション名、ファイル名及び時計部１８から出力される時刻を起動時刻としてＶＭＩＤに対応づけて履歴ファイル１５４に記憶する（ステップＳ２２６）。なお、アプリケーション２１２の終了命令を受け付けた場合、終了命令を受けたアプリケーション名、ファイル名及び起動時刻を履歴ファイル１５４から削除する。
【００７２】
ＯＳ２１１はアプリケーション名、ファイル名及び起動したアプリケーション２１２が使用するＲＡＭ１２の使用領域を取得部１７８へ出力する（ステップＳ２２７）。取得部１７８はアプリケーション名、ファイル名及び使用領域を取得する。取得部１７８はアプリケーション名、ファイル名及び使用領域を領域ファイル１５１にＶＭＩＤに対応づけて記憶する（ステップＳ２２８）。ＯＳ２１１はアプリケーション２１２の起動命令を受け付けていない場合（ステップＳ２２４でＮＯ）、ステップＳ２２５乃至Ｓ２２８の処理をスキップする。
【００７３】
ＯＳ２１１は起動中のアプリケーション２１２のＲＡＭ１２に対する使用領域に変更があったか否かを判断する（ステップＳ２２９）。ＯＳ２１１は使用領域に変更があったと判断した場合（ステップＳ２２９でＹＥＳ）、アプリケーション名、ファイル名及び変更後の使用領域を取得部１７８へ出力する（ステップＳ２３１）。取得部１７８はアプリケーション名、ファイル名及び変更後の使用領域をＶＭＩＤに対応づけて領域ファイル１５１に記憶する（ステップＳ２３２）。これにより、アプリケーション名及びファイル名毎に、使用履歴の情報が更新される。なお、アプリケーション２１２の終了命令を受け付けた場合、終了命令を受けたアプリケーション名、ファイル名及び使用領域を領域ファイル１５１から削除する。
【００７４】
ＯＳ２１１は起動中のアプリケーション２１２の使用領域に変更がないと判断した場合（ステップＳ２２９でＮＯ）、ステップＳ２３１及びＳ２３２の処理をスキップする。ユーザはＶＭ２の中断を希望する場合コンピュータ３から中断命令を入力する。コンピュータ３はＶＭ２の中断命令及び対象となるＶＭＩＤを出力する。中断部１７６はＮＩＣ１６を介してコンピュータ３からＶＭ２の中断命令及びＶＭＩＤを受け付けたか否かを判断する（ステップＳ２３３）。中断部１７６はＶＭＩＤの中断命令を受け付けていないと判断した場合（ステップＳ２３３でＮＯ）、処理をステップＳ２２４へ戻す。一方、中断部１７６はＶＭ２の中断命令及びＶＭＩＤを受け付けたと判断した場合（ステップＳ２３３でＹＥＳ）、中断命令を保存部１７１へ出力する。
【００７５】
保存部１７１はＲＡＭ１２内の中断対象のＶＭ２に係るハードウェア情報をハードウェア情報ファイル１５２に、ＶＭＩＤに対応づけて記憶する（ステップＳ２３４）。この場合保存部１７１は時計部１８から出力される時刻を中断開始時刻としてＶＭＩＤに対応づけてハードウェア情報ファイル１５２に記憶する（ステップＳ２３５）。保存部１７１は中断対象のＶＭ２が使用しているＲＡＭ１２内の情報をＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ２３６）。
【００７６】
保存部１７１は時計部１８から出力される時刻を中断開始時刻としてＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ２３７）。その他保存部１７１は中断対象となるＶＭ２が使用するＲＡＭ１２の使用領域及びサイズをＶＭＩＤに対応づけて保存ファイル１５３に記憶する（ステップＳ２３８）。保存部１７１はステップＳ２３８の処理が完了した場合、完了情報を中断部１７６へ出力する。
【００７７】
中断部１７６は完了情報を受信した場合、中断対象のＶＭ２が使用していたＲＡＭ１２等のハードウェアリソース１０を解放する（ステップＳ２３９）。ＶＭ管理部１７４はＶＭＩＤに対応づけて状態「中断」を記憶する（ステップＳ２３１０）。中断後起動命令を受け付けた場合の処理は、図１４乃至図１６で述べたとおりであるので説明を省略する。ステップＳ２２９では、ＯＳ２１１によりアプリケーション２１２の使用領域変更を判断しているが、これ以外にも、アプリケーション２１２が使用する領域として、ＯＳ２１１の領域も含めるようにしてもよい。その場合は、ステップＳ１４５はスキップすることになる。なお、図８で示した選択画面３４の出力は起動時に表示する例を挙げて説明するがこれに限るものではない。
【００７８】
実施の形態２においては中断時に領域ファイル１５１を参照し、ＶＭ２が中断する前に起動後に優先的に復元するアプリケーション２１２の識別情報の入力を受け付けても良い。図２４及び図２５は中断する前に識別情報の入力を受け付ける際の手順を示すフローチャートである。ステップＳ２３３からＳ２３８までの間に以下の処理を行う。中断部１７６はＮＩＣ１６を介してコンピュータ３からＶＭＩＤ及びＶＭ２の中断命令を受け付ける（ステップＳ２４１）。中断部１７６は選択部１７２に対し中断命令を出力する。選択部１７２はＨＤ１５から基本選択画面を読み出す（ステップＳ２４２）。
【００７９】
選択部１７２は起動中であったＶＭＩＤに対応するアプリケーション名及びファイル名を領域ファイル１５１から読み出す（ステップＳ２４３）。選択部１７２はアプリケーション名及びファイル名を基本選択画面に記述し、選択画面３４を生成する（ステップＳ２４４）。選択部１７２は選択画面３４を、ＮＩＣ１６を介してコンピュータ３へ出力する（ステップＳ２４５）。これにより、コンピュータ３の表示部には図８に示す選択画面３４が表示される。ユーザはコンピュータ３に表示される識別情報の内優先的に復元を希望する識別情報を選択する。ユーザはマウス等を介して識別情報を選択するためのチェックボックス３４１をクリックし、決定ボタン３４２をクリックする。コンピュータ３は決定ボタン３４２のクリックをトリガに、ＶＭＩＤ及び識別情報を物理マシン１へ出力する。
【００８０】
選択部１７２はＮＩＣ１６を介して、ＶＭＩＤの他、アプリケーション名及びファイル名の入力を受け付ける（ステップＳ２４６）。選択部１７２はＨＤ１５に受け付けたアプリケーション名及びファイル名をＶＭＩＤに対応づけて記憶する（ステップＳ２４７）。その後、ステップＳ２３９及びＳ２３１０の処理を経て中断対象のＶＭ２は中断する。
【００８１】
続いて起動時の処理を説明する。起動部１７９はＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ２４８）。起動部１７９は起動命令を受け付けていない場合（ステップＳ２４８でＮＯ）、起動命令を受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ２４８でＹＥＳ）、起動対象のＶＭＩＤに係るアプリケーション名及びファイル名をＨＤ１５から読み出す（ステップＳ２４９）。起動部１７９は復元部１７３にＶＭＩＤ及び起動命令を出力する。
【００８２】
復元部１７３は読み出したアプリケーション名及びファイル名に対応する使用領域を領域ファイル１５１から読み出す（ステップＳ２５１）。復元部１７３は読み出したＶＭＩＤに対応する使用領域の情報を保存ファイル１５３から読み出す（ステップＳ２５２）。復元部１７３は読み出したアプリケーション２１２のファイルに係る情報をＲＡＭ１２の使用領域に復元する（ステップＳ２５３）。以降の処理はステップＳ１５５と同様であるので詳細な説明は省略する。これにより、中断時または起動時にユーザに優先的に復元を希望するアプリケーション２１２を選択させることが可能となる。
【００８３】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。また、起動時の処理の詳細を省略しているが、起動命令を受け付けた後、ＶＭ２へのＲＡＭ１２割り当てやＯＳ２１１の読み出しなど、実施の形態１で述べた処理を行う。起動時の処理については、以降についても同様に省略することがある。
【００８４】
実施の形態３
実施の形態３は履歴情報に基づき優先的に復元するアプリケーション２１２を選択する形態に関する。選択部１７２はＶＭ２の起動の際、履歴ファイル１５４を参照し、中断時に使用していたアプリケーション２１２の起動時刻を履歴ファイル１５４から読み出す。選択部１７２は起動の際、時計部１８から出力される現在時刻を取得する。選択部１７２は各アプリケーション２１２の起動時刻と現在時刻とに基づき、優先的に復元するアプリケーション２１２を選択する。これは起動時刻の年月日を除き、起動時刻と現在時刻との差分が小さいものを選択するようにすればよい。また選択する数は予めＨＤ１５に記憶しておけばよい。本例では説明を容易にするために１つのアプリケーション２１２を選択する例を説明する。
【００８５】
その他、現在時刻以降の時間帯であって、かつ、起動時刻の年月日を除き起動時刻と現在時刻との差分が小さいものを選択するようにしても良い。その他、現在時刻から所定期間内（例えば３日間以内）の年月日を有する起動時刻から選択するようにしても良い。本実施形態では一例として、現在時刻から所定期間内の年月日を有し、現在時刻以降の時間帯であって、かつ、起動時刻の年月日を除き起動時刻と現在時刻との差分が小さいものを選択する例を説明する。
【００８６】
図２６は選択処理の手順を示すフローチャートである。起動部１７９はＶＭＩＤ及びＶＭ２の起動命令を、ＮＩＣ１６を介して受け付ける（ステップＳ２６１）。選択部１７２は履歴ファイル１５４からＶＭ２の中断時に使用していたアプリケーション名、ファイル名及び起動時刻を読み出す（ステップＳ２６２）。選択部１７２は時計部１８から出力される年月日を含む時刻を現在時刻として取得する（ステップＳ２６３）。選択部１７２はＨＤ１５に予め記憶した所定期間を読み出す（ステップＳ２６４）。なお、この所定期間はコンピュータ３により適宜の期間を設定することが可能である。
【００８７】
選択部１７２は現在時刻から遡って所定期間内の起動時刻を有するアプリケーション名及びファイル名を読み出す（ステップＳ２６５）。これは例えば現在時刻から遡って３日以内の起動時刻を有するアプリケーション名及びファイル名を選択すればよい。選択部１７２は現在時刻から起動時刻までの経過時間を差分として算出する（ステップＳ２６６）。例えば現在時刻が午前１１時１０分、起動時刻が午後１２時１０分である場合、経過時刻である差分１時間となる。また現在時刻が午前１１時１０分、起動時刻が午前１０時１０分である場合、経過時刻である差分２３時間となる。
【００８８】
選択部１７２はステップＳ２６６で算出した差分が最も小さい起動時刻を有するアプリケーション名及びファイル名を選択する（ステップＳ２６７）。これにより、ユーザのＶＭ２の使用履歴に応じて最適なアプリケーション２１２を優先的に復元することが可能となる。
【００８９】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【００９０】
実施の形態４
実施の形態４はアプリケーション２１２の使用状況に応じて最適なアプリケーション２１２を選択する形態に関する。図２７はコンピュータ３の表示部に表示される画面イメージを示す説明図である。コンピュータ３を使用するユーザは運転中のＶＭ２にて、３つのアプリケーション２１２を使用している。表示部にはアプリケーション名「Ａ」、ファイル名「Ａ１」のアプリケーション２１２のウィンドウ３４３、アプリケーション名「Ｂ」、ファイル名「Ｂ１」のアプリケーション２１２のウィンドウ３４４、及び、アプリケーション名「Ｃ」、ファイル名「Ｃ１」のアプリケーション２１２のウィンドウ３４５が表示される。ユーザはコンピュータ３のマウス等により使用を希望するウィンドウ３４３、３４４、３４５（以下、場合によりＷで代表する）のいずれかを選択する。
【００９１】
選択されたウィンドウＷの情報はＮＩＣ１６を介してＯＳ２１１へ出力される。図の例ではウィンドウ３４３が選択されていることが理解できる。ここで、他のウィンドウ３４４及び３４５は非選択の状態である。この状態でウィンドウ３４４をクリックした場合、ウィンドウ３４４が選択されたことになり、逆にウィンドウ３４３及び３４５は非選択の状態となる。なお、ウィンドウＷをクリックして選択する以外にも、表示部下部に表示されるタスクバーに表示された矩形状のボタンをクリックすることによりウィンドウＷを選択しても良い。取得部１７８はＶＭＩＤ、アプリケーション名及びファイル名に対応づけて選択情報を履歴ファイル１５４に記憶する。選択情報はアプリケーション２１２が選択されているか否かを示す情報である。
【００９２】
図２８は履歴ファイル１５４のレコードレイアウトを示す説明図である。履歴ファイル１５４はアプリケーション２１２のＶＭ２別に、識別情報に対応づけて起動時刻及び選択情報を記憶している。なお、図２８の例はＶＭ２１のアプリケーション２１２の使用履歴を示している。履歴ファイル１５４はアプリケーション名フィールド、ファイル名フィールド、起動時刻フィールド、選択時刻フィールド、合計選択時間フィールド、及び、選択回数フィールド等を含む。ＯＳ２１１はアプリケーション２１２が起動した場合、アプリケーション名及びファイル名を取得部１７８へ出力する。取得部１７８はＯＳ２１１から出力されるアプリケーション名及びファイル名を取得し、履歴ファイル１５４へ記憶する。この際取得部１７８は時計部１８から出力される時刻を起動時刻として履歴ファイル１５４へ記憶する。なお、アプリケーション２１２全体、またはアプリケーション２１２の一のファイルが終了した場合、履歴ファイル１５４の対応するレコードは削除される。ここでは、例としてレコードを削除するが、起動時刻のレコードのみを無効として起動していないことを表し、それ以外のレコードを残すことで、終了を挟んでも履歴を継続して保持するようにしてもよい。
【００９３】
ＯＳ２１１はウィンドウＷが選択されているアプリケーション２１２のアプリケーション名及びファイル名を取得部１７８へ出力する。取得部１７８は選択時刻フィールドに、選択されているアプリケーション名及びファイル名に対応づけて、時計部１８からの出力を参照し、ウィンドウＷの選択されている時刻（以下、選択時刻という）を記憶する。例えば、図２８の例では、１２時２０分（選択開始時刻）から１２時２３分（選択終了時刻）まではアプリケーション名「Ａ」、ファイル名「Ａ１」のウィンドウ３４３が選択されている。また、１２時２３分から１２時２４分まではアプリケーション名「Ｂ」、ファイル名「Ｂ１」のウィンドウ３４４が選択されている。ＯＳ２１１はウィンドウＷの選択の変更がある度に変更後のアプリケーション名及びファイル名を出力する。
【００９４】
取得部１７８は図２８に示す如く、ＯＳ２１１からの変更後のアプリケーション名及びファイル名を参照し、選択時刻を履歴ファイル１５４に記憶する。このように履歴ファイル１５４には、アプリケーション２１２の使用に関する時刻情報及びアプリケーション２１２が選択されているか否かの選択情報が、選択時刻フィールドに逐次記憶される。取得部１７８は中断時には合計選択時間フィールドに、選択時刻の合計値をアプリケーション２１２毎に記憶する。具体的には取得部１７８は、アプリケーション名及びファイル名の選択時刻の合計値を算出し、合計選択時間として合計選択時間フィールドに記憶する。例えば、アプリケーション名「Ａ」及びファイル名「Ａ１」については、３分に１分を加算して４分と合計選択時間が記憶される。なお、本実施の形態においては説明を容易にするために秒および年月日の記載を省略している。
【００９５】
選択回数フィールドには、アプリケーション２１２毎に、ウィンドウＷが選択された回数が記憶されている。取得部１７８は選択時刻フィールドに記憶された時間帯の個数を計数することにより、アプリケーション名及びファイル名毎に選択回数を記憶する。例えばアプリケーション名「Ａ」及びファイル名「Ａ１」については、２回、アプリケーション名「Ｂ」及びファイル名「Ｂ１」については、１回と記憶されている。選択部１７２は選択時刻フィールドに記憶した情報にも基づき、優先して復元するアプリケーション２１２を選択する。本実施の形態においては一例として、選択部１７２は合計選択時間が最も長いアプリケーション２１２を選択する例を挙げて説明する。
【００９６】
図２９及び図３０は時刻情報及び選択情報の取得処理の手順を示すフローチャートである。ＯＳ２１１はＮＩＣ１６を介して、コンピュータ３からアプリケーション２１２に関する操作命令を受け付ける。ＯＳ２１１はアプリケーション２１２の起動命令を受け付けたか否かを判断する（ステップＳ２９１）。ＯＳ２１１は起動命令を受け付けたと判断した場合（ステップＳ２９１でＹＥＳ）、アプリケーション名及びファイル名を取得部１７８へ出力する（ステップＳ２９２）。
【００９７】
取得部１７８はアプリケーション名及びファイル名を取得し、また時計部１８から出力される時刻を参照し起動開始時刻を取得する（ステップＳ２９３）。取得部１７８は起動開始時刻を選択開始時刻に設定する。取得部１７８はアプリケーション名、ファイル名、起動開始時刻及び選択開始時刻を履歴ファイル１５４に記憶する（ステップＳ２９４）。これにより、履歴ファイル１５４の選択時刻フィールドには、アプリケーション２１２が選択されたことを示す選択情報、及び、選択され使用が開始されたことを示す時刻情報が記憶される。
【００９８】
ステップＳ２９１においてＯＳ２１１が起動命令を受け付けていないと判断した場合（ステップＳ２９１でＮＯ）、アプリケーション２１２の終了命令を受け付けたか否かを判断する（ステップＳ２９５）。ＯＳ２１１は終了命令を受け付けたと判断した場合（ステップＳ２９５でＹＥＳ）、終了対象のアプリケーション２１２のアプリケーション名及びファイル名を取得部１７８へ出力する。取得部１７８は終了対象のアプリケーション名及びファイル名を取得する。取得部１７８は、取得した終了対象のアプリケーション名、ファイル名、起動開始時刻及び選択時刻を履歴ファイル１５４から削除する（ステップＳ２９６）。
【００９９】
ＯＳ２１１は終了命令を受け付けていないと判断した場合（ステップＳ２９５でＮＯ）、アプリケーション２１２の選択命令を受け付けたか否かを判断する（ステップＳ２９７）。具体的にはＯＳ２１１はアプリケーション２１２のウィンドウＷがコンピュータ３のマウス等により指定されたか否かを判断する。ＯＳ２１１は選択命令を受け付けたと判断した場合（ステップＳ２９７でＹＥＳ）、選択されたアプリケーション２１２に係るアプリケーション名及びファイル名を取得部１７８へ出力する。取得部１７８は出力されたアプリケーション名及びファイル名を取得する。
【０１００】
取得部１７８はアプリケーション名及びファイル名に対応づけて選択開始時刻を記憶する（ステップＳ２９８）。取得部１７８はステップＳ２９７の段階で、既に他のアプリケーション２１２が選択されている場合、選択済みのアプリケーション名及びファイル名に対応づけて選択終了時刻を記憶する（ステップＳ２９９）。例えば、図２８の例では、１２時２３分にアプリケーション名「Ｂ」、ファイル名「Ｂ１」が、アプリケーション名「Ａ」、ファイル名「Ａ１」に代わり、新たに選択されている。この場合、アプリケーション名「Ｂ」、ファイル名「Ｂ１」が選択されたことを記憶すべく、アプリケーション名「Ｂ」、ファイル名「Ｂ１」に対応づけて選択開始時刻(12:23)を履歴ファイル１５４に記憶する。一方、選択が解除されたアプリケーション名「Ａ」、ファイル名「Ａ１」は、選択が解除されたことを記憶すべく、これに対応づけて、選択終了時刻(12:23）を記憶する。
【０１０１】
ＯＳ２１１がアプリケーション２１２の選択命令を受け付けていないと判断した場合（ステップＳ２９７でＮＯ）ステップＳ３０１へ移行する。また、ステップＳ２９４、Ｓ２９６及びＳ２９９の処理後も同様にステップＳ３０１へ移行する。中断部１７６はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の中断命令を受け付けたか否かを判断する（ステップＳ３０１）。中断部１７６は中断命令を受け付けていないと判断した場合（ステップＳ３０１でＮＯ）、処理をステップＳ２９１へ戻し、処理を繰り返す。中断部１７６は中断命令を受け付けた場合（ステップＳ３０１でＹＥＳ）、中断命令を取得部１７８へ出力する。取得部１７８は現在選択中のアプリケーション２１２に係るアプリケーション名及びファイル名の選択終了時刻を履歴ファイル１５４に記憶する（ステップＳ３０２）。例えば図２８の例では、１２時２７分に中断命令がなされ、現在選択中のアプリケーション名「Ｃ」及びファイル名「Ｃ１」の選択終了時刻として１２時２７分を記憶する。
【０１０２】
選択部１７２は合計選択時間をアプリケーション名及びファイル名毎に算出する（ステップＳ３０３）。具体的には選択部１７２は選択時刻フィールドに記憶された選択開始時刻と選択終了時刻との間の時刻の合計値を算出する。選択部１７２は合計選択時間を履歴ファイル１５４に記憶する（ステップＳ３０４）。選択部１７２は選択された回数を、選択時刻フィールドを参照して計数する（ステップＳ３０５）。選択部１７２は計数した回数を選択回数として履歴ファイル１５４に記憶する（ステップＳ３０６）。なお、ステップＳ３０２乃至Ｓ３０６の処理は、起動時に処理するようにしても良い。また、アプリケーション２１２が選択される毎に行っても良い。
【０１０３】
図３１は選択処理の手順を示すフローチャートである。起動部１７９はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ３１１）。起動部１７９は起動命令を受け付けていないと判断した場合（ステップＳ３１１でＮＯ）、起動命令を受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ３１１でＹＥＳ）、ＶＭＩＤを参照し、履歴ファイル１５４から合計選択時間の最も長いアプリケーション名及びファイル名を選択する（ステップＳ３１２）。さらに復元部１７３は領域ファイル１５１からアプリケーション名及びファイル名に対応する使用領域を読み出す（ステップＳ３１３）。
【０１０４】
復元部１７３は保存ファイル１５３から使用領域の情報を読み出す（ステップＳ３１４）。復元部１７３は読み出した情報をＲＡＭ１２の使用領域に復元する（ステップＳ３１５）。これにより、使用頻度の高いアプリケーション２１２が優先的に復元され、ユーザの利便性を高めることが可能となる。
【０１０５】
本実施の形態４は以上の如きであり、その他は実施の形態１乃至３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１０６】
実施の形態５
実施の形態５は起動時の時刻及びアプリケーション２１２の使用履歴に基づき、優先的に復元するアプリケーション２１２を選択する形態に関する。選択部１７２は起動命令を受け付けた場合、履歴ファイル１５４に記憶したアプリケーション２１２の使用に関する時刻情報及び選択情報、並びに、時計部１８から出力される時刻に基づきアプリケーション２１２を選択する。以下に選択処理を、フローチャートを用いて説明する。
【０１０７】
図３２は選択処理の手順を示すフローチャートである。起動部１７９はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ３２１）。起動部１７９は起動命令を受け付けていないと判断した場合（ステップＳ３２１でＮＯ）、起動命令を受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ３２１でＹＥＳ）、選択部１７２はＶＭＩＤを参照し、履歴ファイル１５４から選択時刻をアプリケーション名及びファイル名毎に抽出する（ステップＳ３２２）。選択部１７２は現在時刻を時計部１８から取得する（ステップＳ３２３）。選択部１７２は現在時刻が選択時刻に属するか否かを判断する（ステップＳ３２４）。
【０１０８】
例えば、図２８の例では現在時刻が１２時２２分の場合、選択時刻に属する。一方、現在時刻が１２時３０分である場合、１２時２０分から１２時２７分外であるので、選択時刻に属さない。選択部１７２は現在時刻が選択時刻に属すると判断した場合（ステップＳ３２４でＹＥＳ）、ステップＳ３２５へ移行する。選択部１７２は現在時刻が選択開始時刻と選択終了時刻との間に属するアプリケーション名及びファイル名を選択する（ステップＳ３２５）。上述の例では現在時刻１２時２２分は選択開始時刻１２時２０分と選択終了時刻１２時２３分の間に属するので、対応するアプリケーション名「Ａ」及びファイル名「Ａ１」が選択される。一方、選択部１７２は現在時刻が選択時刻に属さないと判断した場合（ステップＳ３２４でＮＯ）、ステップＳ３１２へ移行する（ステップＳ３２６）。ステップＳ３１２以降の処理は実施の形態４で述べたとおりであるので詳細な説明は省略する。また、ステップＳ３２５以降の処理は、ステップＳ３１３乃至Ｓ３１５と同様であるので、説明を省略する。これにより、ユーザのＶＭ２の使用習慣に応じて好ましいアプリケーション２１２を優先的に復元することが可能となる。
【０１０９】
本実施の形態５は以上の如きであり、その他は実施の形態１乃至４と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１１０】
実施の形態６
実施の形態６はウィンドウＷの選択回数に応じて優先的に復元するアプリケーション２１２を選択する形態に関する。図３３は選択処理の手順を示すフローチャートである。起動部１７９はＮＩＣ１６を介してＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ３３１）。起動部１７９は起動命令を受け付けていないと判断した場合（ステップＳ３３１でＮＯ）、起動命令を受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ３３１でＹＥＳ）、ＶＭＩＤを参照し、履歴ファイル１５４から選択回数が最も多いアプリケーション名及びファイル名を選択する（ステップＳ３３２）。
【０１１１】
選択部１７２はステップＳ３３２で選択したアプリケーション名及びファイル名の数は複数か否かを判断する（ステップＳ３３３）。選択部１７２は複数でないと判断した場合（ステップＳ３３３でＮＯ）、処理を終了する。一方選択部１７２は複数であると判断した場合（ステップＳ３３３でＹＥＳ）、合計選択時間が長い方のアプリケーション名及びファイル名を選択する（ステップＳ３３４）。以降の処理及びステップＳ３３３でＮＯ以降の処理は、ステップＳ３１３乃至Ｓ３１５と同様であるので説明を省略する。
【０１１２】
本実施の形態６は以上の如きであり、その他は実施の形態１乃至５と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１１３】
実施の形態７
実施の形態７は優先度を算出し、算出した優先度に基づき、複数のアプリケーション２１２を提示する形態に関する。図３４は物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。さらに制御モジュール１７０として優先度を算出する算出部１７１０が設けられている。算出部１７１０は履歴ファイル１５４に記憶した各アプリケーション２１２の履歴情報に基づき優先度を算出する。本実施の形態においては履歴ファイル１５４に記憶した選択回数が多いもの程優先度を高く付与する例を挙げて説明する。
【０１１４】
図３５乃至図３７は優先度に基づく選択処理の手順を示すフローチャートである。起動部１７９はＮＩＣ１６を介して、ＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ３４１）。起動部１７９は起動命令を復元部１７３へ出力する。復元部１７３はハードウェア情報ファイル１５２からＶＭＩＤに対応するハードウェア情報を読み出す（ステップＳ３４２）。復元部１７３は起動対象となるＶＭ２にＲＡＭ１２の使用領域の割り当てを行う（ステップＳ３４３）。
【０１１５】
復元部１７３はステップＳ３４２で読み出したＶＭ２のハードウェア情報を、ＲＡＭ１２に記憶する（ステップＳ３４４）。復元部１７３はＶＭＩＤに対応するＯＳ２１１を保存ファイル１５３から読み出す。復元部１７３は読み出したＯＳ２１１をステップＳ３４３で割り当てた領域に記憶する（ステップＳ３４５）。選択部１７２はＨＤ１５から予め記憶したテンプレートとなる基本選択画面を読み出す（ステップＳ３４６）。算出部１７１０は起動対象のＶＭ２のＶＭＩＤに対応する履歴ファイル１５４のレコードを読み出す。そして算出部１７１０はアプリケーション名及びファイル名毎に選択回数を読み出す（ステップＳ３４７）。なお、選択回数の計数処理については実施の形態４で述べたとおりであるので詳細な説明は省略する。算出部１７１０は履歴ファイル１５４からアプリケーション名及びファイル名を読み出す（ステップＳ３４８）。
【０１１６】
算出部１７１０は読み出した選択回数に応じてアプリケーション名及びファイル名毎に優先度を付与する（ステップＳ３４９）。これは例えば選択回数が「３」の場合、優先度は「３」とすれば良い。選択部１７２は優先度に応じてアプリケーション名及びファイル名をソートする（ステップＳ３５１）。ソートは優先度が大きいものから小さいものへと並び替える処理をすればよい。
【０１１７】
選択部１７２はソートした順にアプリケーション名及びファイル名を基本選択画面に記述し、選択画面３４を生成する（ステップＳ３５２）。また選択部１７２はアプリケーション名及びファイル名に対応づけて優先度を記述しても良い。選択部１７２はＮＩＣ１６を介して、生成した選択画面３４をコンピュータ３へ出力する（ステップＳ３５３）。
【０１１８】
図３８は選択画面３４のイメージを示す説明図である。選択画面３４にはソートした順にアプリケーション名及びファイル名が表示される。各アプリケーション名及びファイル名には、優先度が表示される。本例では文書作成アプリケーション「文書Ａ」に優先度３が付与され、かつ、最上段に表示されている。ユーザはコンピュータ３のマウス等から優先的に実行するアプリケーション名及びファイル名を、チェックボックス３４１にてクリックする。なお、この選択は複数であっても良い。ユーザはチェックボックス３４１をクリックした後、決定ボタン３４２をクリックする。これによりコンピュータ３からＶＭＩＤ、選択された一または複数のアプリケーション名及びファイル名が物理マシン１へ出力される。
【０１１９】
選択部１７２はコンピュータ３から出力されるアプリケーション名及びファイル名の入力を受け付ける（ステップＳ３５４）。選択部１７２は複数のアプリケーション名及びファイル名の入力を受け付けたか否かを判断する（ステップＳ３５５）。選択部１７２は複数でないと判断した場合（ステップＳ３５５でＮＯ）、ステップＳ３５４で入力されたアプリケーション名及びファイル名を優先的に復元すべきものとして選択する。
【０１２０】
選択部１７２は選択されたアプリケーション名及びファイル名を復元部１７３へ出力する。復元部１７３は受け付けたアプリケーション名及びファイル名に対応する使用領域を領域ファイル１５１から読み出す（ステップＳ３５７）。復元部１７３は、当該使用領域の情報を保存ファイル１５３から読み出す（ステップＳ３５８）。なお、復元部１７３は領域ファイル１５１及び保存ファイル１５３を読み出す際、ステップＳ３４１で受け付けたＶＭＩＤに対応するレコードを読み出す。
【０１２１】
復元部１７３は読み出したアプリケーション名及びファイル名に係る情報をＲＡＭ１２のステップＳ３５７で読み出した使用領域に復元する（ステップＳ３５９）。一方、選択部１７２は、複数のアプリケーション名及びファイル名を受け付けたと判断した場合（ステップＳ３５５でＹＥＳ）、ステップＳ３６１へ移行する。選択部１７２は受け付けた複数のアプリケーション名及びファイル名に対応する全ての使用領域を領域ファイル１５１から読み出す（ステップＳ３６１）。選択部１７２は読み出した使用領域の合計値を算出する（ステップＳ３６２）。具体的には、選択部１７２は各アプリケーション２１２のＲＡＭ１２の使用領域（サイズ）を全て加算する。
【０１２２】
選択部１７２はＨＤ１５に記憶された閾値を読み出す（ステップＳ３６３）。そして選択部１７２は算出した合計値が閾値を超えるか否かを判断する（ステップＳ３６４）。これはユーザがあまりに多くのアプリケーション２１２を選択してしまうことを防止するためである。この閾値はコンピュータ３を介して適宜の値とする他、ステップＳ３４３において割り当てられるサイズに１よりも小さい係数を乗じた値としても良い。選択部１７２は合計値が閾値を超えると判断した場合（ステップＳ３６４でＹＥＳ）、ＨＤ１５に記憶した警告画面を読み出す（ステップＳ３６５）。選択部１７２はＮＩＣ１６を介して、読み出した警告画面をコンピュータ３へ出力する（ステップＳ３６６）。
【０１２３】
コンピュータ３の表示部には、「もう一度、選択して下さい。」または「一度に復元できるメモリ容量を超えています。」等の警告画面が表示される。その後選択部１７２はステップＳ３５３へ移行し、以上の処理を繰り返す。一方、合計値が閾値を超えないと判断した場合（ステップＳ３６４でＮＯ）、復元部１７３は複数の受け付けたアプリケーション名及びファイル名に対応する使用領域を領域ファイル１５１から読み出す（ステップＳ３６８）。復元部１７３は、当該複数の使用領域の情報を保存ファイル１５３から読み出す（ステップＳ３６９）。
【０１２４】
復元部１７３は読み出したアプリケーション名及びファイル名に係る情報を、ソートしたアプリケーション名及びファイル名の順に、ＲＡＭ１２のステップＳ３５８で読み出した対応する使用領域に復元する（ステップＳ３６１０）。図３８の例において、文書作成アプリケーション「文書Ａ」及びプレゼンテーション用アプリケーション「スライドＣ」が選択された場合、優先度の高い文書作成アプリケーション「文書Ａ」から復元が開始される。この場合、復元部１７３は文書作成アプリケーション「文書Ａ」に対応づけて記憶された使用領域を領域ファイル１５１から読み出し、当該領域に保存ファイル１５３内に記憶された文書作成アプリケーション「文書Ａ」の情報を復元する。その後、復元部１７３はプレゼンテーション用アプリケーション「スライドＣ」に対応づけて記憶された使用領域を領域ファイル１５１から読み出し、当該領域に保存ファイル１５３内に記憶された「スライドＣ」の情報を復元する。これにより、ユーザは優先的に復元すべき指標を得ることができより効率よく、アプリケーション２１２を使用することが可能となる。また、多くのアプリケーション２１２を選択しすぎることに伴う、起動処理速度の低減をも解消することが可能となる。選択されなかったアプリケーション２１２についても、ステップＳ１５７乃至Ｓ１５１３の処理を優先度順に行うことで、効率よくアプリケーション２１２の復元が行える。
【０１２５】
本実施の形態７は以上の如きであり、その他は実施の形態１乃至６と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１２６】
実施の形態８
実施の形態８はアプリケーション２１２の使用に関する時刻情報及び起動時に時計部１８から出力される時刻情報に基づいて優先度を付与する形態に関する。具体的には、各アプリケーション２１２の使用開始時刻と時計部１８から出力される現在時刻との差分を算出し、差分が小さい順に優先度を付与する。また本実施の形態においては選択部１７２が優先度に基づき、優先的に復元するアプリケーション２１２を選択する例を挙げて説明する。
【０１２７】
図３９及び図４０は優先度の付与手順を示すフローチャートである。起動部１７９はＮＩＣ１６を介して、ＶＭＩＤ及びＶＭ２の起動命令を受け付ける（ステップＳ３９１）。算出部１７１０は履歴ファイル１５４からアプリケーション名、ファイル名及びアプリケーション２１２の使用に関する時刻情報としての起動時刻を読み出す（ステップＳ３９２）。なお、算出部１７１０はステップＳ３９１で受け付けたＶＭＩＤに対応するレコードの内、履歴ファイル１５４に記憶されている全てのアプリケーション２１２のレコードを読み出す。
【０１２８】
算出部１７１０は時計部１８から現在時刻を取得する（ステップＳ３９３）。算出部１７１０は現在時刻と起動時刻との間の差分を、アプリケーション名及びファイル名毎に算出する（ステップＳ３９４）。なお、算出部１７１０は差分の算出に際し、年月日については除外して時刻の差を算出すれば良い。その他、差は、年月日を除き、現在時刻以降の起動時刻を優先的に算出するようにしても良い。算出部１７１０は算出した差分に応じて優先度を付与する（ステップＳ３９５）。この優先度は差分が小さいほど優先度が大きくなるよう設定すればよい。例えば、差分の逆数を優先度とすればよい。
【０１２９】
選択部１７２は優先度に応じてアプリケーション名及びファイル名をソートする（ステップＳ３９６）。選択部１７２は優先度の最も高いアプリケーション名及びファイル名の使用領域を領域ファイル１５１から読み出す（ステップＳ３９７）。選択部１７２は閾値を読み出す（ステップＳ３９８）。選択部１７２はステップＳ３９７における優先度の次に優先度の高いアプリケーション名及びファイル名の使用領域を領域ファイル１５１から読み出す（ステップＳ３９９）。
【０１３０】
選択部１７２はステップＳ３９９で読み出した使用領域を、ステップＳ３９７で読み出した使用領域に加算して合計値を算出した場合、合計値は閾値を超えるか否かを判断する（ステップＳ４０１）。選択部１７２は閾値を超えないと判断した場合（ステップＳ４０１でＮＯ）、ステップＳ３９９の使用領域を加算して合計値を算出する（ステップＳ４０２）。そして処理をステップＳ３９９へ戻し処理を繰り返す。選択部１７２は次に優先度の高い新たなアプリケーション名及びファイル名に係る使用領域を読み出す。これを繰り返し、選択部１７２は合計値が閾値を超えると判断した場合（ステップＳ４０１でＹＥＳ）、ステップＳ３９９において読み出した使用領域の加算を中止する（ステップＳ４０３）。
【０１３１】
選択部１７２はステップＳ３９７で読み出した最も優先度の高いアプリケーション名及びファイル名から、ステップＳ４０１にて合計値を超える優先度よりも高い優先度のアプリケーション名及びファイル名までを選択する（ステップＳ４０４）。復元部１７３は選択された複数の使用領域の情報を保存ファイル１５３から読み出す（ステップＳ４０６）。
【０１３２】
復元部１７３は読み出したアプリケーション名及びファイル名に係る情報を、選択された優先度の高いアプリケーション名及びファイル名順に、ＲＡＭ１２へステップＳ３９７またはＳ３９９にて読み出した対応する使用領域に復元する（ステップＳ４０７）。これにより、予め設定した閾値を限度に、優先度に応じて優先的にアプリケーション２１２が復元される。なお、本実施の形態においては、選択部１７２が優先度に基づき自動的に復元するアプリケーション２１２を選択する例を説明したがこれに限るものではない。実施の形態７と同じく、選択画面３４を表示しユーザにアプリケーション２１２を選択させても良い。
【０１３３】
本実施の形態８は以上の如きであり、その他は実施の形態１乃至７と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１３４】
実施の形態９
実施の形態９は各アプリケーション２１２の使用に関する時刻情報及び選択情報に基づいて優先度を算出する形態に関する。図４１は実施の形態９に係る優先度算出処理の手順を示すフローチャートである。起動部１７９はコンピュータ３から起動対象のＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ４１１）。起動部１７９は受け付けていないと判断した場合（ステップＳ４１１でＮＯ）、受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ４１１でＹＥＳ）、算出部１７１０に対し起動命令を出力する。
【０１３５】
算出部１７１０は履歴ファイル１５４の起動対象のＶＭＩＤに対応するレコードを読み出す。算出部１７１０は履歴ファイル１５４の各アプリケーション名及びファイル名がいつ選択されたかを示す選択時刻フィールドを参照し、アプリケーション名及びファイル名毎に合計選択時間を算出する（ステップＳ４１２）。算出部１７１０は履歴ファイル１５４の合計選択時間フィールドに算出した各アプリケーション名及びファイル名の合計選択時間を記憶する。算出部１７１０は合計選択時間が長いほど多くなる優先度を付与する（ステップＳ４１３）。
【０１３６】
算出部１７１０は付与した優先度順に、アプリケーション名及びファイル名をソートする（ステップＳ４１４）。なお、ステップＳ４１２乃至Ｓ４１４の処理は、ＶＭ２の起動時に限らず、ＶＭ２の中断時に実行しても良いことはもちろんである。中断時に実行する場合、アプリケーション名及びファイル名毎に算出した優先度は、ＶＭＩＤに対応づけて、ＨＤ１５に記憶され、起動時にＶＭＩＤをキーに読み出される。また、実施の形態４に示したように、ステップＳ４１２の処理のみ中断時に実行してもよい。これにより、ユーザのＶＭ２の各アプリケーション２１２に対する使用状況に応じて、優先度が付与されることから、早期にＶＭ２の希望するアプリケーション２１２を使用することが可能となる。
【０１３７】
本実施の形態９は以上の如きであり、その他は実施の形態１乃至８と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１３８】
実施の形態１０
実施の形態１０は複数の中断時の履歴を参照して優先度を算出する形態に関する。図４２は実施の形態１０に係る履歴ファイル１５４のレコードレイアウトを示す説明図である。履歴ファイル１５４は中断時刻毎に、ＶＭ２で実行していたアプリケーション２１２及び選択時刻を記憶している。履歴ファイル１５４は中断時刻フィールド、アプリケーションフィールド及び選択時刻フィールド等を含む。中断時刻フィールドはコンピュータ３からＶＭ２の中断命令を受け付けた時刻を記憶している。中断部１７６はＶＭＩＤ及びＶＭ２の中断命令を受け付けた場合に、時計部１８から出力される中断時刻を履歴ファイル１５４に記憶する。なお、本実施の形態においては月、日、時、及び分を用いた例を説明するが、年、及び、秒まで含めても良いことはもちろんである。
【０１３９】
アプリケーションフィールドには、中断時に実行していたアプリケーション２１２のアプリケーション名が記憶されている。なお、本実施の形態においては説明を容易にするために、アプリケーション２１２が複数のファイルを同時に実行している場合も、一つのアプリケーション２１２の優先度を算出する例を説明する。なお、アプリケーション名及びファイル名毎に優先度を算出しても良い。選択時刻フィールドには、各アプリケーション２１２が選択されていた時間帯が記憶されている。また、図４２の例では、ＶＭ２のＶＭＩＤが「ＶＭ０１」の例を挙げて説明しているが、同様に他のＶＭ２についても履歴が記憶されている。
【０１４０】
ＯＳ２１１は各アプリケーション２１２の一のウィンドウＷが選択された場合、アプリケーション名及び選択開始情報を取得部１７８へ出力する。取得部１７８は選択開始情報を受け付けた場合、アプリケーション名及び時計部１８から出力される時刻を選択開始時刻として履歴ファイル１５４に記憶する。ＯＳ２１１は各アプリケーション２１２の他のウィンドウＷが選択された場合、一のウィンドウＷに係るアプリケーション名及び選択終了情報を取得部１７８へ出力する。取得部１７８は選択終了情報を受け付けた場合、アプリケーション名及び時計部１８から出力される時刻を選択終了時刻として履歴ファイル１５４に記憶する。アプリケーション２１２の選択開始情報を受け付けたときに、これまで選択されていたアプリケーション２１２の選択終了時刻を履歴ファイル１５４に記憶しても良い。
【０１４１】
算出部１７１０は履歴ファイル１５４に記憶された各アプリケーション２１２の使用に関する時刻情報、選択情報及び起動時に時計部１８から出力される時刻に基づき、優先度を算出する。算出部１７１０は起動時に時計部１８から出力される現在時刻からみて所定時間前後した同時間帯を算出する。例えば、現在時刻が１２時であり、所定時間が５分の場合、同時間帯は１１時５５分から１２時５分となる。なお、この所定時間はコンピュータ３により適宜の値を設定することができる。本実施の形態においては５分を一例として説明する。なお、現在時刻の前後に応じて所定時間を相違させても良い。例えば現在時刻の前は３分、現在時刻の後は５分としても良い。この場合、１１時５７分から１２時５分が同時間帯となる。
【０１４２】
算出部１７１０は履歴ファイル１５４を参照し同時間帯に選択されていたアプリケーション２１２の選択回数を計数する。図４２の例では下線で示す如くアプリケーション名「Ａ」が２回、アプリケーション名「Ｄ」が１回となる。この場合、算出部１７１０は優先度を選択回数に応じて付与する。例えば、アプリケーション名「Ａ」は優先度が２、アプリケーション名「Ｄ」は優先度が１と算出される。なお、算出部１７１０は優先度の算出に際し、現在時刻と中断時刻との差に応じて重みを付与するようにしても良い。この場合、算出部１７１０は現在時刻と中断時刻との差が小さいほど大きくなる重みを、選択回数に乗ずればよい。
【０１４３】
図４３及び図４４は実施の形態１０に係る優先度算出処理の手順を示すフローチャートである。起動部１７９はコンピュータ３から起動対象のＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ４３１）。起動部１７９は受け付けていないと判断した場合（ステップＳ４３１でＮＯ）、受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ４３１でＹＥＳ）、算出部１７１０に対し起動命令を出力する。
【０１４４】
算出部１７１０は履歴ファイル１５４からステップＳ４３１で受け付けたＶＭＩＤに対応するレコードを読み出す（ステップＳ４３２）。算出部１７１０は時計部１８から現在時刻を取得する（ステップＳ４３３）。算出部１７１０はＨＤ１５から予め記憶された所定日数を読み出す（ステップＳ４３４）。なお、この所定日数はコンピュータ３により適宜変更することが可能であり、例えば７日とすれば良い。算出部１７１０は履歴ファイル１５４から、現在時刻からみて読み出した所定日数内の中断時刻を有するレコードを読み出す（ステップＳ４３５）。なお、ステップＳ４３４にて所定日数を読み出し、所定日数内のレコードのみを処理する例を挙げて説明するがこれに限るものではない。全てのレコードについて処理しても良いことはもちろんである。
【０１４５】
算出部１７１０は履歴ファイル１５４の読み出したレコードから各アプリケーション２１２の選択時刻を読み出す（ステップＳ４３６）。算出部１７１０はＨＤ１５に予め記憶した所定時間を読み出す（ステップＳ４３７）。算出部１７１０は読み出した所定時間及び現在時刻に基づき、同時間帯を算出する（ステップＳ４３８）。算出部１７１０は同時間帯に選択されていたアプリケーション２１２の選択回数を、アプリケーション２１２毎に計数する（ステップＳ４３９）。
【０１４６】
算出部１７１０はアプリケーション２１２の選択回数が同一のものが存在するか否かを判断する（ステップＳ４４１）。算出部１７１０は選択回数が同一のアプリケーション２１２が存在しないと判断した場合（ステップＳ４４１でＮＯ）、選択回数に応じて優先度を付与する（ステップＳ４４２）。一方、選択回数が同一のアプリケーション２１２が存在すると判断した場合（ステップＳ４４１でＹＥＳ）、算出部１７１０はアプリケーション２１２毎に合計選択時刻を算出する（ステップＳ４４３）。なお、アプリケーション２１２毎の合計選択時刻の算出は履歴ファイル１５４の選択時刻フィールドに記憶した選択開始時刻及び選択終了時刻に基づき算出する。
【０１４７】
算出部１７１０は、合計選択時刻及び選択回数に応じて優先度を付与する（ステップＳ４４４）。選択回数が同一でない場合は、アプリケーション２１２毎に選択回数が多いほど高くなる優先度を付与する。また、選択回数が同一のアプリケーション２１２に関しては、合計選択時刻が長いほど、高くなる優先度を付与する。これにより、ＶＭ２を使用するユーザのアプリケーション２１２の使用状況に応じて適切にアプリケーション２１２を復元することが可能となる。
【０１４８】
本実施の形態１０は以上の如きであり、その他は実施の形態１乃至９と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１４９】
実施の形態１１
実施の形態１１は起動後に復元されたアプリケーション２１２に係るウィンドウＷに対する操作を受け付けた場合に、優先度を補正する形態に関する。図４５は実施の形態１１に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態１１では制御モジュール１７０としてさらに補正部１７１１が設けられている。補正部１７１１は復元部１７３によるアプリケーション２１２の復元後の、所定時間内に最初にウィンドウＷに対する操作があったアプリケーション２１２に対し、フラグを設定する。そして、後の中断時または起動時に算出部１７１０が優先度を算出した場合、フラグが設定されているアプリケーション２１２の優先度を補正する。なお、本実施の形態においては一例として、後の起動時に優先度を算出し、算出した優先度を補正する処理を説明する。
【０１５０】
図４６は補正処理の手順を示すフローチャートである。これまで述べてきた実施の形態と同様にして各アプリケーション２１２を復元する（ステップＳ４６１）。ＶＭ２のＯＳ２１１は、ウィンドウＷをＮＩＣ１６へ出力する。コンピュータ３の表示部には各アプリケーション２１２のウィンドウＷが表示される。復元部１７３は補正部１７１１に復元命令を出力する。補正部１７１１は復元命令を受け付けた場合、ＨＤ１５に記憶した所定時間を読み出す（ステップＳ４６２）。この所定時間はコンピュータ３により適宜変更することが可能である。例えば、５分と記憶しておけばよい。これと並行して、復元部１７３は、残りのアプリケーション２１２を復元する。ユーザはコンピュータ３の入力部を通じてウィンドウＷを操作する。この操作は、例えば、ウィンドウＷの選択切り替え、文字の入力、ファイルの操作等が該当する。操作に基づく情報はＮＩＣ１６を介して、コンピュータ３からＯＳ２１１へ出力される。ＯＳ２１１は操作があることを補正部１７１１へ出力する。
【０１５１】
補正部１７１１は所定時間内にウィンドウＷに対する操作を受け付けたか否かを判断する（ステップＳ４６３）。補正部１７１１はウィンドウＷに対する操作を受け付けていないと判断した場合（ステップＳで４６３でＮＯ）、補正することなく処理を終了する。一方、補正部１７１１はウィンドウＷに対する操作を受け付けたと判断した場合（ステップＳ４６３でＹＥＳ）、操作を受け付けたウィンドウＷに係るアプリケーション２１２にフラグを設定する（ステップＳ４６４）。なお、このフラグは履歴ファイル１５４にアプリケーション２１２に対応づけて記憶しておけばよい。
【０１５２】
その後、ＶＭ２は中断し、再度起動命令により起動する。起動部１７９はコンピュータ３から起動対象のＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ４６５）。起動部１７９は受け付けていないと判断した場合（ステップＳ４６５でＮＯ）、受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ４６５でＹＥＳ）、算出部１７１０及び補正部１７１１に対し起動命令を出力する。算出部１７１０は上述した各種アルゴリズムに従い、優先度を算出する（ステップＳ４６６）。
【０１５３】
補正部１７１１は起動命令を受け付けた場合、優先度を算出したアプリケーション２１２中に、フラグが設定されているアプリケーション２１２が存在するか否かを、履歴ファイル１５４を参照して判断する（ステップＳ４６７）。補正部１７１１はフラグが設定されていないと判断した場合（ステップＳ４６７でＮＯ）、補正することなく処理を終了する。一方、補正部１７１１はフラグが設定されていると判断した場合（ステップＳ４６７でＹＥＳ）、フラグが設定されているアプリケーション２１２の優先度を補正する（ステップＳ４６８）。この優先度の補正は例えば１より大きい係数を乗算するか、または正の値を加算等することにより、優先度を増加させる処理とすればよい。
【０１５４】
補正部１７１１は算出部１７１０へ補正後の優先度を出力する。算出部１７１０は補正後の優先度を選択部１７２へ出力する。選択部１７２は補正後の優先度に基づき優先的に復元するアプリケーション２１２を選択する。その他、フラグ数をアプリケーション２１２毎に記憶するようにしても良い。ステップＳ４６４においてはフラグ数をインクリメントする。またステップＳ４６３においてウィンドウＷに対する操作がないアプリケーション２１２はフラグ数をデクリメントする。なおフラグ数の最小値は１としておけばよい。そして補正部１７１１は計数したフラグ数をステップＳ４６６で算出した優先度に乗じても良い。これにより、ユーザの使用頻度の高いアプリケーション２１２が後の起動時にも優先的に復元され、操作効率を向上させることが可能となる。
【０１５５】
本実施の形態１１は以上の如きであり、その他は実施の形態１乃至１０と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１５６】
実施の形態１２
実施の形態１２は各アプリケーション２１２の待機時間とＶＭ２の中断時間とに基づき優先度を補正する形態に関する。図４７は実施の形態１２に係る履歴ファイル１５４のレコードレイアウトを示す説明図である。履歴ファイル１５４は中断時刻フィールド、アプリケーションフィールド、選択時刻フィールド及び待機時間フィールド等を含む。中断時間フィールドには、ＶＭ２を中断した際の時刻を記憶している。取得部１７８はＶＭ２の中断命令を受け付けた場合、ＶＭＩＤに対応づけて、時計部１８から出力される時刻を中断時刻として記憶する。さらに取得部１７８は中断時に実行していたアプリケーション名をＯＳ２１１から取得し、履歴ファイル１５４に記憶する。
【０１５７】
選択時刻フィールドには、再度取得部１７８がＶＭ２の起動命令を受け付けた後、アプリケーション２１２に係るウィンドウＷに対する操作を受け付けた際の時刻を記憶している。ＯＳ２１１はアプリケーション２１２に係るウィンドウＷに対する操作をコンピュータ３から受け付けた場合、アプリケーション名を取得部１７８へ出力する。取得部１７８は時計部１８から出力される時刻を、アプリケーション２１２に係るウィンドウＷに対する選択時刻として履歴ファイル１５４に記憶する。待機時間フィールドには、前回のＶＭ２の中断時刻から、後にアプリケーション２１２のウィンドウＷが選択された選択時刻までの時間を待機時間として記憶している。
【０１５８】
取得部１７８は選択時刻と中断時刻との差に基づき算出される待機時間を、アプリケーション２１２毎に記憶する。例えば、１月２７日１２時２０分にＶＭ２が中断され、その後ＶＭ２が起動される。その際、アプリケーション名「Ａ」のウィンドウＷは１月２７日１５時２０分に操作されており、待機時間は３時間となる。なお、図４７の例はＶＭＩＤが「ＶＭ０１」の例を挙げて説明するが、同様に他のＶＭ２についても情報が記憶されている。
【０１５９】
補正部１７１１は履歴ファイル１５４に記憶した各アプリケーション２１２の待機時間を読み出し、平均待機時間を算出する。また補正部１７１１は起動時に、前回の中断時刻を履歴ファイル１５４から読み出す。補正部１７１１は起動時に時計部１８から出力される現在時刻（起動時刻）を取得する。そして補正部１７１１は現在時刻と中断時刻との差を求めることでＶＭ２の中断時間を取得する。補正部１７１１はこのＶＭ２の中断時間と、アプリケーション２１２毎に算出した平均待機時間の差分を、アプリケーション２１２毎に算出する。そして補正部１７１１は算出した差分が小さいほど、大きくなる重みをアプリケーション２１２毎に付与する。例えば、差分が１時間の場合、重みを１０、差分が２時間の場合、重みを９とすれば良い、また重みの最小値は１としておけばよい。補正部１７１１は算出部１７１０が算出した優先度に重みを乗ずることで優先度を補正する。なお、実施の形態１１で述べたアプリケーション２１２に設定されたフラグが存在する場合、当該フラグに基づく補正処理をもあわせて実行しても良い。
【０１６０】
図４８及び図４９は実施の形態１２に係る優先度算出処理の手順を示すフローチャートである。復元部１７３は上述した処理によりアプリケーション２１２をＲＡＭ１２の使用領域に復元する（ステップＳ４８１）。その後、ＯＳ２１１はアプリケーション２１２に係るウィンドウＷに対する操作をコンピュータ３から受け付けたか否かを判断する（ステップＳ４８２）。ＯＳ２１１はアプリケーション２１２に対する操作を受け付けたと判断した場合（ステップＳ４８２でＹＥＳ）、操作されたことを示す情報（以下、操作情報という）及びアプリケーション名を取得部１７８へ出力する（ステップＳ４８３）。取得部１７８は操作情報及びアプリケーション名を取得する（ステップＳ４８４）。
【０１６１】
取得部１７８は時計部１８からの出力を参照し、ウィンドウＷの選択開始時刻を履歴ファイル１５４に記憶する（ステップＳ４８５）。補正部１７１１は履歴ファイル１５４を参照し、前回のＶＭ２の中断時における中断時刻を読み出す（ステップＳ４８６）。補正部１７１１は中断時刻からステップＳ４８５で記憶した選択開始時刻までの待機時間を算出する（ステップＳ４８７）。補正部１７１１は算出した待機時間をアプリケーション２１２毎に履歴ファイル１５４に記憶する（ステップＳ４８８）。
【０１６２】
ステップＳ４８８の後、または、ＯＳ２１１がアプリケーション２１２に係るウィンドウＷに対する操作を受け付けていないと判断した場合（ステップＳ４８２でＮＯ）、ステップＳ４８９へ移行する。中断部１７６はコンピュータ３から中断対象のＶＭＩＤ及びＶＭ２の中断命令を受け付けたか否かを判断する（ステップＳ４８９）。中断部１７６は受け付けていないと判断した場合（ステップＳ４８９でＮＯ）、ステップＳ４８２へ移行し、他のアプリケーション２１２についても同様に待機時間を算出する。
【０１６３】
中断部１７６はＶＭＩＤ及び中断命令を受け付けたと判断した場合（ステップＳ４８９でＹＥＳ）、中断命令を補正部１７１１へ出力する。補正部１７１１は、履歴ファイル１５４の所定日数分（例えば３０日分）の各アプリケーション２１２の待機時間を読み出す。そしてアプリケーション２１２毎に平均待機時間を算出し、算出した平均待機時間をＨＤ１５に記憶する（ステップＳ４９１）。中断部１７６はＶＭ２を中断状態とする。これにより、中断時には過去の使用履歴に基づき、アプリケーション２１２毎の平均待機時間がＨＤ１５に記憶される。
【０１６４】
続いて、コンピュータ３からＶＭ２の起動命令を受け付けた際の処理手順を説明する。起動部１７９はコンピュータ３から起動対象のＶＭＩＤ及びＶＭ２の起動命令を受け付けたか否かを判断する（ステップＳ４９２）。起動部１７９は受け付けていないと判断した場合（ステップＳ４９２でＮＯ）、受け付けるまで待機する。一方、起動部１７９は起動命令を受け付けたと判断した場合（ステップＳ４９２でＹＥＳ）、補正部１７１１に対し起動命令を出力する。補正部１７１１は前回の中断時刻を履歴ファイル１５４から読み出す（ステップＳ４９３）。この中断時刻は、ステップＳ４８９にて中断命令を受け付けた際に、時計部１８から出力される時刻とすればよい。
【０１６５】
補正部１７１１は時計部１８から出力される時刻を参照し、起動時刻を取得する（ステップＳ４９４）。補正部１７１１はステップＳ４９３で読み出した前回の中断時における中断時刻からＶＭ２の起動時刻までの中断時間を算出する（ステップＳ４９５）。補正部１７１１は算出した中断時間と算出した各アプリケーション２１２の平均待機時間との差分を、アプリケーション２１２毎に算出する（ステップＳ４９６）。補正部１７１１は差分が小さいほど大きくなる重みをアプリケーション２１２毎に設定する（ステップＳ４９７）。
【０１６６】
算出部１７１０は上述した処理により各アプリケーション２１２の優先度を算出する（ステップＳ４９８）。補正部１７１１は各アプリケーション２１２の優先度を、設定した各アプリケーション２１２の重みに基づいて補正する（ステップＳ４９９）。これにより、ユーザの使用実績に応じて優先度が最適化され、より起動時におけるアプリケーション２１２の使用環境を向上させることが可能となる。
【０１６７】
本実施の形態１２は以上の如きであり、その他は実施の形態１乃至１１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１６８】
実施の形態１３
図５０は実施の形態１３に係る物理マシン１及びＶＭ２のハードウェア及びソフトウェアを示すブロック図である。実施の形態１乃至１２に係る物理マシン１を動作させるためのプログラムは、本実施の形態１３のように、読み取り部（図示せず）にＣＤ−ＲＯＭ等の可搬型記録媒体１Ａを読み取らせてＨＤ１５に記憶しても良い。また、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【０１６９】
図５０に示す物理マシン１は、使用領域を記憶させ、情報を保存等させるプログラムを、可搬型記録媒体１Ａによりまたは通信網を介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御モジュール１７０としてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述した物理マシン１として機能する。
【０１７０】
本実施の形態１３は以上の如きであり、その他は実施の形態１乃至１２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１７１】
以上の実施の形態１乃至１３を含む実施形態に関し、さらに以下の付記を開示する。
【０１７２】
（付記１）
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を実行させるプログラム。
【０１７３】
（付記２）
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域に関する情報を記憶する記憶ステップと、
前記選択ステップにより選択したアプリケーションプログラムが使用していた前記記憶部に保存されたメモリ上の情報を、前記記憶ステップにおいて記憶された使用領域に関する情報に基づいて特定されるメモリ上の使用領域へ復元する復元ステップと
を含む付記１に記載のプログラム。
【０１７４】
（付記３）
前記記憶ステップは、
アプリケーションプログラムを特定するための識別情報と、アプリケーションプログラムが使用するメモリの使用領域と、を対応付けて記憶し、
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記記憶ステップにおいて記憶された識別情報に対応する選択項目を出力するステップと、
前記識別情報に基づいて出力した選択項目に対する入力操作を受け付けるステップと、
前記アプリケーションプログラムの内、入力操作を受け付けた選択項目に対応する識別情報に係るアプリケーションプログラムを特定するステップと
を含む付記２に記載のプログラム。
【０１７５】
（付記４）
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域及び前記アプリケーションプログラムの使用に関する履歴情報を取得する取得ステップを備え、
前記記憶ステップは、
前記取得ステップにより取得した複数のアプリケーションプログラムが使用するメモリの各使用領域及び履歴情報を、前記アプリケーションプログラムを特定する識別情報に対応付けて記憶する
付記２に記載のプログラム。
【０１７６】
（付記５）
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した履歴情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記４に記載のプログラム。
【０１７７】
（付記６）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び時計部から出力される時刻情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記５に記載のプログラム。
【０１７８】
（付記７）
前記選択ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用開始時刻を読み出すステップと、
読み出した各アプリケーションプログラムの使用開始時刻と前記時計部から出力される現在時刻との差分をアプリケーションプログラム毎に算出するステップと、
算出した差分が小さいアプリケーションプログラムを選択するステップと
を含む付記６に記載のプログラム。
【０１７９】
（付記８）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報及び前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記５に記載のプログラム。
【０１８０】
（付記９）
前記選択ステップは、
前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報を参照し、各アプリケーションプログラムに係るウィンドウが選択されていた時間の合計時間をアプリケーションプログラム毎に算出するステップと、
複数のアプリケーションプログラムの内、合計時間の長いアプリケーションプログラムを選択するステップと
を含む付記８に記載のプログラム。
【０１８１】
（付記１０）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報及び前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報、並びに、時計部から出力される時刻情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記５に記載のプログラム。
【０１８２】
（付記１１）
前記選択ステップは、
前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報を参照し、各アプリケーションプログラムに係るウィンドウが選択されていた選択時刻をアプリケーションプログラム毎に抽出するステップと、
時計部から出力される現在時刻が前記抽出した選択時刻に属するアプリケーションプログラムを選択するステップと
を含む付記１０に記載のプログラム。
【０１８３】
（付記１２）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得し、
前記記憶ステップは、
前記取得ステップにより取得した複数のアプリケーションプログラムが使用するメモリの各使用領域及び各アプリケーションプログラムの選択情報を履歴情報として記憶し、
前記選択ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報を参照し、アプリケーションプログラム毎に選択回数を計数するステップと、
計数した回数が多いアプリケーションプログラムを選択するステップと
を含む付記５に記載のプログラム。
【０１８４】
（付記１３）
前記記憶ステップにおいて記憶した履歴情報に基づきアプリケーションプログラム毎の優先度を算出する優先度算出ステップを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記記憶ステップにおいて記憶した複数のアプリケーションプログラムそれぞれに係る識別情報を、前記算出した優先度に従い出力するステップと、
出力した複数の識別情報から選択された識別情報の入力を受け付ける受け付けステップと、
前記複数のアプリケーションプログラムの内、入力を受け付けた識別情報に係るアプリケーションプログラムを選択するステップと
を含む付記４に記載のプログラム。
【０１８５】
（付記１４）
前記受け付けステップにより識別情報の入力を受け付けた場合、前記記憶ステップにおいて記憶した識別情報に対応するアプリケーションプログラムが使用するメモリの使用領域を読み出すステップと、
読み出した使用領域の合計値を算出するステップと、
算出した使用領域の合計値が予め定めた閾値を超える場合に警告情報を出力するステップと
を含む付記１３に記載のプログラム。
【０１８６】
（付記１５）
前記記憶ステップにおいて記憶した履歴情報に基づきアプリケーションプログラム毎の優先度を算出する優先度算出ステップを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、算出した優先度に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記４に記載のプログラム。
【０１８７】
（付記１６）
前記記憶ステップにおいて記憶したアプリケーションプログラムが使用するメモリの使用領域を読み出すステップと、
前記優先度算出ステップにより算出した優先度が最も高いアプリケーションプログラムの使用領域に、優先度が低いアプリケーションプログラムの使用領域を優先度の高低に従い順次加算して合計値を算出するステップと、
算出した使用領域の合計値が予め定めた閾値を超える場合に、超えた時点の優先度に係るアプリケーションプログラムの使用領域の加算を中止するステップとを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、優先度が最も高いアプリケーションプログラムから、前記超えた時点の優先度よりも高い優先度をもつアプリケーションプログラムまでを選択する
付記１５に記載のプログラム。
【０１８８】
（付記１７）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び時計部から出力される時刻情報に基づいて優先度を算出する
付記１３乃至１６のいずれか一つに記載のプログラム。
【０１８９】
（付記１８）
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用開始時刻と前記時計部から出力される現在時刻との差分を、アプリケーションプログラム毎に算出するステップと、
算出した差分が小さい順に高い優先度を付与するステップと
を含む付記１７に記載のプログラム。
【０１９０】
（付記１９）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得し、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報に基づきアプリケーションプログラム毎の優先度を算出する
付記１３乃至１６のいずれか一つに記載に記載のプログラム。
【０１９１】
（付記２０）
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報を参照し、アプリケーションプログラムが選択された回数を、アプリケーションプログラム毎に計数するステップと、
計数した回数に応じて優先度を付与するステップと
を含む付記１８に記載のプログラム。
【０１９２】
（付記２１）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報に基づいて優先度を算出する
付記１３乃至１６のいずれか一つに記載のプログラム。
【０１９３】
（付記２２）
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報を参照し、アプリケーションプログラム毎に選択されていた選択時間を算出するステップと、
選択時間の長さに応じて優先度を付与するステップと
を含む付記２１に記載のプログラム。
【０１９４】
（付記２３）
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報、選択情報及び時計部から出力される時刻情報に基づいて優先度を算出する
付記１３乃至１６のいずれか一つに記載のプログラム。
【０１９５】
（付記２４）
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報を参照し、時計部から出力される現在時刻と同時間帯に選択されていたアプリケーションプログラムの選択回数をアプリケーションプログラム毎に計数するステップと、
計数した選択回数に応じて優先度を付与するステップと
を含む付記２３に記載のプログラム。
【０１９６】
（付記２５）
前記復元ステップによりアプリケーションプログラムを復元した後の所定時間内に、アプリケーションプログラムに係るウィンドウに対する操作を受け付けたか否かを判断するステップと、
操作を受け付けたと判断した場合、前記優先度算出ステップにより算出する前記アプリケーションプログラムに係る優先度を補正するステップと
を含む付記１３または１５に記載のプログラム。
【０１９７】
（付記２６）
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記仮想マシンの中断時刻から起動時刻までの中断時間を算出するステップと、
起動命令を受け付けた場合、アプリケーションプログラム毎に、前記中断時刻からアプリケーションプログラムに係るウィンドウに対する操作を受け付けるまでの時間を待機時間として記憶するステップと、
記憶した待機時間の履歴を参照し、アプリケーションプログラム毎に待機時間の平均を算出するステップと、
前記優先度算出ステップにより算出したアプリケーションプログラム毎の優先度を、前記算出した中断時間及び待機時間の平均に基づき補正するステップと
を含む付記１３または付記１５に記載のプログラム。
【０１９８】
（付記２７）
複数の仮想マシンの動作を制御するコンピュータにおいて、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存手段と、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択手段と
を備えるコンピュータ。
【０１９９】
（付記２８）
コンピュータ上で動作する複数の仮想マシンを制御する制御方法において、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を含む制御方法。
【符号の説明】
【０２００】
１      物理マシン
１Ａ    可搬型記録媒体
２、２１、２２、２３      ＶＭ
３      コンピュータ
１０    ハードウェアリソース
１１    ＣＰＵ
１２    ＲＡＭ
１５    ＨＤ
１６    ＮＩＣ
１７    仮想化レイヤ
１８    時計部
１９    電源制御部
３４    選択画面
１５１  領域ファイル
１５２  ハードウェア情報ファイル
１５３  保存ファイル
１５４  履歴ファイル
１７０  制御モジュール
１７１  保存部
１７２  選択部
１７３  復元部
１７４  ＶＭ管理部
１７５  ページテーブル
１７６  中断部
１７７  停止部
１７８  取得部
１７９  起動部
２１１  ＯＳ
２１２  アプリケーション
３４１  チェックボックス
３４２  決定ボタン
１７１０  算出部
１７１１  補正部
Ｗ、３４３、３４４、３４５  ウィンドウ
【図１】
2010211526.tif 000003
【図２】
2010211526.tif 000004
【図３】
2010211526.tif 000005
【図４】
2010211526.tif 000006
【図５】
2010211526.tif 000007
【図６】
2010211526.tif 000008
【図７】
2010211526.tif 000009
【図８】
2010211526.tif 000010
【図９】
2010211526.tif 000011
【図１０】
2010211526.tif 000012
【図１１】
2010211526.tif 000013
【図１２】
2010211526.tif 000014
【図１３】
2010211526.tif 000015
【図１４】
2010211526.tif 000016
【図１５】
2010211526.tif 000017
【図１６】
2010211526.tif 000018
【図１７】
2010211526.tif 000019
【図１８】
2010211526.tif 000020
【図１９】
2010211526.tif 000021
【図２０】
2010211526.tif 000022
【図２１】
2010211526.tif 000023
【図２２】
2010211526.tif 000024
【図２３】
2010211526.tif 000025
【図２４】
2010211526.tif 000026
【図２５】
2010211526.tif 000027
【図２６】
2010211526.tif 000028
【図２７】
2010211526.tif 000029
【図２８】
2010211526.tif 000030
【図２９】
2010211526.tif 000031
【図３０】
2010211526.tif 000032
【図３１】
2010211526.tif 000033
【図３２】
2010211526.tif 000034
【図３３】
2010211526.tif 000035
【図３４】
2010211526.tif 000036
【図３５】
2010211526.tif 000037
【図３６】
2010211526.tif 000038
【図３７】
2010211526.tif 000039
【図３８】
2010211526.tif 000040
【図３９】
2010211526.tif 000041
【図４０】
2010211526.tif 000042
【図４１】
2010211526.tif 000043
【図４２】
2010211526.tif 000044
【図４３】
2010211526.tif 000045
【図４４】
2010211526.tif 000046
【図４５】
2010211526.tif 000047
【図４６】
2010211526.tif 000048
【図４７】
2010211526.tif 000049
【図４８】
2010211526.tif 000050
【図４９】
2010211526.tif 000051
【図５０】
2010211526.tif 000052