実施の形態1
以下実施の形態を、図面を参照して説明する。図1は制御システムの概要を示す説明図である。制御システムはコンピュータ1、仮想マシン2及び端末装置3、3、3・・を含む。コンピュータ1は例えばサーバコンピュータであり複数の仮想マシン(以下VM:(Virtual Machine)という)21、22、23、・・(以下、場合により2で代表する)を制御する。
端末装置3は例えばパーソナルコンピュータ、または、通信機能、入出力装置及びモニタを有する入出力装置等である。以下では、コンピュータ1を物理マシン1といい、また端末装置3はパーソナルコンピュータ(以下、コンピュータ3という)であるものとして説明する。
コンピュータ3と物理マシン1とはUSB(Universal Serial Bus)ケーブル、または、インターネット若しくはLAN(Local Area Network)等の通信網を介して接続されており、所定のプロトコルにて情報を送受信する。本実施の形態においては、コンピュータ3は物理マシン1に対しLANにより接続されている例を挙げて説明する。コンピュータ3を使用するユーザは物理マシン1を介してVM2を起動する。物理マシン1上では複数のVM21、22、23、・・・が動作している。以下ではVM21乃至23の3台のVM2を物理マシン1が制御する例を挙げて説明するが、この数に限定するものではない。
続いて本実施形態の概要を説明する。運転中のVM21が中断命令を受け付けた場合、物理マシン1はVM21を中断する。この場合VM21が使用していたメモリ内の情報をハードディスク等の他の記憶部に保存(以下、場合により記憶という)する。VM21を起動する場合、中断時に使用していたアプリケーションプログラム(以下、アプリケーションという)の一覧を表示する。図1の例ではアプリケーションA、アプリケーションB及びアプリケーションCの3つが表示される。ユーザは優先的に復元を希望するアプリケーションを選択する。物理マシン1はこの選択されたアプリケーションに係る情報を記憶部からメモリへ優先的に復元する。以下、詳細な内容を説明する。
図2は物理マシン1及びVM2のハードウェア及びソフトウェアを示すブロック図である。物理マシン1はハードウェアリソース10及び仮想化レイヤ17を含む。ハードウェアリソース10は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12、記憶部(HD15)、NIC(Network Interface Card)16、時計部18及び電源制御部19等を含む。ハードウェアリソース10は仮想化ソフトウェアである仮想化レイヤ17の制御下におかれる。CPU11は仮想化レイヤ17及び仮想化レイヤ17上の制御モジュール170の指示に従い、バス(図示せず)を介して接続される各ハードウェアを制御する。
メモリとしてのRAM12は例えばSRAM(Static RAM)、DRAM(Dynamic RAM)、フラッシュメモリ等である。RAM12は、CPU11による仮想化レイヤ17等各種プログラムの実行時に発生する種々のデータを一時的に記憶する。RAM12とは異なる他の記憶部は、例えばハードディスクまたは大容量メモリが利用される。本実施の形態においては他の記憶部はハードディスクであるものとして説明し、以下ではHD15という。HD15はVM2にて作成されたファイル及び仮想化レイヤ17の指示により記憶すべき各種データ等を記憶する。NIC16はイーサーネットカード等であり、コンピュータ3または図示しない他のWebサーバ等とHTTP(HyperText Transfer Protocol)等により情報を送受信する。時計部18は時刻情報をCPU11へ出力する。
仮想化レイヤ17と連携する制御モジュール170はVM21、22、23の中断処理または停止処理、及び、物理マシン1の電源管理処理を含む各種処理を行う。制御モジュール170は保存部171、選択部172、復元部173、中断部176、停止部177、起動部179、取得部178及びVM管理部174等を含みRAM12上にロードされて実行される。RAM12またはHD15にはページテーブル175、領域ファイル151及びハードウェア情報ファイル152等が用意されている。なお、本実施の形態においてはハードウェアリソース10上で仮想化レイヤ17が直接動作するハイパーバイザー型の仮想化ソフトウェアを用いる例を説明するが、これに限るものではない。Windows(登録商標)またはLinux(登録商標)上で仮想化ソフトウェアが動作するホスト型を用いても良いことはもちろんである。
停止状態にある物理マシン1を起動し、VM21の利用を希望するユーザはコンピュータ3により物理マシン1を起動する。コンピュータ3は物理マシン1に対し起動命令を出力する。また、コンピュータ3は複数のVM2の内、起動を希望するVM2を特定するための識別情報(以下、VMIDという)及びVM2の起動命令を物理マシン1へ出力する。なお、本実施の形態においてはVM21を起動する例を挙げて説明する。NIC16はWake On Lanに対応しており、物理マシン1の起動命令を受けて電源制御部19へ起動命令を出力する。なお、コンピュータ3は物理マシン1の電源を投入するためのマジックパケットをNIC16へ出力する。
電源制御部19は図示しない交流電源からの電力を物理マシン1へ供給する。これにより、物理マシン1が起動し、また仮想化レイヤ17及び制御モジュール170も起動する。起動部179はVM21を起動する。VM21は仮想化レイヤ17の制御下で動作する。VM21に対してインストールされたOS(Operating System)211は各種アプリケーションA、B、C・・(以下、場合により212で代表する)を実行する。アプリケーション212は例えば文書作成用アプリケーション、ブラウザ、表計算文書作成用アプリケーション、メーラ、または、プレゼンテーション用文書作成アプリケーション等である。VM21はNIC16を介してコンピュータ3へ画面情報を出力する。同様に他のユーザは他のコンピュータ3を用いてVM22を利用することができる。この場合、他のコンピュータ3はVM22のVMID及びVM22の起動命令を物理マシン1へ出力する。起動部179はこれを受けてVM22を起動する。なお、ユーザを特定するための固有のユーザ識別情報を付与し、複数のユーザが一のVM21を共有するようにしても良い。
コンピュータ3からVM21の中断命令が出力された場合、中断部176はこれを受け付け、VM21を中断する。中断部176は、RAM12内に記憶されたVM21のコンテキスト情報及びデバイス情報を含むハードウェア情報をハードウェア情報ファイル152に保存する。また、中断部176は中断命令を保存部171へ出力する。保存部171は、VM21が中断命令を受け付けた際に使用しているRAM12上の情報をHD15内の保存ファイル153に保存する。
図3は保存ファイル153のレコードレイアウトを示す説明図である。保存ファイル153はVMIDフィールド、中断開始時刻フィールド、アドレスフィールド、サイズフィールド、及び情報フィールドを含む。VMIDフィールドには中断命令を受けたVM2のVMIDが記憶される。中断開始時刻フィールドには、VM2を中断した際に時計部18から出力される時刻(以下、中断開始時刻という)がVMIDに対応づけて記憶されている。アドレスフィールドには中断命令を受けたVM2が使用しているRAM12のアドレスがVMIDに対応づけて記憶されている。
サイズフィールドには、中断命令を受けたVM2が使用しているRAM12のサイズが記憶され、情報フィールドには中断命令を受けたVM2が使用しているRAM12内の情報が記憶されている。保存部171は中断命令を受け付けた場合、対象となるVMID及び時計部18から出力される時刻を中断開始時刻として保存ファイル153に記憶する。また保存部171はVMIDに対応づけて中断命令を受け付けたVM2が使用するRAM12のアドレス、サイズ及び情報を保存ファイル153に記憶する。
中断後VM21が使用していたRAM12の領域は解放される。コンピュータ3からVM21の停止命令を受け付けた場合、停止部177はこれを受け付け、VM21を停止する。具体的には、VM21が使用しているOS211及びアプリケーション212を全て終了し、RAM12の領域内の情報をHD15に記憶することなく開放し、VM21の動作をシャットダウンする。
図4はVM管理部174のレコードレイアウトを示す説明図である。VM管理部174は運転、中断、または停止を含むVM2の状態をVMIDに対応づけて記憶している。図4の例ではVMIDが「VM01」のVM21は運転状態にあり、VMIDが「VM02」のVM22は中断状態にあることを示す。VM管理部174はVM21の状態を監視し、状態に変化があった場合に、VMIDに対応づけて変化後の状態を記憶する。
図5はハードウェア情報ファイル152のレコードレイアウトを示す説明図である。ハードウェア情報ファイル152はVMIDフィールド、中断開始時刻フィールド及びハードウェア情報フィールドを含む。中断開始時刻フィールドには、VMIDに対応づけて中断部176がVM2を中断した際の時計部18から出力される時刻情報(中断開始時刻)が記憶されている。
ハードウェア情報フィールドにはVMIDに対応づけて、中断状態にあるVM2を中断時と同じ状態で復元するためのCPU11及びRAM12等のハードウェアに関する情報が記憶されている。具体的にはハードウェア情報はCPU11のレジスタ情報等のコンテキスト情報、並びに、各ハードウェアのI/Oレジスタ値及びHD15のアクセスモード等のデバイス情報等が該当する。中断部176はVM2を中断する場合、RAM12に記憶された中断対象のVM2のハードウェア情報を読み出し、VMIDに対応づけてハードウェア情報をハードウェア情報ファイル152に記憶する。中断部176はあわせて中断時または中断命令を受け付けた際に時計部18から出力される時刻を中断開始時刻として記憶する。
起動部179はコンピュータ3から中断状態にあるVM21の起動命令を受け付ける。起動命令にはVMIDが含まれており、起動部179はVMIDに対応するVM21を起動する。起動部179は選択部172、復元部173及び取得部178に対し起動命令を出力する。復元部173は保存ファイル153に記憶した中断時のRAM12の情報を復元するに際し、選択部172により選択されたアプリケーション212から優先的に復元する。
取得部178は起動対象となるVMIDを参照し、保存ファイル153に記憶した中断時のRAM12内の情報を読み出す。図6はRAM12の内容を模式的に示す説明図である。図6において0、a、b・・・gは中断時にVM21が使用していたRAM12内の仮想アドレスを示す。なお、アドレスには仮想アドレス及び物理アドレスが存在するが、説明を容易にするために、仮想アドレスを例に挙げて説明する。なお、仮想アドレス及び物理アドレス間の関連づけは後述するページテーブル175に記憶されている。ここでの仮想アドレスとは、VM2における物理アドレスのことを指し、VM2のOS211は、仮想アドレスを物理アドレスとして扱う。その仮想アドレスを実際の物理アドレスに変換するためにページテーブル175を使用する。
VM21は仮想アドレス0〜gの領域を使用しており、仮想アドレスa〜bはOS211の領域であり、アプリケーション212のコードを含むOS211が記憶されている。本実施の形態においては、中断時にアプリケーションA、アプリケーションB及びアプリケーションCの3つが起動されていたものとして説明する。なお、アプリケーションAとアプリケーションBとは、文書作成用アプリケーションとブラウザとのように異なる種類のアプリケーション212である場合の他、同一のアプリケーション212であるが使用しているファイルが異なる場合も含む。
仮想アドレスc〜dはアプリケーションAの使用領域であり、仮想アドレスe〜fはアプリケーションBの使用領域であり、仮想アドレスf〜gはアプリケーションCの使用領域である。OS211内にはアプリケーションA乃至C(プロセス)の情報及び各アプリケーションA乃至Cが使用するRAM12の使用領域が記憶されている。取得部178はOS211内部を解析し、中断時に使用していた各アプリケーション212を特定すると共に、各アプリケーション212が使用していたRAM12の使用領域を取得する。具体的には取得部178は各アプリケーション212の情報へアクセスするための変数(以下、プロセスリスト)のアドレスの特定を行う。この場合、取得部178はOS211のコンパイル時に作成されるシンボル(関数名または変数名)とアドレスとの組になった情報から、プロセスリストのアドレスの特定を行う。その他、OS211の仮想アドレス先頭から命令を順次解析することで、プロセスリストのアドレスを特定しても良い。具体的な特定方法の一例を以下に示す。Linux(登録商標)においては、OS211(カーネル)のコンパイル時に、シンボル(関数または変数名)が、実行時にどのアドレスに展開されるかを示すファイル”System.map”が、実行ファイル以外にも作成される。「プロセスリストのアドレス」は、Linux(登録商標)では、”init_task”という変数名の構造体である。例えばある環境においては、”init_task”は”System.map”にて、”ffffffff802e5ae0 D init_task”と記載されている。つまり、実行時には、”init_task”は”0xffffffff802e5ae0”のアドレスに配置される。このアドレスを参照することにより、”init_task”にリストとしてつながれているプロセスをすべて辿ることにより、全てのプロセスの構造体を取得することができる。その他、”System.map”が存在しない例を説明する。この場合、OS211(カーネル)が配置される場所は変化しないため、カーネルのブート後の処理をマシン語から解析し、”init_task”を使用する箇所を特定する。これは、カーネルがどのような処理を行うのかを予め把握しておくことで実行することができる。
次いで、取得部178はプロセスリストのアドレスを参照し、OS211内に存在する構造体内部の検索を行い各アプリケーション212の構造体を特定する。取得部178は、当該特定したアプリケーション212の構造体内部を解析し、各アプリケーション212の使用領域を取得する。取得部178は取得したアプリケーション212の使用領域等を領域ファイル151に記憶する。図7は領域ファイル151のレコードレイアウトを示す説明図である。領域ファイル151はVMID毎に各アプリケーション212の使用領域に関する情報を記憶している。領域ファイル151は識別情報フィールド、使用領域フィールド、サイズフィールド及びブロック番号フィールドを含む。
識別情報フィールドには、中断時に実行していたアプリケーション212を特定するための固有の識別情報が記憶される。この識別情報は、アプリケーション名、アプリケーション212に付与される固有のID、アプリケーション名及び当該アプリケーション212のファイル名、パス、フォルダ名、ブラウザ名及びWebページ名、メーラ及びトレイ名、並びに、メーラ及びメールタイトル等である。例えば文書作成アプリケーションの場合、アプリケーション名及び文書のファイル名が識別情報として記憶される。また、エクスプローラ等のフォルダ内部を表示するアプリケーション212の場合、フォルダ名、またはパス等が識別情報として記憶される。
アプリケーション212がブラウザである場合、ブラウザ名及び中断時に表示していたWebページを特定するためのWebページ名またはURL(Uniform Resource Locator)が識別情報として記憶される。またアプリケーション212がメーラの場合、メーラの種類、及び、トレイ名またはメールのフォルダ名等が識別情報として記憶される。本実施の形態においては、説明を容易にするためにアプリケーションAが、文書作成アプリケーションでありファイル名が「文書A」、アプリケーションBが同じく文書作成アプリケーションでありファイル名が「文書B」であるものとして説明する。またアプリケーションCが、プレゼンテーション用アプリケーションでありファイル名が「スライドC」であるものとして説明する。
アプリケーション212の識別情報に対応づけて使用領域フィールドには使用領域が記憶されている。例えばアプリケーションAの使用領域は仮想アドレスc〜dと記憶されている。サイズフィールドには、各アプリケーション212が使用する使用領域のサイズを記憶している。なお、本実施の形態においては使用領域に関する情報として識別情報及び使用領域を例としてあげたがこれに限るものではない。例えば、使用領域に関する情報として識別情報、及び各アプリケーション212の先頭仮想アドレスとサイズとを記憶するようにしても良い。この場合、先頭仮想アドレス及びサイズから、各識別情報に対応する使用領域が算出される。ブロック番号フィールドにはHD15へのスワップ先のアドレスが記憶されている。中断時においてアプリケーション212が使用するRAM12内の情報がHD15へスワップされている場合、スワップ先の番号が記憶される。図7の例ではアプリケーションCについてスワップ先の番号が記憶されている。ブロック番号が存在している場合は、その領域がOS211によってスワップインされるアドレスが未定なため、使用領域は無効である。また、スワップインはOS211によって行われるため、ブロック番号は、HD15からスワップインすべき情報をあらかじめ読み込んでおくために使用する。つまり、キャッシュとしてメモリに読み込んでおくことで、OS211のスワップインの処理のときに、HD15から読み込む時間を短縮することが目的である。
取得部178は上述した如くOS211からアプリケーション212を特定し、特定したアプリケーション212についてOS211内の構造体を解析することでアプリケーション名及びファイル名を抽出する。取得部178は抽出したアプリケーション212のアプリケーション名及びファイル名を識別情報として領域ファイル151に記憶する。また取得部178はOS211を解析しアプリケーション212の使用領域を取得し、領域ファイル151に記憶する。また、取得部178はOS211を解析し、アプリケーション212の情報がHD15にスワップされていると判断した場合、スワップ先のブロック番号を領域ファイル151に記憶する。
選択部172は領域ファイル151を参照し、アプリケーション212の識別情報を選択するための選択画面をHD15から読み出す。選択部172は選択画面をコンピュータ3へ出力する。図8は選択画面のイメージを示す説明図である。選択部172は領域ファイル151から起動対象となるVMIDに対応する識別情報を読み出す。選択部172はテンプレートとなる基本選択画面に、読み出した識別情報を記述し、選択画面34を生成する。図8に示す如く、選択画面34には、複数のアプリケーション212の識別情報が表示され、識別情報に対応する選択項目が表示される。以下では識別情報に対応する選択項目をチェックボックス341という。ユーザはコンピュータ3のマウス等から優先的に復元を希望するアプリケーション212の識別情報に対応するチェックボックス341をクリックし、決定ボタン342をクリックする。なお識別情報に対応する選択項目を出力する際は、チェックボックス341に代えて、ハイパーリンク(図示せず)を選択項目として出力しても良い。この場合、選択部172は識別情報を特定するための情報が付加されたハイパーリンクを識別情報に対応づけて記述する。選択部172は、当該ハイパーリンクに対する入力操作をコンピュータ3から受け付ける。
コンピュータ3にて選択された識別情報はNIC16を介して、選択部172により受け付けられる。選択部172は選択された識別情報を復元部173へ出力する。本実施の形態においては文書作成アプリケーション「文書A」(アプリケーションA)が選択されたものとして説明する。復元部173はVM21が使用するRAM12の割り当てを行う。そして、復元部173はハードウェア情報ファイル152に記憶されたVMIDに対応するハードウェア情報を読み出す。復元部173はRAM12に読み出したハードウェア情報を復元する。さらに、復元部173は取得部178が取得したOS211をRAM12の割り当てた領域に復元する。
続いて、復元部173は領域ファイル151に記憶した使用領域に関する情報に基づいて特定されるRAM12上の使用領域へ「文書A」の情報を復元する。復元部173は選択された識別情報「文書A」に対応する使用領域を領域ファイル151から読み出す。復元部173は読み出した使用領域を元に、保存ファイル153からアプリケーションAの復元に必要な情報を読み出す。そして復元部173は読み出した情報をRAM12上の読み出した使用領域へ復元する。図9はページテーブル175のレコードレイアウトを示す説明図である。復元部173はページテーブル175に仮想アドレスと物理アドレスとの対応関係を記憶する。復元部173は復元の際、仮想アドレスに対応づけて復元先となるRAM12の物理アドレスをページテーブル175に記憶する。コンピュータ3からアプリケーションAの操作命令を受け付けた場合、優先的に復元された仮想アドレスに対応する物理アドレスがページテーブル175から読み出されて処理が実行される。
復元部173は優先的に復元するアプリケーションAの復元を終えた後、他のアプリケーションB,Cの復元を同様に行う。なお上述した各種ファイルのレコードレイアウトはあくまで一例でありこれに限るものではない。データ間の関連づけが確保されているのであれば、他のデータの持ち方を採用しても良い。また保存ファイル153等は必ずしも物理マシン1内のHD15に記憶する必要はなく、NIC16を介して接続される図示しないデータベース内に記憶し、適宜情報の書き込み及び読み出しを行っても良い。また本実施の形態においては「文書A」のみを選択する例を挙げたがこれに限るものではない。選択部172は、複数の識別情報を選択順位と共に、コンピュータ3から受け付けても良い。この場合、復元部173は複数の選択されたアプリケーション212,212,・・・の内、選択順位が高いアプリケーション212から優先的に復元する。例えば識別情報「文書A」が選択順位「1」、識別情報「文書B」が選択順位「2」であるとする。選択部172はコンピュータ3から複数の識別情報及び選択順位の組み合わせを受け付ける。復元部173は選択順位を参照し、識別情報「文書A」に係るアプリケーション212を先に復元する。「文書A」の復元後、復元部173は、選択順位に従い、識別情報「文書B」に係るアプリケーション212の復元を行う。
図10は復元処理の遷移を模式的に示す説明図である。図10Aは中断時におけるRAM12の状態を示す説明図である。中断時にはアプリケーションA、アプリケーションB及びアプリケーションCがそれぞれRAM12を使用している。図10Bは優先的にアプリケーションAを復元する際のRAM12の状態を示す説明図である。選択されたアプリケーションAの使用領域c〜dについて情報が復元されている。図10Cは優先的に復元したアプリケーションAの後に、アプリケーションBが復元されている状態を示す説明図である。アプリケーションAに次いでアプリケーションBが使用領域e〜fに復元されている。
図10Dは復元が完了した際のRAM12の状態を示す説明図である。最後に使用領域f〜gにアプリケーションCの情報が復元される。なお、図10Bの如くアプリケーションB及びアプリケーションCの復元が完了していない場合、復元部173はページフォルトを発生させ、HD15から対応する情報をRAM12に復元する。具体的には、復元部173は仮想アドレスに対するアクセスをコンピュータ3から受け付けた場合、ページテーブル175の対応する物理アドレスを参照する。ここで復元部173は物理アドレスが存在しないと判断した場合、領域ファイル151の使用領域に対応する情報を保存ファイル153から読み出す。そして復元部173は読み出した情報をRAM12に復元する。
例えばアプリケーションCの使用領域f〜gに対する操作命令を受け付けた場合、HD15内の保存ファイル153に記憶された情報の内、使用領域f〜gに対応する情報を読み出して、RAM12に復元する。なお、上述した保存部171等の制御モジュール170が実行する処理はCPU11が行う。
図11及び図12は中断処理の手順を示すフローチャートである。ユーザは物理マシン1の起動後に使用を希望するVM2をコンピュータ3にて指定する。コンピュータ3はVM2のVMID及び起動命令を物理マシン1へ出力する。物理マシン1の起動部179はNIC16を介してVMID及びVM2の起動命令を受け付ける(ステップS111)。起動部179はVM2を起動する(ステップS112)。VM2上ではOS211が起動する。VM管理部174はVMIDに対応づけて状態「運転」を記憶する(ステップS113)。またコンピュータ3からアプリケーション212の起動命令を受け付けた場合、VM2上のOS211はアプリケーション212を起動する(ステップS114)。本例では複数のアプリケーションA,B,Cが起動されているものとして説明する。
ユーザはVM2の中断を希望する場合コンピュータ3から中断命令を入力する。コンピュータ3はVM2の中断命令及び対象となるVMIDを出力する。中断部176はNIC16を介してコンピュータ3からVM2の中断命令及びVMIDを受け付けたか否かを判断する(ステップS115)。中断部176はVMIDの中断命令を受け付けていないと判断した場合(ステップS115でNO)、処理をステップS114へ戻す。一方、中断部176はVM2の中断命令及びVMIDを受け付けたと判断した場合(ステップS115でYES)、中断命令を保存部171へ出力する。ここでは、中断部176への中断命令の出力例を示したが、コンピュータ3において、VM2上のOS211に対して中断命令を発行することも可能である。その際は、OS211から中断命令が中断部176へ出力される。
保存部171はRAM12内の中断対象のVM2に係るハードウェア情報をハードウェア情報ファイル152に、VMIDに対応づけて記憶する(ステップS116)。この場合保存部171は時計部18から出力される時刻を中断開始時刻としてVMIDに対応づけてハードウェア情報ファイル152に記憶する(ステップS117)。保存部171は中断対象のVM2が使用しているRAM12内の情報をVMIDに対応づけて保存ファイル153に記憶する(ステップS118)。
保存部171は時計部18から出力される時刻を中断開始時刻としてVMIDに対応づけて保存ファイル153に記憶する(ステップS119)。その他保存部171は中断対象となるVM2が使用するRAM12の使用領域(アドレス)及びサイズをVMIDに対応づけて保存ファイル153に記憶する(ステップS121)。保存部171はステップS121の処理が完了した場合、完了情報を中断部176へ出力する。中断部176は完了情報を受信した場合、中断対象のVM2が使用していたRAM12等のハードウェアリソース10を解放する(ステップS122)。VM管理部174はVMIDに対応づけて状態「中断」を記憶する(ステップS123)。
図13は領域ファイル151の生成処理の手順を示すフローチャートである。中断状態にあるVM2の起動を希望するユーザは、コンピュータ3から起動命令及び起動対象のVMIDを出力する。なお、コンピュータ3からVMIDを出力する代わりに、コンピュータ3のハードウェアのMAC(Media Access Control address)を物理マシン1へ出力するようにしても良い。この場合、物理マシン1はMACアドレスとVMIDとを対応づけており、VMIDに対応するVM2を起動することができる。またVM2を特定できるものであれば、ユーザID、または、コンピュータ名等であっても良い。
起動部179はNIC16を介して、VMID及びVM2の起動命令を受け付ける(ステップS131)。起動部179は起動命令を取得部178へ出力する。取得部178はOS211内部を解析し、中断時に使用していた各アプリケーション212を特定すると共に、各アプリケーション212が使用していたRAM12の使用領域を取得する。取得部178はまずVMIDを参照し、保存ファイル153から対応するVM2の情報の内、OS211を読み出す(ステップS132)。取得部178はOS211内の各アプリケーション212へアクセスするための変数であるプロセスリストのアドレスを特定する(ステップS133)。
取得部178は取得したプロセスリストのアドレスを参照し、OS211内に存在する構造体内部の検索を行い、各アプリケーション212の構造体を特定する(ステップS134)。取得部178は、当該特定したアプリケーション212の構造体内部を解析し、各アプリケーション212の使用領域を取得する(ステップS135)。取得部178は取得した使用領域に基づき当該使用領域のサイズを算出する(ステップS136)。
取得部178はアプリケーション212の構造体内部を解析し、各アプリケーション212のアプリケーション名及びファイル名を識別情報として取得する(ステップS137)。取得部178はVMID及び識別情報に対応づけて、取得した使用領域及びサイズを領域ファイル151に記憶する(ステップS138)。さらに取得部178は各アプリケーション212の構造体内部を解析し、スワップアウト状態が存在するか否かを判断する(ステップS139)。取得部178はスワップアウト状態が存在すると判断した場合(ステップS139でYES)、退避先であるHD15のブロック番号を取得する(ステップS1310)。
取得部178はVMIDに対応づけて取得したアプリケーション212に係るブロック番号を、領域ファイル151に記憶する(ステップS1311)。取得部178はスワップアウト状態が存在しないと判断した場合(ステップS139でNO)、ステップS1310及びS1311の処理をスキップする。
図14乃至図16は復元処理の手順を示すフローチャートである。図13において述べた領域ファイル151の生成と同じく、中断状態にあるVM2を起動する際にはCPU11は以下の処理を行う。中断状態にあるVM2の起動を希望するユーザは、コンピュータ3から起動命令及び起動対象のVMIDを出力する。起動部179はNIC16を介して、VMID及びVM2の起動命令を受け付ける(ステップS141)。起動部179は起動命令を復元部173へ出力する。復元部173はハードウェア情報ファイル152からVMIDに対応するハードウェア情報を読み出す(ステップS142)。復元部173は起動対象となるVM2にRAM12の使用領域の割り当てを行う(ステップS143)。
復元部173はステップS142で読み出したVM2のハードウェア情報を、RAM12に記憶する(ステップS144)。復元部173はVMIDに対応するOS211を保存ファイル153から読み出す。復元部173は読み出したOS211をステップS143で割り当てたRAM12の領域に記憶する(ステップS145)。選択部172はHD15から予め記憶したテンプレートとなる基本選択画面を読み出す(ステップS146)。選択部172は領域ファイル151からVMIDに対応する識別情報を読み出す(ステップS147)。
選択部172は読み出した基本選択画面に識別情報を記述し、選択画面34を生成する(ステップS148)。選択部172は生成した選択画面34を、NIC16を介してコンピュータ3へ出力する(ステップS149)。これにより、コンピュータ3の表示部には図8に示す選択画面34が表示される。ユーザはコンピュータ3に表示される識別情報の内優先的に復元を希望する識別情報を選択する。ユーザはマウス等を介して識別情報を選択するためのチェックボックス341をクリックし、決定ボタン342をクリックする。コンピュータ3は決定ボタン342のクリックをトリガに、VMID及び識別情報を選択情報として物理マシン1へ出力する。
選択部172はNIC16を介して、VMID及び識別情報の入力を受け付ける(ステップS1410)。選択部172は選択された識別情報を復元部173へ出力する。復元部173は受け付けた識別情報に対応する使用領域を領域ファイル151から読み出す(ステップS152)。復元部173は、VMIDに対応する当該使用領域の情報を保存ファイル153から読み出す(ステップS153)。
復元部173は読み出したアプリケーション212の情報を、ステップS143で割り当てたRAM12に対して、ステップS152で読み出した使用領域に復元する(ステップS154)。使用領域は、ステップS143で割り当てられたRAM12の領域に対して、相対的な領域となる。以降、使用領域(仮想アドレス)をRAM12に復元する処理は、割り当てたRAM12への相対的な領域とする。復元部173は情報を使用領域に復元する場合、ページテーブル175に使用領域に対応するRAM12の物理アドレスを記憶する(ステップS155)。復元部173はステップS153で読み出した情報が使用領域内に全て復元されたか否かを判断する(ステップS156)。
復元部173は復元が終了していないと判断した場合(ステップS156でNO)、ステップS154へ移行し処理を繰り返す。復元部173は復元が終了したと判断した場合(ステップS156でYES)、復元完了情報をVM管理部174へ出力する。VM管理部174は復元完了情報を受け付けた場合、状態を「運転」と記憶する(ステップS1514)。復元部173は、ステップS1410で受け付けた識別情報以外の情報を復元する。すなわちユーザが優先処理を希望しなかった他のアプリケーション212の復元処理を行う。復元部173は他のアプリケーション212の使用領域を領域ファイル151から読み出す(ステップS157)。
復元部173はVMIDに対応する使用領域の情報を保存ファイル153から読み出す(ステップS158)。復元部173は読み出した他のアプリケーション212の情報を、ステップS143でVM2に割り当てたRAM12に対して、ステップS157で読み出したRAM12の使用領域に復元する(ステップS159)。復元部173はRAM12の使用領域(仮想アドレス)に情報が記憶される度に、ページテーブル175に使用領域に対応するRAM12の物理アドレスを記憶する(ステップS1511)。復元部173は復元が完了したか否かを判断する(ステップS1512)。
復元部173は復元が完了していないと判断した場合(ステップS1512でNO)、ステップS159へ移行し処理を繰り返す。復元部173は復元が完了したと判断した場合(ステップS1512でYES)、領域ファイル151に記憶した全ての識別情報に係るアプリケーション212の情報の復元が完了したか否かを判断する(ステップS1513)。復元部173は全てのアプリケーション212に係る情報の復元が完了していないと判断した場合(ステップS1513でNO)、ステップS157へ移行し、未復元の識別情報に係るアプリケーション212の情報の復元を繰り返し実行する。
復元部173は全ての識別情報に係るアプリケーション212の情報の復元が完了したと判断した場合(ステップS1513でYES)、処理を完了する。
図17及び図18はページフォルト処理の手順を示すフローチャートである。ステップS157乃至S1513の処理が完了するまでの間に、RAM12の物理アドレスに対応する情報が復元されていない場合、ページフォルト処理を実行する。
復元部173は、コンピュータ3から復元中のRAM12へアプリケーション212に対するアクセス要求が存在するか否かを判断する(ステップS161)。復元部173はアクセス要求が存在しないと判断した場合(ステップS161でNO)、以上の処理を繰り返す。一方、復元部173はアクセス要求があったと判断した場合(ステップS161でYES)、ページテーブル175に仮想アドレスに対応する物理アドレスが存在するか否かを判断する(ステップS162)。
復元部173は物理アドレスが存在すると判断した場合(ステップS162でYES)、既に当該アプリケーション212に対する復元が完了しているとして、RAM12から情報を読み出し(ステップS163)、処理を進行する。
その後処理を再びS161へ戻す。復元部173はアクセスのあった仮想アドレスに対する物理アドレスがページテーブル175に存在しないと判断した場合(ステップS162でNO)、復元が完了していないことからページフォルト処理を以下のとおり行う。
復元部173は仮想アドレスに対応する情報を保存ファイル153から読み出す(ステップS169)。
復元部173は読み出した情報をRAM12の使用領域(仮想アドレス)に復元する(ステップS171)。復元部173はページテーブル175に仮想アドレスに対応する物理アドレスを記憶する(ステップS172)。これにより、中断状態にあるVM2を起動する場合、ユーザの希望するアプリケーション212を優先的に復元することが可能となる。また、他のアプリケーション212の使用するRAM12については、バックグラウンドやページフォルトなどにより復元することが可能である。
実施の形態2
実施の形態2は中断前にアプリケーション212が使用するRAM12の使用領域を領域ファイル151に記憶する形態に関する。図19は実施の形態2に係る物理マシン1及びVM2のハードウェア及びソフトウェアを示すブロック図である。物理マシン1には履歴ファイル154が設けられる。図20は履歴ファイル154のレコードレイアウトを示す説明図である。履歴ファイル154はアプリケーション212のVM2別に、識別情報に対応づけて起動時刻を記憶している。なお、図20の例はVM21のアプリケーション212の履歴ファイルを示している。各VM2のOS211は、各VM2にて起動中のアプリケーション212のアプリケーション名、ファイル名及び使用領域等に関する情報を取得部178へ出力する。取得部178は履歴ファイル154にアプリケーション212の使用に関する履歴情報を記憶する。
履歴ファイル154はアプリケーション名フィールド、ファイル名フィールド、及び起動時刻フィールドを含む。本実施の形態においてはアプリケーション名及びファイル名を実行中のアプリケーション212を特定するための識別情報であるものとして説明する。アプリケーション名フィールドには、VM2毎に、VM2にて実行中のアプリケーション名が記憶される。ファイル名フィールドには、アプリケーション名に対応づけて実行中のアプリケーション212に係るファイル名が記憶されている。起動時刻フィールドには、各アプリケーション212が起動した際に時計部18から出力されるアプリケーション212の使用開始時刻(以下、起動時刻という)を記憶している。なお、本実施の形態においては、説明を容易にするために日時のみを表示しているが、年も同様に記憶しても良いことはもちろんである。
VM2のOS211はアプリケーション212が起動する度に、起動中のアプリケーション名及びファイル名を取得部178へ出力する。取得部178は取得したアプリケーション及びファイル名をVM2毎に履歴ファイル154に記憶する。また取得部178は時計部18の出力を参照し起動時刻を履歴ファイル154に記憶する。なお、起動時刻もOS211から取得しても良い。図21は実施の形態2に係る領域ファイル151のレコードレイアウトを示す説明図である。領域ファイル151はアプリケーション名フィールド、ファイル名フィールド、使用領域フィールド、及び、サイズフィールド等を含む。アプリケーション名フィールドにはVM2にて実行中のアプリケーション名がVM2毎に記憶されている。またファイル名フィールドには実行中のアプリケーション212に係るファイル名が記憶されている。
使用領域フィールドには識別情報に対応づけてアプリケーション212のファイルが使用しているRAM12の使用領域を記憶している。サイズフィールドには識別情報に対応づけてアプリケーション212のファイルが使用しているRAM12の使用領域のサイズを記憶している。なお、ブロック番号は実施の形態1で述べたとおりであるので説明を省略する。VM2のOS211はアプリケーション212の起動、RAM12の使用領域の変更、及び、停止等があった場合、アプリケーション名、ファイル名及び使用領域の情報を取得部178へ出力する。
取得部178は取得したアプリケーション名、ファイル名及び使用領域をVM2に対応づけて領域ファイル151に記憶する。また取得部178は取得した使用領域からサイズを算出し、識別情報に対応づけて領域ファイル151に記憶する。VM2のOS211により起動中のアプリケーション212に関する情報が収集される。なお、実施の形態1と同様に取得部178は各VM2が使用するRAM12のOS211から一定時間毎にアプリケーション名、ファイル名及び使用領域を取得するようにしても良い。
図22及び図23は中断処理の手順を示すフローチャートである。ユーザは物理マシン1の起動後に使用を希望するVM2をコンピュータ3にて指定する。コンピュータ3はVM2のVMID及び起動命令を物理マシン1へ出力する。物理マシン1の起動部179はNIC16を介してVMID及びVM2の起動命令を受け付ける(ステップS221)。起動部179はVM2を起動する(ステップS222)。VM2上ではOS211が起動する。VM管理部174はVMIDに対応づけて状態「運転」を記憶する(ステップS223)。
OS211はアプリケーション212の起動命令を受け付けたか否かを判断する(ステップS224)。OS211は起動命令を受け付けたと判断した場合(ステップS224でYES)、起動したアプリケーション名及びファイル名を取得部178へ出力する(ステップS225)。取得部178はアプリケーション名及びファイル名を取得する。取得部178は取得したアプリケーション名、ファイル名及び時計部18から出力される時刻を起動時刻としてVMIDに対応づけて履歴ファイル154に記憶する(ステップS226)。なお、アプリケーション212の終了命令を受け付けた場合、終了命令を受けたアプリケーション名、ファイル名及び起動時刻を履歴ファイル154から削除する。
OS211はアプリケーション名、ファイル名及び起動したアプリケーション212が使用するRAM12の使用領域を取得部178へ出力する(ステップS227)。取得部178はアプリケーション名、ファイル名及び使用領域を取得する。取得部178はアプリケーション名、ファイル名及び使用領域を領域ファイル151にVMIDに対応づけて記憶する(ステップS228)。OS211はアプリケーション212の起動命令を受け付けていない場合(ステップS224でNO)、ステップS225乃至S228の処理をスキップする。
OS211は起動中のアプリケーション212のRAM12に対する使用領域に変更があったか否かを判断する(ステップS229)。OS211は使用領域に変更があったと判断した場合(ステップS229でYES)、アプリケーション名、ファイル名及び変更後の使用領域を取得部178へ出力する(ステップS231)。取得部178はアプリケーション名、ファイル名及び変更後の使用領域をVMIDに対応づけて領域ファイル151に記憶する(ステップS232)。これにより、アプリケーション名及びファイル名毎に、使用履歴の情報が更新される。なお、アプリケーション212の終了命令を受け付けた場合、終了命令を受けたアプリケーション名、ファイル名及び使用領域を領域ファイル151から削除する。
OS211は起動中のアプリケーション212の使用領域に変更がないと判断した場合(ステップS229でNO)、ステップS231及びS232の処理をスキップする。ユーザはVM2の中断を希望する場合コンピュータ3から中断命令を入力する。コンピュータ3はVM2の中断命令及び対象となるVMIDを出力する。中断部176はNIC16を介してコンピュータ3からVM2の中断命令及びVMIDを受け付けたか否かを判断する(ステップS233)。中断部176はVMIDの中断命令を受け付けていないと判断した場合(ステップS233でNO)、処理をステップS224へ戻す。一方、中断部176はVM2の中断命令及びVMIDを受け付けたと判断した場合(ステップS233でYES)、中断命令を保存部171へ出力する。
保存部171はRAM12内の中断対象のVM2に係るハードウェア情報をハードウェア情報ファイル152に、VMIDに対応づけて記憶する(ステップS234)。この場合保存部171は時計部18から出力される時刻を中断開始時刻としてVMIDに対応づけてハードウェア情報ファイル152に記憶する(ステップS235)。保存部171は中断対象のVM2が使用しているRAM12内の情報をVMIDに対応づけて保存ファイル153に記憶する(ステップS236)。
保存部171は時計部18から出力される時刻を中断開始時刻としてVMIDに対応づけて保存ファイル153に記憶する(ステップS237)。その他保存部171は中断対象となるVM2が使用するRAM12の使用領域及びサイズをVMIDに対応づけて保存ファイル153に記憶する(ステップS238)。保存部171はステップS238の処理が完了した場合、完了情報を中断部176へ出力する。
中断部176は完了情報を受信した場合、中断対象のVM2が使用していたRAM12等のハードウェアリソース10を解放する(ステップS239)。VM管理部174はVMIDに対応づけて状態「中断」を記憶する(ステップS2310)。中断後起動命令を受け付けた場合の処理は、図14乃至図16で述べたとおりであるので説明を省略する。ステップS229では、OS211によりアプリケーション212の使用領域変更を判断しているが、これ以外にも、アプリケーション212が使用する領域として、OS211の領域も含めるようにしてもよい。その場合は、ステップS145はスキップすることになる。なお、図8で示した選択画面34の出力は起動時に表示する例を挙げて説明するがこれに限るものではない。
実施の形態2においては中断時に領域ファイル151を参照し、VM2が中断する前に起動後に優先的に復元するアプリケーション212の識別情報の入力を受け付けても良い。図24及び図25は中断する前に識別情報の入力を受け付ける際の手順を示すフローチャートである。ステップS233からS238までの間に以下の処理を行う。中断部176はNIC16を介してコンピュータ3からVMID及びVM2の中断命令を受け付ける(ステップS241)。中断部176は選択部172に対し中断命令を出力する。選択部172はHD15から基本選択画面を読み出す(ステップS242)。
選択部172は起動中であったVMIDに対応するアプリケーション名及びファイル名を領域ファイル151から読み出す(ステップS243)。選択部172はアプリケーション名及びファイル名を基本選択画面に記述し、選択画面34を生成する(ステップS244)。選択部172は選択画面34を、NIC16を介してコンピュータ3へ出力する(ステップS245)。これにより、コンピュータ3の表示部には図8に示す選択画面34が表示される。ユーザはコンピュータ3に表示される識別情報の内優先的に復元を希望する識別情報を選択する。ユーザはマウス等を介して識別情報を選択するためのチェックボックス341をクリックし、決定ボタン342をクリックする。コンピュータ3は決定ボタン342のクリックをトリガに、VMID及び識別情報を物理マシン1へ出力する。
選択部172はNIC16を介して、VMIDの他、アプリケーション名及びファイル名の入力を受け付ける(ステップS246)。選択部172はHD15に受け付けたアプリケーション名及びファイル名をVMIDに対応づけて記憶する(ステップS247)。その後、ステップS239及びS2310の処理を経て中断対象のVM2は中断する。
続いて起動時の処理を説明する。起動部179はVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS248)。起動部179は起動命令を受け付けていない場合(ステップS248でNO)、起動命令を受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS248でYES)、起動対象のVMIDに係るアプリケーション名及びファイル名をHD15から読み出す(ステップS249)。起動部179は復元部173にVMID及び起動命令を出力する。
復元部173は読み出したアプリケーション名及びファイル名に対応する使用領域を領域ファイル151から読み出す(ステップS251)。復元部173は読み出したVMIDに対応する使用領域の情報を保存ファイル153から読み出す(ステップS252)。復元部173は読み出したアプリケーション212のファイルに係る情報をRAM12の使用領域に復元する(ステップS253)。以降の処理はステップS155と同様であるので詳細な説明は省略する。これにより、中断時または起動時にユーザに優先的に復元を希望するアプリケーション212を選択させることが可能となる。
本実施の形態2は以上の如きであり、その他は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。また、起動時の処理の詳細を省略しているが、起動命令を受け付けた後、VM2へのRAM12割り当てやOS211の読み出しなど、実施の形態1で述べた処理を行う。起動時の処理については、以降についても同様に省略することがある。
実施の形態3
実施の形態3は履歴情報に基づき優先的に復元するアプリケーション212を選択する形態に関する。選択部172はVM2の起動の際、履歴ファイル154を参照し、中断時に使用していたアプリケーション212の起動時刻を履歴ファイル154から読み出す。選択部172は起動の際、時計部18から出力される現在時刻を取得する。選択部172は各アプリケーション212の起動時刻と現在時刻とに基づき、優先的に復元するアプリケーション212を選択する。これは起動時刻の年月日を除き、起動時刻と現在時刻との差分が小さいものを選択するようにすればよい。また選択する数は予めHD15に記憶しておけばよい。本例では説明を容易にするために1つのアプリケーション212を選択する例を説明する。
その他、現在時刻以降の時間帯であって、かつ、起動時刻の年月日を除き起動時刻と現在時刻との差分が小さいものを選択するようにしても良い。その他、現在時刻から所定期間内(例えば3日間以内)の年月日を有する起動時刻から選択するようにしても良い。本実施形態では一例として、現在時刻から所定期間内の年月日を有し、現在時刻以降の時間帯であって、かつ、起動時刻の年月日を除き起動時刻と現在時刻との差分が小さいものを選択する例を説明する。
図26は選択処理の手順を示すフローチャートである。起動部179はVMID及びVM2の起動命令を、NIC16を介して受け付ける(ステップS261)。選択部172は履歴ファイル154からVM2の中断時に使用していたアプリケーション名、ファイル名及び起動時刻を読み出す(ステップS262)。選択部172は時計部18から出力される年月日を含む時刻を現在時刻として取得する(ステップS263)。選択部172はHD15に予め記憶した所定期間を読み出す(ステップS264)。なお、この所定期間はコンピュータ3により適宜の期間を設定することが可能である。
選択部172は現在時刻から遡って所定期間内の起動時刻を有するアプリケーション名及びファイル名を読み出す(ステップS265)。これは例えば現在時刻から遡って3日以内の起動時刻を有するアプリケーション名及びファイル名を選択すればよい。選択部172は現在時刻から起動時刻までの経過時間を差分として算出する(ステップS266)。例えば現在時刻が午前11時10分、起動時刻が午後12時10分である場合、経過時刻である差分1時間となる。また現在時刻が午前11時10分、起動時刻が午前10時10分である場合、経過時刻である差分23時間となる。
選択部172はステップS266で算出した差分が最も小さい起動時刻を有するアプリケーション名及びファイル名を選択する(ステップS267)。これにより、ユーザのVM2の使用履歴に応じて最適なアプリケーション212を優先的に復元することが可能となる。
本実施の形態3は以上の如きであり、その他は実施の形態1及び2と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態4
実施の形態4はアプリケーション212の使用状況に応じて最適なアプリケーション212を選択する形態に関する。図27はコンピュータ3の表示部に表示される画面イメージを示す説明図である。コンピュータ3を使用するユーザは運転中のVM2にて、3つのアプリケーション212を使用している。表示部にはアプリケーション名「A」、ファイル名「A1」のアプリケーション212のウィンドウ343、アプリケーション名「B」、ファイル名「B1」のアプリケーション212のウィンドウ344、及び、アプリケーション名「C」、ファイル名「C1」のアプリケーション212のウィンドウ345が表示される。ユーザはコンピュータ3のマウス等により使用を希望するウィンドウ343、344、345(以下、場合によりWで代表する)のいずれかを選択する。
選択されたウィンドウWの情報はNIC16を介してOS211へ出力される。図の例ではウィンドウ343が選択されていることが理解できる。ここで、他のウィンドウ344及び345は非選択の状態である。この状態でウィンドウ344をクリックした場合、ウィンドウ344が選択されたことになり、逆にウィンドウ343及び345は非選択の状態となる。なお、ウィンドウWをクリックして選択する以外にも、表示部下部に表示されるタスクバーに表示された矩形状のボタンをクリックすることによりウィンドウWを選択しても良い。取得部178はVMID、アプリケーション名及びファイル名に対応づけて選択情報を履歴ファイル154に記憶する。選択情報はアプリケーション212が選択されているか否かを示す情報である。
図28は履歴ファイル154のレコードレイアウトを示す説明図である。履歴ファイル154はアプリケーション212のVM2別に、識別情報に対応づけて起動時刻及び選択情報を記憶している。なお、図28の例はVM21のアプリケーション212の使用履歴を示している。履歴ファイル154はアプリケーション名フィールド、ファイル名フィールド、起動時刻フィールド、選択時刻フィールド、合計選択時間フィールド、及び、選択回数フィールド等を含む。OS211はアプリケーション212が起動した場合、アプリケーション名及びファイル名を取得部178へ出力する。取得部178はOS211から出力されるアプリケーション名及びファイル名を取得し、履歴ファイル154へ記憶する。この際取得部178は時計部18から出力される時刻を起動時刻として履歴ファイル154へ記憶する。なお、アプリケーション212全体、またはアプリケーション212の一のファイルが終了した場合、履歴ファイル154の対応するレコードは削除される。ここでは、例としてレコードを削除するが、起動時刻のレコードのみを無効として起動していないことを表し、それ以外のレコードを残すことで、終了を挟んでも履歴を継続して保持するようにしてもよい。
OS211はウィンドウWが選択されているアプリケーション212のアプリケーション名及びファイル名を取得部178へ出力する。取得部178は選択時刻フィールドに、選択されているアプリケーション名及びファイル名に対応づけて、時計部18からの出力を参照し、ウィンドウWの選択されている時刻(以下、選択時刻という)を記憶する。例えば、図28の例では、12時20分(選択開始時刻)から12時23分(選択終了時刻)まではアプリケーション名「A」、ファイル名「A1」のウィンドウ343が選択されている。また、12時23分から12時24分まではアプリケーション名「B」、ファイル名「B1」のウィンドウ344が選択されている。OS211はウィンドウWの選択の変更がある度に変更後のアプリケーション名及びファイル名を出力する。
取得部178は図28に示す如く、OS211からの変更後のアプリケーション名及びファイル名を参照し、選択時刻を履歴ファイル154に記憶する。このように履歴ファイル154には、アプリケーション212の使用に関する時刻情報及びアプリケーション212が選択されているか否かの選択情報が、選択時刻フィールドに逐次記憶される。取得部178は中断時には合計選択時間フィールドに、選択時刻の合計値をアプリケーション212毎に記憶する。具体的には取得部178は、アプリケーション名及びファイル名の選択時刻の合計値を算出し、合計選択時間として合計選択時間フィールドに記憶する。例えば、アプリケーション名「A」及びファイル名「A1」については、3分に1分を加算して4分と合計選択時間が記憶される。なお、本実施の形態においては説明を容易にするために秒および年月日の記載を省略している。
選択回数フィールドには、アプリケーション212毎に、ウィンドウWが選択された回数が記憶されている。取得部178は選択時刻フィールドに記憶された時間帯の個数を計数することにより、アプリケーション名及びファイル名毎に選択回数を記憶する。例えばアプリケーション名「A」及びファイル名「A1」については、2回、アプリケーション名「B」及びファイル名「B1」については、1回と記憶されている。選択部172は選択時刻フィールドに記憶した情報にも基づき、優先して復元するアプリケーション212を選択する。本実施の形態においては一例として、選択部172は合計選択時間が最も長いアプリケーション212を選択する例を挙げて説明する。
図29及び図30は時刻情報及び選択情報の取得処理の手順を示すフローチャートである。OS211はNIC16を介して、コンピュータ3からアプリケーション212に関する操作命令を受け付ける。OS211はアプリケーション212の起動命令を受け付けたか否かを判断する(ステップS291)。OS211は起動命令を受け付けたと判断した場合(ステップS291でYES)、アプリケーション名及びファイル名を取得部178へ出力する(ステップS292)。
取得部178はアプリケーション名及びファイル名を取得し、また時計部18から出力される時刻を参照し起動開始時刻を取得する(ステップS293)。取得部178は起動開始時刻を選択開始時刻に設定する。取得部178はアプリケーション名、ファイル名、起動開始時刻及び選択開始時刻を履歴ファイル154に記憶する(ステップS294)。これにより、履歴ファイル154の選択時刻フィールドには、アプリケーション212が選択されたことを示す選択情報、及び、選択され使用が開始されたことを示す時刻情報が記憶される。
ステップS291においてOS211が起動命令を受け付けていないと判断した場合(ステップS291でNO)、アプリケーション212の終了命令を受け付けたか否かを判断する(ステップS295)。OS211は終了命令を受け付けたと判断した場合(ステップS295でYES)、終了対象のアプリケーション212のアプリケーション名及びファイル名を取得部178へ出力する。取得部178は終了対象のアプリケーション名及びファイル名を取得する。取得部178は、取得した終了対象のアプリケーション名、ファイル名、起動開始時刻及び選択時刻を履歴ファイル154から削除する(ステップS296)。
OS211は終了命令を受け付けていないと判断した場合(ステップS295でNO)、アプリケーション212の選択命令を受け付けたか否かを判断する(ステップS297)。具体的にはOS211はアプリケーション212のウィンドウWがコンピュータ3のマウス等により指定されたか否かを判断する。OS211は選択命令を受け付けたと判断した場合(ステップS297でYES)、選択されたアプリケーション212に係るアプリケーション名及びファイル名を取得部178へ出力する。取得部178は出力されたアプリケーション名及びファイル名を取得する。
取得部178はアプリケーション名及びファイル名に対応づけて選択開始時刻を記憶する(ステップS298)。取得部178はステップS297の段階で、既に他のアプリケーション212が選択されている場合、選択済みのアプリケーション名及びファイル名に対応づけて選択終了時刻を記憶する(ステップS299)。例えば、図28の例では、12時23分にアプリケーション名「B」、ファイル名「B1」が、アプリケーション名「A」、ファイル名「A1」に代わり、新たに選択されている。この場合、アプリケーション名「B」、ファイル名「B1」が選択されたことを記憶すべく、アプリケーション名「B」、ファイル名「B1」に対応づけて選択開始時刻(12:23)を履歴ファイル154に記憶する。一方、選択が解除されたアプリケーション名「A」、ファイル名「A1」は、選択が解除されたことを記憶すべく、これに対応づけて、選択終了時刻(12:23)を記憶する。
OS211がアプリケーション212の選択命令を受け付けていないと判断した場合(ステップS297でNO)ステップS301へ移行する。また、ステップS294、S296及びS299の処理後も同様にステップS301へ移行する。中断部176はNIC16を介してVMID及びVM2の中断命令を受け付けたか否かを判断する(ステップS301)。中断部176は中断命令を受け付けていないと判断した場合(ステップS301でNO)、処理をステップS291へ戻し、処理を繰り返す。中断部176は中断命令を受け付けた場合(ステップS301でYES)、中断命令を取得部178へ出力する。取得部178は現在選択中のアプリケーション212に係るアプリケーション名及びファイル名の選択終了時刻を履歴ファイル154に記憶する(ステップS302)。例えば図28の例では、12時27分に中断命令がなされ、現在選択中のアプリケーション名「C」及びファイル名「C1」の選択終了時刻として12時27分を記憶する。
選択部172は合計選択時間をアプリケーション名及びファイル名毎に算出する(ステップS303)。具体的には選択部172は選択時刻フィールドに記憶された選択開始時刻と選択終了時刻との間の時刻の合計値を算出する。選択部172は合計選択時間を履歴ファイル154に記憶する(ステップS304)。選択部172は選択された回数を、選択時刻フィールドを参照して計数する(ステップS305)。選択部172は計数した回数を選択回数として履歴ファイル154に記憶する(ステップS306)。なお、ステップS302乃至S306の処理は、起動時に処理するようにしても良い。また、アプリケーション212が選択される毎に行っても良い。
図31は選択処理の手順を示すフローチャートである。起動部179はNIC16を介してVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS311)。起動部179は起動命令を受け付けていないと判断した場合(ステップS311でNO)、起動命令を受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS311でYES)、VMIDを参照し、履歴ファイル154から合計選択時間の最も長いアプリケーション名及びファイル名を選択する(ステップS312)。さらに復元部173は領域ファイル151からアプリケーション名及びファイル名に対応する使用領域を読み出す(ステップS313)。
復元部173は保存ファイル153から使用領域の情報を読み出す(ステップS314)。復元部173は読み出した情報をRAM12の使用領域に復元する(ステップS315)。これにより、使用頻度の高いアプリケーション212が優先的に復元され、ユーザの利便性を高めることが可能となる。
本実施の形態4は以上の如きであり、その他は実施の形態1乃至3と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態5
実施の形態5は起動時の時刻及びアプリケーション212の使用履歴に基づき、優先的に復元するアプリケーション212を選択する形態に関する。選択部172は起動命令を受け付けた場合、履歴ファイル154に記憶したアプリケーション212の使用に関する時刻情報及び選択情報、並びに、時計部18から出力される時刻に基づきアプリケーション212を選択する。以下に選択処理を、フローチャートを用いて説明する。
図32は選択処理の手順を示すフローチャートである。起動部179はNIC16を介してVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS321)。起動部179は起動命令を受け付けていないと判断した場合(ステップS321でNO)、起動命令を受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS321でYES)、選択部172はVMIDを参照し、履歴ファイル154から選択時刻をアプリケーション名及びファイル名毎に抽出する(ステップS322)。選択部172は現在時刻を時計部18から取得する(ステップS323)。選択部172は現在時刻が選択時刻に属するか否かを判断する(ステップS324)。
例えば、図28の例では現在時刻が12時22分の場合、選択時刻に属する。一方、現在時刻が12時30分である場合、12時20分から12時27分外であるので、選択時刻に属さない。選択部172は現在時刻が選択時刻に属すると判断した場合(ステップS324でYES)、ステップS325へ移行する。選択部172は現在時刻が選択開始時刻と選択終了時刻との間に属するアプリケーション名及びファイル名を選択する(ステップS325)。上述の例では現在時刻12時22分は選択開始時刻12時20分と選択終了時刻12時23分の間に属するので、対応するアプリケーション名「A」及びファイル名「A1」が選択される。一方、選択部172は現在時刻が選択時刻に属さないと判断した場合(ステップS324でNO)、ステップS312へ移行する(ステップS326)。ステップS312以降の処理は実施の形態4で述べたとおりであるので詳細な説明は省略する。また、ステップS325以降の処理は、ステップS313乃至S315と同様であるので、説明を省略する。これにより、ユーザのVM2の使用習慣に応じて好ましいアプリケーション212を優先的に復元することが可能となる。
本実施の形態5は以上の如きであり、その他は実施の形態1乃至4と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態6
実施の形態6はウィンドウWの選択回数に応じて優先的に復元するアプリケーション212を選択する形態に関する。図33は選択処理の手順を示すフローチャートである。起動部179はNIC16を介してVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS331)。起動部179は起動命令を受け付けていないと判断した場合(ステップS331でNO)、起動命令を受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS331でYES)、VMIDを参照し、履歴ファイル154から選択回数が最も多いアプリケーション名及びファイル名を選択する(ステップS332)。
選択部172はステップS332で選択したアプリケーション名及びファイル名の数は複数か否かを判断する(ステップS333)。選択部172は複数でないと判断した場合(ステップS333でNO)、処理を終了する。一方選択部172は複数であると判断した場合(ステップS333でYES)、合計選択時間が長い方のアプリケーション名及びファイル名を選択する(ステップS334)。以降の処理及びステップS333でNO以降の処理は、ステップS313乃至S315と同様であるので説明を省略する。
本実施の形態6は以上の如きであり、その他は実施の形態1乃至5と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態7
実施の形態7は優先度を算出し、算出した優先度に基づき、複数のアプリケーション212を提示する形態に関する。図34は物理マシン1及びVM2のハードウェア及びソフトウェアを示すブロック図である。さらに制御モジュール170として優先度を算出する算出部1710が設けられている。算出部1710は履歴ファイル154に記憶した各アプリケーション212の履歴情報に基づき優先度を算出する。本実施の形態においては履歴ファイル154に記憶した選択回数が多いもの程優先度を高く付与する例を挙げて説明する。
図35乃至図37は優先度に基づく選択処理の手順を示すフローチャートである。起動部179はNIC16を介して、VMID及びVM2の起動命令を受け付ける(ステップS341)。起動部179は起動命令を復元部173へ出力する。復元部173はハードウェア情報ファイル152からVMIDに対応するハードウェア情報を読み出す(ステップS342)。復元部173は起動対象となるVM2にRAM12の使用領域の割り当てを行う(ステップS343)。
復元部173はステップS342で読み出したVM2のハードウェア情報を、RAM12に記憶する(ステップS344)。復元部173はVMIDに対応するOS211を保存ファイル153から読み出す。復元部173は読み出したOS211をステップS343で割り当てた領域に記憶する(ステップS345)。選択部172はHD15から予め記憶したテンプレートとなる基本選択画面を読み出す(ステップS346)。算出部1710は起動対象のVM2のVMIDに対応する履歴ファイル154のレコードを読み出す。そして算出部1710はアプリケーション名及びファイル名毎に選択回数を読み出す(ステップS347)。なお、選択回数の計数処理については実施の形態4で述べたとおりであるので詳細な説明は省略する。算出部1710は履歴ファイル154からアプリケーション名及びファイル名を読み出す(ステップS348)。
算出部1710は読み出した選択回数に応じてアプリケーション名及びファイル名毎に優先度を付与する(ステップS349)。これは例えば選択回数が「3」の場合、優先度は「3」とすれば良い。選択部172は優先度に応じてアプリケーション名及びファイル名をソートする(ステップS351)。ソートは優先度が大きいものから小さいものへと並び替える処理をすればよい。
選択部172はソートした順にアプリケーション名及びファイル名を基本選択画面に記述し、選択画面34を生成する(ステップS352)。また選択部172はアプリケーション名及びファイル名に対応づけて優先度を記述しても良い。選択部172はNIC16を介して、生成した選択画面34をコンピュータ3へ出力する(ステップS353)。
図38は選択画面34のイメージを示す説明図である。選択画面34にはソートした順にアプリケーション名及びファイル名が表示される。各アプリケーション名及びファイル名には、優先度が表示される。本例では文書作成アプリケーション「文書A」に優先度3が付与され、かつ、最上段に表示されている。ユーザはコンピュータ3のマウス等から優先的に実行するアプリケーション名及びファイル名を、チェックボックス341にてクリックする。なお、この選択は複数であっても良い。ユーザはチェックボックス341をクリックした後、決定ボタン342をクリックする。これによりコンピュータ3からVMID、選択された一または複数のアプリケーション名及びファイル名が物理マシン1へ出力される。
選択部172はコンピュータ3から出力されるアプリケーション名及びファイル名の入力を受け付ける(ステップS354)。選択部172は複数のアプリケーション名及びファイル名の入力を受け付けたか否かを判断する(ステップS355)。選択部172は複数でないと判断した場合(ステップS355でNO)、ステップS354で入力されたアプリケーション名及びファイル名を優先的に復元すべきものとして選択する。
選択部172は選択されたアプリケーション名及びファイル名を復元部173へ出力する。復元部173は受け付けたアプリケーション名及びファイル名に対応する使用領域を領域ファイル151から読み出す(ステップS357)。復元部173は、当該使用領域の情報を保存ファイル153から読み出す(ステップS358)。なお、復元部173は領域ファイル151及び保存ファイル153を読み出す際、ステップS341で受け付けたVMIDに対応するレコードを読み出す。
復元部173は読み出したアプリケーション名及びファイル名に係る情報をRAM12のステップS357で読み出した使用領域に復元する(ステップS359)。一方、選択部172は、複数のアプリケーション名及びファイル名を受け付けたと判断した場合(ステップS355でYES)、ステップS361へ移行する。選択部172は受け付けた複数のアプリケーション名及びファイル名に対応する全ての使用領域を領域ファイル151から読み出す(ステップS361)。選択部172は読み出した使用領域の合計値を算出する(ステップS362)。具体的には、選択部172は各アプリケーション212のRAM12の使用領域(サイズ)を全て加算する。
選択部172はHD15に記憶された閾値を読み出す(ステップS363)。そして選択部172は算出した合計値が閾値を超えるか否かを判断する(ステップS364)。これはユーザがあまりに多くのアプリケーション212を選択してしまうことを防止するためである。この閾値はコンピュータ3を介して適宜の値とする他、ステップS343において割り当てられるサイズに1よりも小さい係数を乗じた値としても良い。選択部172は合計値が閾値を超えると判断した場合(ステップS364でYES)、HD15に記憶した警告画面を読み出す(ステップS365)。選択部172はNIC16を介して、読み出した警告画面をコンピュータ3へ出力する(ステップS366)。
コンピュータ3の表示部には、「もう一度、選択して下さい。」または「一度に復元できるメモリ容量を超えています。」等の警告画面が表示される。その後選択部172はステップS353へ移行し、以上の処理を繰り返す。一方、合計値が閾値を超えないと判断した場合(ステップS364でNO)、復元部173は複数の受け付けたアプリケーション名及びファイル名に対応する使用領域を領域ファイル151から読み出す(ステップS368)。復元部173は、当該複数の使用領域の情報を保存ファイル153から読み出す(ステップS369)。
復元部173は読み出したアプリケーション名及びファイル名に係る情報を、ソートしたアプリケーション名及びファイル名の順に、RAM12のステップS358で読み出した対応する使用領域に復元する(ステップS3610)。図38の例において、文書作成アプリケーション「文書A」及びプレゼンテーション用アプリケーション「スライドC」が選択された場合、優先度の高い文書作成アプリケーション「文書A」から復元が開始される。この場合、復元部173は文書作成アプリケーション「文書A」に対応づけて記憶された使用領域を領域ファイル151から読み出し、当該領域に保存ファイル153内に記憶された文書作成アプリケーション「文書A」の情報を復元する。その後、復元部173はプレゼンテーション用アプリケーション「スライドC」に対応づけて記憶された使用領域を領域ファイル151から読み出し、当該領域に保存ファイル153内に記憶された「スライドC」の情報を復元する。これにより、ユーザは優先的に復元すべき指標を得ることができより効率よく、アプリケーション212を使用することが可能となる。また、多くのアプリケーション212を選択しすぎることに伴う、起動処理速度の低減をも解消することが可能となる。選択されなかったアプリケーション212についても、ステップS157乃至S1513の処理を優先度順に行うことで、効率よくアプリケーション212の復元が行える。
本実施の形態7は以上の如きであり、その他は実施の形態1乃至6と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態8
実施の形態8はアプリケーション212の使用に関する時刻情報及び起動時に時計部18から出力される時刻情報に基づいて優先度を付与する形態に関する。具体的には、各アプリケーション212の使用開始時刻と時計部18から出力される現在時刻との差分を算出し、差分が小さい順に優先度を付与する。また本実施の形態においては選択部172が優先度に基づき、優先的に復元するアプリケーション212を選択する例を挙げて説明する。
図39及び図40は優先度の付与手順を示すフローチャートである。起動部179はNIC16を介して、VMID及びVM2の起動命令を受け付ける(ステップS391)。算出部1710は履歴ファイル154からアプリケーション名、ファイル名及びアプリケーション212の使用に関する時刻情報としての起動時刻を読み出す(ステップS392)。なお、算出部1710はステップS391で受け付けたVMIDに対応するレコードの内、履歴ファイル154に記憶されている全てのアプリケーション212のレコードを読み出す。
算出部1710は時計部18から現在時刻を取得する(ステップS393)。算出部1710は現在時刻と起動時刻との間の差分を、アプリケーション名及びファイル名毎に算出する(ステップS394)。なお、算出部1710は差分の算出に際し、年月日については除外して時刻の差を算出すれば良い。その他、差は、年月日を除き、現在時刻以降の起動時刻を優先的に算出するようにしても良い。算出部1710は算出した差分に応じて優先度を付与する(ステップS395)。この優先度は差分が小さいほど優先度が大きくなるよう設定すればよい。例えば、差分の逆数を優先度とすればよい。
選択部172は優先度に応じてアプリケーション名及びファイル名をソートする(ステップS396)。選択部172は優先度の最も高いアプリケーション名及びファイル名の使用領域を領域ファイル151から読み出す(ステップS397)。選択部172は閾値を読み出す(ステップS398)。選択部172はステップS397における優先度の次に優先度の高いアプリケーション名及びファイル名の使用領域を領域ファイル151から読み出す(ステップS399)。
選択部172はステップS399で読み出した使用領域を、ステップS397で読み出した使用領域に加算して合計値を算出した場合、合計値は閾値を超えるか否かを判断する(ステップS401)。選択部172は閾値を超えないと判断した場合(ステップS401でNO)、ステップS399の使用領域を加算して合計値を算出する(ステップS402)。そして処理をステップS399へ戻し処理を繰り返す。選択部172は次に優先度の高い新たなアプリケーション名及びファイル名に係る使用領域を読み出す。これを繰り返し、選択部172は合計値が閾値を超えると判断した場合(ステップS401でYES)、ステップS399において読み出した使用領域の加算を中止する(ステップS403)。
選択部172はステップS397で読み出した最も優先度の高いアプリケーション名及びファイル名から、ステップS401にて合計値を超える優先度よりも高い優先度のアプリケーション名及びファイル名までを選択する(ステップS404)。復元部173は選択された複数の使用領域の情報を保存ファイル153から読み出す(ステップS406)。
復元部173は読み出したアプリケーション名及びファイル名に係る情報を、選択された優先度の高いアプリケーション名及びファイル名順に、RAM12へステップS397またはS399にて読み出した対応する使用領域に復元する(ステップS407)。これにより、予め設定した閾値を限度に、優先度に応じて優先的にアプリケーション212が復元される。なお、本実施の形態においては、選択部172が優先度に基づき自動的に復元するアプリケーション212を選択する例を説明したがこれに限るものではない。実施の形態7と同じく、選択画面34を表示しユーザにアプリケーション212を選択させても良い。
本実施の形態8は以上の如きであり、その他は実施の形態1乃至7と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態9
実施の形態9は各アプリケーション212の使用に関する時刻情報及び選択情報に基づいて優先度を算出する形態に関する。図41は実施の形態9に係る優先度算出処理の手順を示すフローチャートである。起動部179はコンピュータ3から起動対象のVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS411)。起動部179は受け付けていないと判断した場合(ステップS411でNO)、受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS411でYES)、算出部1710に対し起動命令を出力する。
算出部1710は履歴ファイル154の起動対象のVMIDに対応するレコードを読み出す。算出部1710は履歴ファイル154の各アプリケーション名及びファイル名がいつ選択されたかを示す選択時刻フィールドを参照し、アプリケーション名及びファイル名毎に合計選択時間を算出する(ステップS412)。算出部1710は履歴ファイル154の合計選択時間フィールドに算出した各アプリケーション名及びファイル名の合計選択時間を記憶する。算出部1710は合計選択時間が長いほど多くなる優先度を付与する(ステップS413)。
算出部1710は付与した優先度順に、アプリケーション名及びファイル名をソートする(ステップS414)。なお、ステップS412乃至S414の処理は、VM2の起動時に限らず、VM2の中断時に実行しても良いことはもちろんである。中断時に実行する場合、アプリケーション名及びファイル名毎に算出した優先度は、VMIDに対応づけて、HD15に記憶され、起動時にVMIDをキーに読み出される。また、実施の形態4に示したように、ステップS412の処理のみ中断時に実行してもよい。これにより、ユーザのVM2の各アプリケーション212に対する使用状況に応じて、優先度が付与されることから、早期にVM2の希望するアプリケーション212を使用することが可能となる。
本実施の形態9は以上の如きであり、その他は実施の形態1乃至8と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態10
実施の形態10は複数の中断時の履歴を参照して優先度を算出する形態に関する。図42は実施の形態10に係る履歴ファイル154のレコードレイアウトを示す説明図である。履歴ファイル154は中断時刻毎に、VM2で実行していたアプリケーション212及び選択時刻を記憶している。履歴ファイル154は中断時刻フィールド、アプリケーションフィールド及び選択時刻フィールド等を含む。中断時刻フィールドはコンピュータ3からVM2の中断命令を受け付けた時刻を記憶している。中断部176はVMID及びVM2の中断命令を受け付けた場合に、時計部18から出力される中断時刻を履歴ファイル154に記憶する。なお、本実施の形態においては月、日、時、及び分を用いた例を説明するが、年、及び、秒まで含めても良いことはもちろんである。
アプリケーションフィールドには、中断時に実行していたアプリケーション212のアプリケーション名が記憶されている。なお、本実施の形態においては説明を容易にするために、アプリケーション212が複数のファイルを同時に実行している場合も、一つのアプリケーション212の優先度を算出する例を説明する。なお、アプリケーション名及びファイル名毎に優先度を算出しても良い。選択時刻フィールドには、各アプリケーション212が選択されていた時間帯が記憶されている。また、図42の例では、VM2のVMIDが「VM01」の例を挙げて説明しているが、同様に他のVM2についても履歴が記憶されている。
OS211は各アプリケーション212の一のウィンドウWが選択された場合、アプリケーション名及び選択開始情報を取得部178へ出力する。取得部178は選択開始情報を受け付けた場合、アプリケーション名及び時計部18から出力される時刻を選択開始時刻として履歴ファイル154に記憶する。OS211は各アプリケーション212の他のウィンドウWが選択された場合、一のウィンドウWに係るアプリケーション名及び選択終了情報を取得部178へ出力する。取得部178は選択終了情報を受け付けた場合、アプリケーション名及び時計部18から出力される時刻を選択終了時刻として履歴ファイル154に記憶する。アプリケーション212の選択開始情報を受け付けたときに、これまで選択されていたアプリケーション212の選択終了時刻を履歴ファイル154に記憶しても良い。
算出部1710は履歴ファイル154に記憶された各アプリケーション212の使用に関する時刻情報、選択情報及び起動時に時計部18から出力される時刻に基づき、優先度を算出する。算出部1710は起動時に時計部18から出力される現在時刻からみて所定時間前後した同時間帯を算出する。例えば、現在時刻が12時であり、所定時間が5分の場合、同時間帯は11時55分から12時5分となる。なお、この所定時間はコンピュータ3により適宜の値を設定することができる。本実施の形態においては5分を一例として説明する。なお、現在時刻の前後に応じて所定時間を相違させても良い。例えば現在時刻の前は3分、現在時刻の後は5分としても良い。この場合、11時57分から12時5分が同時間帯となる。
算出部1710は履歴ファイル154を参照し同時間帯に選択されていたアプリケーション212の選択回数を計数する。図42の例では下線で示す如くアプリケーション名「A」が2回、アプリケーション名「D」が1回となる。この場合、算出部1710は優先度を選択回数に応じて付与する。例えば、アプリケーション名「A」は優先度が2、アプリケーション名「D」は優先度が1と算出される。なお、算出部1710は優先度の算出に際し、現在時刻と中断時刻との差に応じて重みを付与するようにしても良い。この場合、算出部1710は現在時刻と中断時刻との差が小さいほど大きくなる重みを、選択回数に乗ずればよい。
図43及び図44は実施の形態10に係る優先度算出処理の手順を示すフローチャートである。起動部179はコンピュータ3から起動対象のVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS431)。起動部179は受け付けていないと判断した場合(ステップS431でNO)、受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS431でYES)、算出部1710に対し起動命令を出力する。
算出部1710は履歴ファイル154からステップS431で受け付けたVMIDに対応するレコードを読み出す(ステップS432)。算出部1710は時計部18から現在時刻を取得する(ステップS433)。算出部1710はHD15から予め記憶された所定日数を読み出す(ステップS434)。なお、この所定日数はコンピュータ3により適宜変更することが可能であり、例えば7日とすれば良い。算出部1710は履歴ファイル154から、現在時刻からみて読み出した所定日数内の中断時刻を有するレコードを読み出す(ステップS435)。なお、ステップS434にて所定日数を読み出し、所定日数内のレコードのみを処理する例を挙げて説明するがこれに限るものではない。全てのレコードについて処理しても良いことはもちろんである。
算出部1710は履歴ファイル154の読み出したレコードから各アプリケーション212の選択時刻を読み出す(ステップS436)。算出部1710はHD15に予め記憶した所定時間を読み出す(ステップS437)。算出部1710は読み出した所定時間及び現在時刻に基づき、同時間帯を算出する(ステップS438)。算出部1710は同時間帯に選択されていたアプリケーション212の選択回数を、アプリケーション212毎に計数する(ステップS439)。
算出部1710はアプリケーション212の選択回数が同一のものが存在するか否かを判断する(ステップS441)。算出部1710は選択回数が同一のアプリケーション212が存在しないと判断した場合(ステップS441でNO)、選択回数に応じて優先度を付与する(ステップS442)。一方、選択回数が同一のアプリケーション212が存在すると判断した場合(ステップS441でYES)、算出部1710はアプリケーション212毎に合計選択時刻を算出する(ステップS443)。なお、アプリケーション212毎の合計選択時刻の算出は履歴ファイル154の選択時刻フィールドに記憶した選択開始時刻及び選択終了時刻に基づき算出する。
算出部1710は、合計選択時刻及び選択回数に応じて優先度を付与する(ステップS444)。選択回数が同一でない場合は、アプリケーション212毎に選択回数が多いほど高くなる優先度を付与する。また、選択回数が同一のアプリケーション212に関しては、合計選択時刻が長いほど、高くなる優先度を付与する。これにより、VM2を使用するユーザのアプリケーション212の使用状況に応じて適切にアプリケーション212を復元することが可能となる。
本実施の形態10は以上の如きであり、その他は実施の形態1乃至9と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態11
実施の形態11は起動後に復元されたアプリケーション212に係るウィンドウWに対する操作を受け付けた場合に、優先度を補正する形態に関する。図45は実施の形態11に係る物理マシン1及びVM2のハードウェア及びソフトウェアを示すブロック図である。実施の形態11では制御モジュール170としてさらに補正部1711が設けられている。補正部1711は復元部173によるアプリケーション212の復元後の、所定時間内に最初にウィンドウWに対する操作があったアプリケーション212に対し、フラグを設定する。そして、後の中断時または起動時に算出部1710が優先度を算出した場合、フラグが設定されているアプリケーション212の優先度を補正する。なお、本実施の形態においては一例として、後の起動時に優先度を算出し、算出した優先度を補正する処理を説明する。
図46は補正処理の手順を示すフローチャートである。これまで述べてきた実施の形態と同様にして各アプリケーション212を復元する(ステップS461)。VM2のOS211は、ウィンドウWをNIC16へ出力する。コンピュータ3の表示部には各アプリケーション212のウィンドウWが表示される。復元部173は補正部1711に復元命令を出力する。補正部1711は復元命令を受け付けた場合、HD15に記憶した所定時間を読み出す(ステップS462)。この所定時間はコンピュータ3により適宜変更することが可能である。例えば、5分と記憶しておけばよい。これと並行して、復元部173は、残りのアプリケーション212を復元する。ユーザはコンピュータ3の入力部を通じてウィンドウWを操作する。この操作は、例えば、ウィンドウWの選択切り替え、文字の入力、ファイルの操作等が該当する。操作に基づく情報はNIC16を介して、コンピュータ3からOS211へ出力される。OS211は操作があることを補正部1711へ出力する。
補正部1711は所定時間内にウィンドウWに対する操作を受け付けたか否かを判断する(ステップS463)。補正部1711はウィンドウWに対する操作を受け付けていないと判断した場合(ステップSで463でNO)、補正することなく処理を終了する。一方、補正部1711はウィンドウWに対する操作を受け付けたと判断した場合(ステップS463でYES)、操作を受け付けたウィンドウWに係るアプリケーション212にフラグを設定する(ステップS464)。なお、このフラグは履歴ファイル154にアプリケーション212に対応づけて記憶しておけばよい。
その後、VM2は中断し、再度起動命令により起動する。起動部179はコンピュータ3から起動対象のVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS465)。起動部179は受け付けていないと判断した場合(ステップS465でNO)、受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS465でYES)、算出部1710及び補正部1711に対し起動命令を出力する。算出部1710は上述した各種アルゴリズムに従い、優先度を算出する(ステップS466)。
補正部1711は起動命令を受け付けた場合、優先度を算出したアプリケーション212中に、フラグが設定されているアプリケーション212が存在するか否かを、履歴ファイル154を参照して判断する(ステップS467)。補正部1711はフラグが設定されていないと判断した場合(ステップS467でNO)、補正することなく処理を終了する。一方、補正部1711はフラグが設定されていると判断した場合(ステップS467でYES)、フラグが設定されているアプリケーション212の優先度を補正する(ステップS468)。この優先度の補正は例えば1より大きい係数を乗算するか、または正の値を加算等することにより、優先度を増加させる処理とすればよい。
補正部1711は算出部1710へ補正後の優先度を出力する。算出部1710は補正後の優先度を選択部172へ出力する。選択部172は補正後の優先度に基づき優先的に復元するアプリケーション212を選択する。その他、フラグ数をアプリケーション212毎に記憶するようにしても良い。ステップS464においてはフラグ数をインクリメントする。またステップS463においてウィンドウWに対する操作がないアプリケーション212はフラグ数をデクリメントする。なおフラグ数の最小値は1としておけばよい。そして補正部1711は計数したフラグ数をステップS466で算出した優先度に乗じても良い。これにより、ユーザの使用頻度の高いアプリケーション212が後の起動時にも優先的に復元され、操作効率を向上させることが可能となる。
本実施の形態11は以上の如きであり、その他は実施の形態1乃至10と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態12
実施の形態12は各アプリケーション212の待機時間とVM2の中断時間とに基づき優先度を補正する形態に関する。図47は実施の形態12に係る履歴ファイル154のレコードレイアウトを示す説明図である。履歴ファイル154は中断時刻フィールド、アプリケーションフィールド、選択時刻フィールド及び待機時間フィールド等を含む。中断時間フィールドには、VM2を中断した際の時刻を記憶している。取得部178はVM2の中断命令を受け付けた場合、VMIDに対応づけて、時計部18から出力される時刻を中断時刻として記憶する。さらに取得部178は中断時に実行していたアプリケーション名をOS211から取得し、履歴ファイル154に記憶する。
選択時刻フィールドには、再度取得部178がVM2の起動命令を受け付けた後、アプリケーション212に係るウィンドウWに対する操作を受け付けた際の時刻を記憶している。OS211はアプリケーション212に係るウィンドウWに対する操作をコンピュータ3から受け付けた場合、アプリケーション名を取得部178へ出力する。取得部178は時計部18から出力される時刻を、アプリケーション212に係るウィンドウWに対する選択時刻として履歴ファイル154に記憶する。待機時間フィールドには、前回のVM2の中断時刻から、後にアプリケーション212のウィンドウWが選択された選択時刻までの時間を待機時間として記憶している。
取得部178は選択時刻と中断時刻との差に基づき算出される待機時間を、アプリケーション212毎に記憶する。例えば、1月27日12時20分にVM2が中断され、その後VM2が起動される。その際、アプリケーション名「A」のウィンドウWは1月27日15時20分に操作されており、待機時間は3時間となる。なお、図47の例はVMIDが「VM01」の例を挙げて説明するが、同様に他のVM2についても情報が記憶されている。
補正部1711は履歴ファイル154に記憶した各アプリケーション212の待機時間を読み出し、平均待機時間を算出する。また補正部1711は起動時に、前回の中断時刻を履歴ファイル154から読み出す。補正部1711は起動時に時計部18から出力される現在時刻(起動時刻)を取得する。そして補正部1711は現在時刻と中断時刻との差を求めることでVM2の中断時間を取得する。補正部1711はこのVM2の中断時間と、アプリケーション212毎に算出した平均待機時間の差分を、アプリケーション212毎に算出する。そして補正部1711は算出した差分が小さいほど、大きくなる重みをアプリケーション212毎に付与する。例えば、差分が1時間の場合、重みを10、差分が2時間の場合、重みを9とすれば良い、また重みの最小値は1としておけばよい。補正部1711は算出部1710が算出した優先度に重みを乗ずることで優先度を補正する。なお、実施の形態11で述べたアプリケーション212に設定されたフラグが存在する場合、当該フラグに基づく補正処理をもあわせて実行しても良い。
図48及び図49は実施の形態12に係る優先度算出処理の手順を示すフローチャートである。復元部173は上述した処理によりアプリケーション212をRAM12の使用領域に復元する(ステップS481)。その後、OS211はアプリケーション212に係るウィンドウWに対する操作をコンピュータ3から受け付けたか否かを判断する(ステップS482)。OS211はアプリケーション212に対する操作を受け付けたと判断した場合(ステップS482でYES)、操作されたことを示す情報(以下、操作情報という)及びアプリケーション名を取得部178へ出力する(ステップS483)。取得部178は操作情報及びアプリケーション名を取得する(ステップS484)。
取得部178は時計部18からの出力を参照し、ウィンドウWの選択開始時刻を履歴ファイル154に記憶する(ステップS485)。補正部1711は履歴ファイル154を参照し、前回のVM2の中断時における中断時刻を読み出す(ステップS486)。補正部1711は中断時刻からステップS485で記憶した選択開始時刻までの待機時間を算出する(ステップS487)。補正部1711は算出した待機時間をアプリケーション212毎に履歴ファイル154に記憶する(ステップS488)。
ステップS488の後、または、OS211がアプリケーション212に係るウィンドウWに対する操作を受け付けていないと判断した場合(ステップS482でNO)、ステップS489へ移行する。中断部176はコンピュータ3から中断対象のVMID及びVM2の中断命令を受け付けたか否かを判断する(ステップS489)。中断部176は受け付けていないと判断した場合(ステップS489でNO)、ステップS482へ移行し、他のアプリケーション212についても同様に待機時間を算出する。
中断部176はVMID及び中断命令を受け付けたと判断した場合(ステップS489でYES)、中断命令を補正部1711へ出力する。補正部1711は、履歴ファイル154の所定日数分(例えば30日分)の各アプリケーション212の待機時間を読み出す。そしてアプリケーション212毎に平均待機時間を算出し、算出した平均待機時間をHD15に記憶する(ステップS491)。中断部176はVM2を中断状態とする。これにより、中断時には過去の使用履歴に基づき、アプリケーション212毎の平均待機時間がHD15に記憶される。
続いて、コンピュータ3からVM2の起動命令を受け付けた際の処理手順を説明する。起動部179はコンピュータ3から起動対象のVMID及びVM2の起動命令を受け付けたか否かを判断する(ステップS492)。起動部179は受け付けていないと判断した場合(ステップS492でNO)、受け付けるまで待機する。一方、起動部179は起動命令を受け付けたと判断した場合(ステップS492でYES)、補正部1711に対し起動命令を出力する。補正部1711は前回の中断時刻を履歴ファイル154から読み出す(ステップS493)。この中断時刻は、ステップS489にて中断命令を受け付けた際に、時計部18から出力される時刻とすればよい。
補正部1711は時計部18から出力される時刻を参照し、起動時刻を取得する(ステップS494)。補正部1711はステップS493で読み出した前回の中断時における中断時刻からVM2の起動時刻までの中断時間を算出する(ステップS495)。補正部1711は算出した中断時間と算出した各アプリケーション212の平均待機時間との差分を、アプリケーション212毎に算出する(ステップS496)。補正部1711は差分が小さいほど大きくなる重みをアプリケーション212毎に設定する(ステップS497)。
算出部1710は上述した処理により各アプリケーション212の優先度を算出する(ステップS498)。補正部1711は各アプリケーション212の優先度を、設定した各アプリケーション212の重みに基づいて補正する(ステップS499)。これにより、ユーザの使用実績に応じて優先度が最適化され、より起動時におけるアプリケーション212の使用環境を向上させることが可能となる。
本実施の形態12は以上の如きであり、その他は実施の形態1乃至11と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態13
図50は実施の形態13に係る物理マシン1及びVM2のハードウェア及びソフトウェアを示すブロック図である。実施の形態1乃至12に係る物理マシン1を動作させるためのプログラムは、本実施の形態13のように、読み取り部(図示せず)にCD−ROM等の可搬型記録媒体1Aを読み取らせてHD15に記憶しても良い。また、当該プログラムは、インターネット等の通信網を介して接続される他のサーバコンピュータ(図示せず)からダウンロードすることも可能である。以下に、その内容を説明する。
図50に示す物理マシン1は、使用領域を記憶させ、情報を保存等させるプログラムを、可搬型記録媒体1Aによりまたは通信網を介して他のサーバコンピュータ(図示せず)からダウンロードする。当該プログラムは、制御モジュール170としてインストールされ、RAM12にロードして実行される。これにより、上述した物理マシン1として機能する。
本実施の形態13は以上の如きであり、その他は実施の形態1乃至12と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
以上の実施の形態1乃至13を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータ上で動作する仮想マシンを制御するためのプログラムにおいて、
コンピュータに、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を実行させるプログラム。
(付記2)
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域に関する情報を記憶する記憶ステップと、
前記選択ステップにより選択したアプリケーションプログラムが使用していた前記記憶部に保存されたメモリ上の情報を、前記記憶ステップにおいて記憶された使用領域に関する情報に基づいて特定されるメモリ上の使用領域へ復元する復元ステップと
を含む付記1に記載のプログラム。
(付記3)
前記記憶ステップは、
アプリケーションプログラムを特定するための識別情報と、アプリケーションプログラムが使用するメモリの使用領域と、を対応付けて記憶し、
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記記憶ステップにおいて記憶された識別情報に対応する選択項目を出力するステップと、
前記識別情報に基づいて出力した選択項目に対する入力操作を受け付けるステップと、
前記アプリケーションプログラムの内、入力操作を受け付けた選択項目に対応する識別情報に係るアプリケーションプログラムを特定するステップと
を含む付記2に記載のプログラム。
(付記4)
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域及び前記アプリケーションプログラムの使用に関する履歴情報を取得する取得ステップを備え、
前記記憶ステップは、
前記取得ステップにより取得した複数のアプリケーションプログラムが使用するメモリの各使用領域及び履歴情報を、前記アプリケーションプログラムを特定する識別情報に対応付けて記憶する
付記2に記載のプログラム。
(付記5)
前記選択ステップは、
仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した履歴情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記4に記載のプログラム。
(付記6)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び時計部から出力される時刻情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記5に記載のプログラム。
(付記7)
前記選択ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用開始時刻を読み出すステップと、
読み出した各アプリケーションプログラムの使用開始時刻と前記時計部から出力される現在時刻との差分をアプリケーションプログラム毎に算出するステップと、
算出した差分が小さいアプリケーションプログラムを選択するステップと
を含む付記6に記載のプログラム。
(付記8)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報及び前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記5に記載のプログラム。
(付記9)
前記選択ステップは、
前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報を参照し、各アプリケーションプログラムに係るウィンドウが選択されていた時間の合計時間をアプリケーションプログラム毎に算出するステップと、
複数のアプリケーションプログラムの内、合計時間の長いアプリケーションプログラムを選択するステップと
を含む付記8に記載のプログラム。
(付記10)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報及び前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報、並びに、時計部から出力される時刻情報に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記5に記載のプログラム。
(付記11)
前記選択ステップは、
前記記憶ステップにおいて記憶した使用に関する時刻情報及び選択情報を参照し、各アプリケーションプログラムに係るウィンドウが選択されていた選択時刻をアプリケーションプログラム毎に抽出するステップと、
時計部から出力される現在時刻が前記抽出した選択時刻に属するアプリケーションプログラムを選択するステップと
を含む付記10に記載のプログラム。
(付記12)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得し、
前記記憶ステップは、
前記取得ステップにより取得した複数のアプリケーションプログラムが使用するメモリの各使用領域及び各アプリケーションプログラムの選択情報を履歴情報として記憶し、
前記選択ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報を参照し、アプリケーションプログラム毎に選択回数を計数するステップと、
計数した回数が多いアプリケーションプログラムを選択するステップと
を含む付記5に記載のプログラム。
(付記13)
前記記憶ステップにおいて記憶した履歴情報に基づきアプリケーションプログラム毎の優先度を算出する優先度算出ステップを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記記憶ステップにおいて記憶した複数のアプリケーションプログラムそれぞれに係る識別情報を、前記算出した優先度に従い出力するステップと、
出力した複数の識別情報から選択された識別情報の入力を受け付ける受け付けステップと、
前記複数のアプリケーションプログラムの内、入力を受け付けた識別情報に係るアプリケーションプログラムを選択するステップと
を含む付記4に記載のプログラム。
(付記14)
前記受け付けステップにより識別情報の入力を受け付けた場合、前記記憶ステップにおいて記憶した識別情報に対応するアプリケーションプログラムが使用するメモリの使用領域を読み出すステップと、
読み出した使用領域の合計値を算出するステップと、
算出した使用領域の合計値が予め定めた閾値を超える場合に警告情報を出力するステップと
を含む付記13に記載のプログラム。
(付記15)
前記記憶ステップにおいて記憶した履歴情報に基づきアプリケーションプログラム毎の優先度を算出する優先度算出ステップを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、算出した優先度に基づき、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する
付記4に記載のプログラム。
(付記16)
前記記憶ステップにおいて記憶したアプリケーションプログラムが使用するメモリの使用領域を読み出すステップと、
前記優先度算出ステップにより算出した優先度が最も高いアプリケーションプログラムの使用領域に、優先度が低いアプリケーションプログラムの使用領域を優先度の高低に従い順次加算して合計値を算出するステップと、
算出した使用領域の合計値が予め定めた閾値を超える場合に、超えた時点の優先度に係るアプリケーションプログラムの使用領域の加算を中止するステップとを含み、
前記選択ステップは、
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記複数のアプリケーションプログラムの内、優先度が最も高いアプリケーションプログラムから、前記超えた時点の優先度よりも高い優先度をもつアプリケーションプログラムまでを選択する
付記15に記載のプログラム。
(付記17)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び時計部から出力される時刻情報に基づいて優先度を算出する
付記13乃至16のいずれか一つに記載のプログラム。
(付記18)
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用開始時刻と前記時計部から出力される現在時刻との差分を、アプリケーションプログラム毎に算出するステップと、
算出した差分が小さい順に高い優先度を付与するステップと
を含む付記17に記載のプログラム。
(付記19)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得し、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報に基づきアプリケーションプログラム毎の優先度を算出する
付記13乃至16のいずれか一つに記載に記載のプログラム。
(付記20)
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの選択情報を参照し、アプリケーションプログラムが選択された回数を、アプリケーションプログラム毎に計数するステップと、
計数した回数に応じて優先度を付与するステップと
を含む付記18に記載のプログラム。
(付記21)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報に基づいて優先度を算出する
付記13乃至16のいずれか一つに記載のプログラム。
(付記22)
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報を参照し、アプリケーションプログラム毎に選択されていた選択時間を算出するステップと、
選択時間の長さに応じて優先度を付与するステップと
を含む付記21に記載のプログラム。
(付記23)
前記取得ステップは、
仮想マシン上で動作するアプリケーションプログラムが使用するメモリの使用領域を取得するステップと、
時計部から出力される時刻情報を参照し、前記アプリケーションプログラムの使用に関する時刻情報、及び、前記アプリケーションプログラムに係るウィンドウが選択されているか否かの選択情報を履歴情報として取得するステップとを備え、
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報、選択情報及び時計部から出力される時刻情報に基づいて優先度を算出する
付記13乃至16のいずれか一つに記載のプログラム。
(付記24)
前記優先度算出ステップは、
前記記憶ステップにおいて記憶した各アプリケーションプログラムの使用に関する時刻情報及び選択情報を参照し、時計部から出力される現在時刻と同時間帯に選択されていたアプリケーションプログラムの選択回数をアプリケーションプログラム毎に計数するステップと、
計数した選択回数に応じて優先度を付与するステップと
を含む付記23に記載のプログラム。
(付記25)
前記復元ステップによりアプリケーションプログラムを復元した後の所定時間内に、アプリケーションプログラムに係るウィンドウに対する操作を受け付けたか否かを判断するステップと、
操作を受け付けたと判断した場合、前記優先度算出ステップにより算出する前記アプリケーションプログラムに係る優先度を補正するステップと
を含む付記13または15に記載のプログラム。
(付記26)
中断中の仮想マシンに対する起動命令を受け付けた場合に、前記仮想マシンの中断時刻から起動時刻までの中断時間を算出するステップと、
起動命令を受け付けた場合、アプリケーションプログラム毎に、前記中断時刻からアプリケーションプログラムに係るウィンドウに対する操作を受け付けるまでの時間を待機時間として記憶するステップと、
記憶した待機時間の履歴を参照し、アプリケーションプログラム毎に待機時間の平均を算出するステップと、
前記優先度算出ステップにより算出したアプリケーションプログラム毎の優先度を、前記算出した中断時間及び待機時間の平均に基づき補正するステップと
を含む付記13または付記15に記載のプログラム。
(付記27)
複数の仮想マシンの動作を制御するコンピュータにおいて、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存手段と、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択手段と
を備えるコンピュータ。
(付記28)
コンピュータ上で動作する複数の仮想マシンを制御する制御方法において、
運転中の仮想マシンに対する中断命令を受け付けた場合に、アプリケーションプログラムが使用するメモリ上の情報を、前記中断命令の対象となる仮想マシンに対応付けて、他の記憶部へ保存する保存ステップと、
前記仮想マシンに対する起動命令を受け付けた場合に、当該起動命令の対象となる仮想マシンに対応付けて保存された前記アプリケーションプログラムが使用するメモリ上の情報の内、前記記憶部から前記メモリの使用領域へ優先的に復元するアプリケーションプログラムを選択する選択ステップと
を含む制御方法。