(57)【特許請求の範囲】
【請求項１】
ハイバネーション状態に移行可能な仮想計算機を構築可能であり、
前記仮想計算機がハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルを書き換える物理メモリファイル書換処理部と、
前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査する属性検査部と、を備える計算機システムであって、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記物理メモリファイル書換処理部が、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮する計算機システム。
【請求項２】
請求項１に記載の計算機システムにおいて、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換えることに代えて、前記メモリページを削除する計算機システム。
【請求項３】
請求項２に記載の計算機システムにおいて、
前記削除したメモリページの位置に、削除されたメモリページと同じページ数だけデータを挿入することで、物理メモリファイルを伸張する計算機システム。
【請求項４】
請求項２に記載の計算機システムにおいて、
前記メモリページが削除された物理メモリファイルを圧縮する計算機システム。
【請求項５】
ハイバネーション状態に移行可能な仮想計算機を構築可能な実計算機で構成され、
前記仮想計算機の仮想的なメインメモリのメモリページの属性が設定されるページ管理テーブルのアドレスを保存する物理メモリファイル管理テーブル記憶部と、
前記仮想計算機の仮想的なメインメモリを管理し、さらに、前記ページ管理テーブルの前記仮想的なメインメモリ内でのアドレスを前記物理メモリファイル管理テーブル記憶部に記録するメモリ管理部と、
前記仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査する属性検査部と、
前記属性検査部が廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適した形式に書き換える物理メモリファイル書換処理部と、
前記検査と前記書き換えがすべて完了した後、物理メモリファイルを圧縮する物理メモリファイル圧縮部と、を有する計算機システム。
【請求項６】
ハイバネーション状態に移行可能な仮想計算機を構築可能な実計算機で構成され、
前記仮想計算機の仮想的なメインメモリのメモリページの属性が設定されるページ管理テーブルのアドレスを保存する物理メモリファイル管理テーブル記憶部と、
前記仮想計算機の仮想的なメインメモリを管理し、さらに、前記ページ管理テーブルの前記仮想的なメインメモリ内でのアドレスを前記物理メモリファイル管理テーブル記憶部に記録するメモリ管理部と、
前記の仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査する属性検査部と、
前記の属性検査部が廃棄可能なメモリページを検出した場合、前記メモリページを削除する物理メモリファイル書換処理部と、を有する計算機システム。
【請求項７】
請求項６に記載の計算機システムにおいて、さらに、前記検査と前記削除がすべて完了した後、物理メモリファイルを圧縮する物理メモリファイル圧縮部を有する計算機システム。
【請求項８】
請求項５又は６に記載の計算機システムであって、さらに、
前記仮想計算機の仮想的な補助記憶装置に含まれるファイルの識別符号と、前記仮想的な補助記憶装置内でのパスの関係を保存するファイル管理テーブル記憶部と、
前記仮想計算機の動作中に、前記仮想計算機の仮想的な補助記憶装置を管理し、前記ファイルの識別符号とパスの関係を、前記ファイル管理テーブル記憶部に記録するファイル管理部と、
前記属性検査部によって廃棄可能なメモリページであると判断されたメモリページのデータと前記メモリページに対応したファイルとのデータが異なる場合、前記ファイル管理テーブル記憶部の内容を基に、前記メモリページに対応するファイルを検出し、前記メモリページのデータを、前記検出したファイルに書き戻すファイル書込部と、を有する計算機システム。
【請求項９】
請求項５又は６に記載の計算機システムであって、さらに、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとのデータとの間で同期をとる同期処理部と、
前記同期の後では、ファイルへの書き込みのときに、メモリページを使用しない設定にされるファイル処理部と、を有する計算機システム。
【請求項１０】
請求項５又は６に記載の計算機システムであって、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、ファイルへの書き込みのときに、メモリページを使用しない設定にされるファイル処理部と、
前記設定の後、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとのデータとの間で同期をとる同期処理部と、を有する計算機システム。
【請求項１１】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存する方法であって、前記仮想計算機のハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換えるデータ保存方法であって、
前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査するステップと、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮するステップと、を含むデータ保存方法。
【請求項１２】
請求項１１に記載のデータ保存方法において、
前記の検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換えることに代えて、前記メモリページを削除するデータ保存方法。
【請求項１３】
請求項１２に記載のデータ保存方法によって書き換えられた物理メモリファイルに対して、前記削除したメモリページの位置に、前記削除したメモリページと同じページ数だけデータを挿入することで、物理メモリファイルを伸張するデータ保存方法。
【請求項１４】
請求項１２に記載のデータ保存方法において、
前記メモリページが削除された物理メモリファイルを圧縮するデータ保存方法。
【請求項１５】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するデータ保存方法であって、
前記仮想計算機が動作する実計算機で、
前記仮想計算機に含まれ、前記の仮想計算機の仮想的なメインメモリを管理するオペレーティングシステム（以下、「ＯＳ」）が、
前記仮想計算機の仮想的なメインメモリのメモリページの属性をページ管理テーブルに設定し、
前記ページ管理テーブルの仮想的なメインメモリ内でのアドレスを物理メモリファイル管理テーブル記憶部に記録し、
前記の仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査し、
廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、
前記の検査と前記の書き換えがすべて完了した後、前記物理メモリファイルを圧縮するデータ保存方法。
【請求項１６】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するデータ保存方法であって、
前記の仮想計算機が動作する実計算機で、
前記の仮想計算機に含まれ、前記仮想計算機の仮想的なメインメモリを管理するＯＳが、
前記仮想計算機の仮想的なメインメモリのメモリページの属性をページ管理テーブルに設定し、
前記ページ管理テーブルの仮想的なメインメモリ内でのアドレスを物理メモリファイル管理テーブル記憶部に記録し、
前記仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査し、
廃棄可能なメモリページを検出した場合、前記メモリページを削除するデータ保存方法。
【請求項１７】
請求項１６に記載のデータ保存方法において、
前記検査と前記削除がすべて完了した後、物理メモリファイルを圧縮するデータ保存方法。
【請求項１８】
請求項１５又は１６に記載のデータ保存方法であって、
前記ＯＳが、前記仮想計算機の動作中に、前記仮想計算機の仮想的な補助記憶装置を管理し、前記補助記憶装置に含まれるファイルの識別符号と、前記ファイルの仮想的な補助記憶装置内でのパスの関係の情報をファイル管理テーブル記憶部に記録し、
前記検査によって廃棄可能なメモリページであると判断されたメモリページのデータと前記メモリページに対応したファイルとのデータが異なる場合、前記ファイル管理テーブル記憶部の内容を基に、前記メモリページに対応するファイルを検出し、前記メモリページのデータを、前記検出したファイルに書き戻すデータ保存方法。
【請求項１９】
請求項１５又は１６に記載のデータ保存方法であって、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとのデータとの間で同期をとり、
前記同期の後では、ファイルへの書き込みのときに、メモリページを使用しない設定にするデータ保存方法。
【請求項２０】
請求項１５又は１６に記載のデータ保存方法であって、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、ファイルへの書き込みのときに、メモリページを使用しない設定にし、
前記設定の後、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとのデータとの間で同期をとるデータ保存方法。
【請求項２１】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するためのプログラムであって、前記仮想計算機のハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換える処理を実計算機に実行させるプログラムであって、
前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査する処理と、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮する処理と、を前記実計算機に実行させるプログラム。
【請求項２２】
請求項２１に記載のプログラムにおいて、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換えることに代えて、前記メモリページを削除する処理を実計算機に実行させるプログラム。
【請求項２３】
請求項２２に記載のプログラムにおいて、
前記削除されたメモリページの位置に、削除されたメモリページと同じページ数だけデータを挿入することで、物理メモリファイルを伸張する処理を実計算機に実行させるプログラム。
【請求項２４】
請求項２２に記載のプログラムにおいて、
前記メモリページが削除された物理メモリファイルを圧縮する処理を実計算機に実行させるプログラム。
【請求項２５】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するためのプログラムであって、
実計算機上で動作し、前記仮想計算機の仮想的なメインメモリを管理するＯＳに、
前記仮想計算機の仮想的なメインメモリのメモリページの属性をページ管理テーブルに設定する処理と、
前記ページ管理テーブルの仮想的なメインメモリ内でのアドレスを物理メモリファイル管理テーブル記憶部に記録させる処理と、
前記仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたページ管理テーブルのアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査する処理と、
廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換える処理と、
前記検査と前記書き換えがすべて完了した後、前記物理メモリファイルを圧縮する処理と、を実行させるプログラム。
【請求項２６】
仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するためのプログラムであって、
実計算機上で動作し、前記仮想計算機の仮想的なメインメモリを管理するＯＳに、
前記仮想計算機の仮想的なメインメモリのメモリページの属性をページ管理テーブルに設定する処理と、
前記ページ管理テーブルの仮想的なメインメモリ内でのアドレスを物理メモリファイル管理テーブル記憶部に記録させる処理と、
前記仮想計算機がハイバネーション状態に移行後に、前記物理メモリファイル管理テーブル記憶部に記録されたアドレスに基づき前記ページ管理テーブルを参照し、前記ページ管理テーブルに設定されたメモリページの属性から廃棄可能なメモリページの有無を検査する処理と、
廃棄可能なメモリページを検出した場合、前記メモリページを削除する処理と、を実行させるプログラム。
【請求項２７】
請求項２６に記載のプログラムにおいて、更に、
前記検査と前記削除がすべて完了した後、物理メモリファイルを圧縮する処理を実計算機に実行させるプログラム。
【請求項２８】
請求項２５又は２６に記載のプログラムであって、
前記ＯＳに、前記仮想計算機が動作中に、前記仮想計算機の仮想的な補助記憶装置を管理させるとともに、前記補助記憶装置に含まれるファイルの識別符号と、前記ファイルの仮想的な補助記憶装置内でのパスの関係の情報をファイル管理テーブル記憶部に記録させる処理と、
前記検査によって廃棄可能なメモリページであると判断されたメモリページのデータと前記メモリページに対応したファイルとのデータが異なる場合、前記ファイル管理テーブル記憶部の内容を基に、前記メモリページに対応するファイルを検出し、前記メモリページのデータを、前記検出したファイルに書き戻す処理と、を実計算機に実行させるプログラム。
【請求項２９】
請求項２５又は２６に記載のプログラムであって、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとデータとの間で同期をとる処理と、
前記同期の後では、ファイルへの書き込みのときに、メモリページを使用しない設定にする処理とを実計算機に実行させるプログラム。
【請求項３０】
請求項２５又は２６に記載のプログラムであって、
前記仮想計算機がハイバネーションを完了する前の任意の時点から、ファイルへの書き込みのときに、メモリページを使用しない設定にする処理と、
前記設定の後、廃棄可能なメモリページのデータと、前記メモリページに対応したファイルとのデータとの間で同期をとる処理とを実計算機に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２００８−２９３７７６号（２００８年１１月１７日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、計算機システム、データ保存方法およびプログラムに関し、特に、ハイバネーション機能を有する仮想計算機を構築可能な計算機システム、方法およびプログラムに関する。
【背景技術】
【０００２】
ノート型コンピュータ等の実計算機や仮想計算機を停止させる機能のひとつとして、ハイバネーション（ｈｉｂｅｒｎａｔｉｏｎ）という機能がある。ハイバネーションを実行すると、コンピュータは、メインメモリのデータ等を、不揮発性の補助記憶装置に保存し、電源を遮断する。この状態を、ハイバネーション状態、もしくは、休止状態という。【０００３】
仮想計算機とは、実計算機上で、ソフトウェア等により仮想的に実現したコンピュータである。特に、仮想計算機は、仮想的なＣＰＵ、仮想的なメインメモリ、仮想的な補助記憶装置等を持つシステム仮想計算機を持つものがある。仮想計算機の適用例として、コンピュータの利用者が、１台の実計算機上で、複数のコンピュータを使用できるようにする例等がある。【０００４】
仮想計算機の仮想的なメインメモリのデータは、実計算機上のファイルに保存される。このファイルを物理メモリファイルと称する。【０００５】
ハイバネーションに関し、仮想計算機へ大容量のメモリを割り当てると、実計算機の補助記憶装置へ保存するデータ量が多くなるという問題があった。【０００６】
そこで、このような問題を解決するため、前記補助記憶装置に保存するメインメモリのデータを削減する方法が提案されており、例えば、非特許文献１や特許文献１、特許文献２に開示されている。【０００７】
非特許文献１に開示された計算機システムについて図１５を用いて説明する。この計算機システムは、実計算機２００１に含まれる、仮想計算機２１００と、メモリファイル２２００と、メモリファイル圧縮部２３００から構成される。【０００８】
仮想計算機２１００は、オペレーティングシステム（以下、「ＯＳ」）２１０１と、メモリ消費部２１０２から構成される。【０００９】
ＯＳ２１０１は、仮想計算機２１００の仮想的なメインメモリを管理する機能等を持ち、これら機能により、仮想的なメインメモリから破棄可能なメモリページを回収し、仮想計算機２１００で動作するプログラムに対して、メモリページを割り当てる。【００１０】
メモリ消費部２１０２は、仮想計算機が動作中にＯＳ２１０１に対してメモリページの割り当てを要求し、割り当てられたメモリページに、圧縮に適したデータを書き込む。【００１１】
メモリファイル２２００は、仮想計算機２１０１の仮想的なメインメモリのデータを記載したファイルである。このファイルは、実計算機２００１の補助記憶装置（不図示）に保存される。【００１２】
メモリファイル圧縮部２３００は、仮想計算機２１００がハイバネーション状態に移行した後、メモリファイル２２００を圧縮する。【００１３】
このような構成を有する従来の計算機システムは、仮想計算機２１００が動作中にメモリ消費部２１０２を動作させる。メモリ消費部２１０２は、ＯＳ２１０１にメモリページを要求し、割り当てさせ、割り当てられたメモリページに、圧縮に適したデータを書き込む。この計算機システムは、メモリ消費部２１０２に、前記要求と圧縮に適したデータの書込みを実行させることで、仮想的なメインメモリ内で、圧縮に適したデータが書き込まれたメモリページを増やしている。この結果、仮想計算機２１００がハイバネーション状態に移行した後、メモリファイル圧縮部２３００にメモリファイル２２００を圧縮させると、より高い圧縮率でメモリファイル２２００を圧縮できるため、メモリファイルのサイズをより小さくできる。【００１４】
特許文献１は、実計算機を対象としたデータセーブ制御方法であって、図１６に示すように、ＢＩＯＳ３１０１と、ＯＳ３１０２と、高速ハイバネーションソフトウェアドライバ３１０３から構成される。【００１５】
このような構成を有する計算機システムは、以下のように動作する。即ち、ＯＳ３１０２から、ハイバネーションメッセージが発行されると、高速ハイバネーションソフトウェアドライバ３１０３は、そのハイバネーションメッセージに応答して、ＯＳ３１０２に対して、現在のメモリ状態を示すメモリ管理情報（ページインフォメーション）を要求する。ページインフォメーションは、特許文献１の実計算機のメインメモリ（不図示）内に実在するページに対応するプログラム（プロセス）のマッピング情報を示すものであり、仮想記憶機構を実現するためのデマンドページングを実行するために、ＯＳ３１０２によって管理されている。【００１６】
高速ハイバネーションソフトウェアドライバ３１０３は、ＯＳ３１０２からページインフォメーションを受取ると、そのページインフォメーションが示す現在のメインメモリの使用状況に基づいて、空ページおよび廃棄可能ページ以外の他のページについて、その物理メモリアドレスを調べ、そのメモリ内容をＯＳ３１０２のファイルシステムを利用して、特許文献１の実計算機のＨＤＤ（不図示）にセーブする。セーブ処理が完了すると、高速ハイバネーションソフトウェアドライバは、ＢＩＯＳ３１０１に対してパワーオフを指示し、これに応答して特許文献１の実計算機の電源コントローラにシステムの電源をオフさせるパワーオフ処理がＢＩＯＳ３１０１によって実行される。【００１７】
その他、特許文献２には、ハイバネーション時又はウェークアップ時のシステムのパフォーマンスを評価し、その評価に従って、次回以降のハイバネーション時にメモリ内容の圧縮を行うか否かを決定するハイバネーション装置が開示されている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開平１０−３３３９９７号公報
【特許文献２】特開２００１−２２４６４号公報
【非特許文献】
【００１９】
【非特許文献１】Ｃｏｎｓｔａｎｔｉｎｅ  Ｐ．  Ｓａｐｕｎｔｚａｋｉｓ  他  著「Ｏｐｔｉｍｉｚｉｎｇ  ｔｈｅ  Ｍｉｇｒａｔｉｏｎ  ｏｆ  Ｖｉｒｔｕａｌ  Ｃｏｍｐｕｔｅｒｓ」ＡＣＭ出版、２００２年、ｐｐ．３７７−３９０
【発明の概要】
【発明が解決しようとする課題】
【００２０】
上記特許文献１、２及び非特許文献１の全開示内容はその引用をもって本書に繰込み記載する。以下に本発明による関連技術の分析を与える。
非特許文献１に記載の計算機システムは、仮想計算機の動作中に、破棄可能なメモリページを回収している。このため、前記仮想計算機が動作中に使用しているメモリページは、前記仮想計算機がハイバネーション状態になった時点で、廃棄可能なページとなったとしても、破棄されない。この結果、廃棄可能なページであっても、廃棄されないページが存在しうる。【００２１】
また、特許文献１に記載のデータセーブ制御方法を仮想計算機に応用した場合、高速ハイバネーションソフトウェアドライバは、空ページおよび廃棄可能ページ以外の他のページのデータを、ＯＳのファイルシステムを利用して保存することになる。このため、ＯＳが動作中に使用しているメモリページは、ＯＳを含む仮想計算機がハイバネーション状態になった時点で廃棄可能なページとなったとしても、廃棄されない。【００２２】
また、特許文献２のハイバネーション装置を仮想計算機に応用した場合も同様に、ハイバネーション状態の前に、動作効率を最適化しているものであるため、前記仮想計算機が動作中に使用しているメモリページは、前記仮想計算機がハイバネーション状態になった時点で、廃棄可能なページとなったとしても、破棄されない。【００２３】
前記のように破棄可能となっても、廃棄されないメモリページの例として、仮想計算機の内部で動作するＯＳによって、ディスクキャッシュに割り当てられた、仮想メモリ上のメモリページを挙げることができる。【００２４】
ディスクキャッシュは、ハードディスク装置などの補助記憶装置とのデータの読み書きを高速化するためにメインメモリに割り当てられたキャッシュであり、仮想計算機、実計算機に関係なく、Ｌｉｎｕｘなどの一般的なＯＳに搭載されている。【００２５】
これらのＯＳは、補助記憶装置からデータを読み出す場合、読み出したデータをメインメモリにディスクキャッシュとして保存する。このため、再度、同じデータが読み出される場合、補助記憶装置からではなく、ディスクキャッシュから読み出すことで、仮想的に補助記憶装置からの読み出しを高速化できる。補助記憶装置へデータを書き込む場合も同様に、書き込むデータを補助記憶装置にではなく、メインメモリにキャッシュとして保存する。このため、仮想的に補助記憶装置への書込みを高速化できる。後者のディスクキャッシュに保存されたデータは、専用のプロセス（デーモン）によって、定期的に、まとめて補助記憶装置に書き込まれる。これにより、ディスクキャッシュと補助記憶装置とのデータの同期をとっている。このような、ディスクキャッシュに保存されているデータは、同期がとれている限り、補助記憶装置にも存在する。このため、同期がとれているディスクキャッシュは、廃棄可能なメモリページである。【００２６】
しかし、ディスクキャッシュの機構を明示的に停止しない限り、ＯＳが補助記憶装置に対して読み書きするたびに、ディスクキャッシュとして、メモリページが使用される。【００２７】
前記のＯＳが、前記仮想計算機内のＯＳである場合、ディスクキャッシュの機構を明示的に停止しない限り、ディスクキャッシュとして、仮想メモリ上のメモリページが使用される。【００２８】
以上のように、特許文献１〜２や非特許文献１に記載の計算機システムでは、仮想計算機内のＯＳがディスクキャッシュとして割り当てたメモリページなど、仮想計算機が動作中は使用されているがハイバネーション状態になった時点で廃棄可能なページを、廃棄しきれないという問題点がある。【００２９】
本発明は、上記した考察に基づいてなされたものであって、補助記憶装置に保存するメインメモリのデータをより削減することのできる計算機システム、データ保存方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００３０】
本発明の第１の視点によれば、ハイバネーション状態に移行可能な仮想計算機を構築可能であり、前記仮想計算機がハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルを書き換える物理メモリファイル書換処理部と、前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査する属性検査部と、を備える計算機システムであって、前記検査の結果、廃棄可能なメモリページを検出した場合、前記物理メモリファイル書換処理部が、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮する計算機システムが提供される。
【００３１】
本発明の第２の視点によれば、仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存する方法であって、前記仮想計算機のハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換えるデータ保存方法であって、前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリフ  仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するためのプログラムであって、前記仮想計算機のハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換える処理を実計算機に実行させるプログラムであって、
前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査する処理と、
前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮する処理と、を前記実計算機に実行させるプログラム。
ァイルに含まれるメモリページの属性を検査するステップと、前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮するステップと、を含むデータ保存方法が提供される。
【００３２】
本発明の第３の視点によれば、  仮想計算機の仮想的なメインメモリのデータを保存した物理メモリファイルに含まれるデータを保存するためのプログラムであって、前記仮想計算機のハイバネーション状態への移行後に、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換える処理を実計算機に実行させるプログラムであって、前記物理メモリファイルを書き換えるために、前記仮想計算機がハイバネーション状態への移行後に、前記物理メモリファイルに含まれるメモリページの属性を検査する処理と、前記検査の結果、廃棄可能なメモリページを検出した場合、前記メモリページを圧縮に適したデータに書き換え、前記物理メモリファイルを圧縮する処理と、を前記実計算機に実行させるプログラム。
が提供される。
【発明の効果】
【００３３】
本発明によれば、補助記憶装置に保存するメインメモリのデータを削減することが可能となる。その理由は、仮想計算機の動作中に破棄可能なメモリページのみならず、ハイバネーション状態になった時点で、廃棄可能なメモリページを破棄等できるよう書き換えを行うようにしたことにある。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施形態に係る計算機システムの構成を示すブロック図である。
【図２】本発明の第１の実施形態のページ管理テーブルの一例を示す図である。
【図３】本発明の第１の実施形態の物理メモリファイル管理テーブルの一例を示す図である。
【図４】本発明の第１の実施形態のファイル管理テーブルの一例を示す図である。
【図５】本発明の第１の実施形態のファイルの保存形式を説明するための図である。
【図６】本発明の第１の実施形態に係る計算機システムの動作を説明するためのフローチャートである。
【図７】本発明の第１の実施形態に係る計算機システムの動作を説明するための第２のフローチャートである。
【図８】本発明の第２の実施形態に係る計算機システムの構成を示すブロック図である。
【図９】本発明の第２の実施形態に係る計算機システムの動作を説明するためのフローチャートである。
【図１０】本発明を適用可能なコンピュータの構成例である。
【図１１】本発明の第１の実施形態に対応する具体例を説明するためのファイル構成を表した図である。
【図１２】本発明の第１の実施形態に対応する具体例を説明するためのプログラム構成を表した図である。
【図１３】第２の実施形態に対応する具体例を説明するためのファイル構成を表した図である。
【図１４】本発明の第２の実施形態に対応する具体例を説明するためのプログラム構成を表した図である。
【図１５】非特許文献１の構成を示すブロック図である。
【図１６】特許文献１の構成を示すブロック図である。
【発明を実施するための形態】
【００３５】
［発明の概要］
続いて、本発明の概要を説明する。本発明は、仮想計算機がハイバネーション状態への移行後に（図６のステップＳ１０１の「はい」参照）、計算機システムが、仮想計算機のメモリページの検査を実行する。この検査により、例えば、参照されることの無かったメモリページやディスクキャッシュ等の破棄可能なデータを特定可能となる。その結果に基づいて、計算機システムが、補助記憶装置に保存するデータを削減できるよう前記物理メモリファイルを書き換える（最適化する）処理を行うようにしたことにある。
【００３６】
前記書き換え（最適化）の具体例としては、例えば、参照されていないメモリページをより高い圧縮率で圧縮できるよう書き換えたり（図６のステップＳ１０４、Ｓ１０５参照）、削除することが考えられる。
【００３７】
以上のように、ハイバネーション状態へ移行した時点で、上述した廃棄できるのにもかかわらず廃棄されないメモリページを圧縮又は削除するように物理メモリファイルの書き換えが行われるため、計算機システムの補助記憶装置に保存するデータを削減することが可能になる。
【００３８】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。第１の実施形態では、廃棄可能なメモリページの例として、ディスクキャッシュとして割り当てられたメモリページを用いる。以下、このページのことを、キャッシュページと称する。
【００３９】
図１は、本発明の第１の実施形態に係る計算機システム（コンピュータ）の構成を示すブロック図である。
【００４０】
図１を参照すると、物理メモリファイル記憶部１１と、ファイル記憶部１２と、メモリファイル圧縮部１３と、メモリファイル伸張部１４と、仮想計算機１５と、仮想計算機監視部１６と、物理メモリファイル管理テーブル記憶部１７と、ファイル管理テーブル記憶部１８とを備えたコンピュータ１が示されている。
【００４１】
物理メモリファイル記憶部１１は、仮想計算機１５が使用する仮想的なメインメモリのデータを保存するファイルである、物理メモリファイルを記憶する。物理メモリファイル記憶部１１は、ページ管理テーブル記憶部１１１を含む。
【００４２】
ページ管理テーブル記憶部１１１は、前述の物理メモリファイルに含まれるそれぞれのメモリページの属性を管理するテーブルであるページ管理テーブルを記憶する。
【００４３】
図２にページ管理テーブルの一例を示す。図２を参照すると、ページ管理テーブルは、メモリページごとにエントリを有し、メモリページの属性を示す以下のメンバによって構成される。
【００４４】
［ページ  キャッシュ  フラグ］
当該ページがキャッシュページであるかを示すフラグ。セットされていれば、当該ページがキャッシュページであることを示す。
【００４５】
［マッピングファイル］
当該ページがキャッシュページである場合、当該ページがキャッシュするデータをもつ、ファイルのファイルＩＤを示す。
【００４６】
［インデックス］
当該ページがキャッシュページである場合、当該ページが、前記マッピングファイルに記載されたファイルＩＤのファイルのどの位置に対応するかを、オフセットで示す。オフセットの表現方法は、ページ単位であっても、バイト単位であってもよい。
【００４７】
［ページ参照カウンタ］
当該ページが使用されているかを示すカウンタ。この値が０であれば、当該ページは未使用であり、正数であれば、使用されていることを示す。
【００４８】
［ページダーティフラグ］
当該ページのデータが変更されたかを示すフラグ。当該ページが、キャッシュページであって、さらに、このフラグがセットされていれば、当該ページのデータは、前記のマッピングファイルに記載されたファイルＩＤのファイルの対応する位置のデータと異なることを示す。
【００４９】
ファイル記憶部１２は、仮想計算機１５の仮想的な補助記憶装置を、ディスクイメージファイルとして記憶する。
【００５０】
メモリファイル圧縮部１３は、物理メモリファイルを圧縮する。
【００５１】
メモリファイル伸張部１４は、物理メモリファイルを伸張する。
【００５２】
仮想計算機１５は、メインメモリや補助記憶装置などを仮想的に実現した仮想計算機であって、ＯＳ１５１を含む。
【００５３】
ＯＳ１５１は、仮想計算機１５の内部で動作するＯＳであって、仮想計算機１５の仮想的なハードウェアを管理し、仮想計算機１５内部で動作するユーザプロセスに対して前記の仮想的なハードウェアを抽象化する。ＯＳ１５１は、さらに、メモリ管理部１５２と、ファイル管理部１５３を含む。
【００５４】
メモリ管理部１５２は、仮想計算機１５の仮想的なメインメモリを管理し、そのメモリページの属性を前述のページ管理テーブルに設定する。さらに、仮想計算機１５の動作中に、仮想計算機監視部１６に対して送られる仮想的な物理アドレスと、それがどのようなデータのアドレスであるかを、物理メモリファイル管理テーブルに記録する。特に、メモリ管理部１５２から仮想計算機監視部１６に送られるページ管理テーブルの仮想的な物理アドレスを、物理メモリファイル管理テーブルに記録する。
【００５５】
物理メモリファイル管理テーブルは、物理メモリファイルのどのアドレスにどのようなデータが存在するかを管理するテーブルである。本実施形態の物理メモリファイル管理テーブルは、ページ管理テーブルが、どのアドレスに存在するかを示すテーブルとなっている。
【００５６】
図３に物理メモリファイル管理テーブルの一例を示す。物理メモリファイル管理テーブルは、物理メモリファイル管理テーブル記憶部１７に保存される。
【００５７】
メモリ管理部１５２による物理メモリファイル管理テーブルへ記録するとき、メモリ管理部１５２が、直接、物理メモリファイル管理テーブルに書き込む場合、コンピュータ１に含まれる記憶部のアクセス権限を正確に設定し、メモリ管理部１５２が、物理メモリファイル管理テーブル記憶部１７以外にアクセスできないようにする必要がある。例えば、メモリ管理部１５２が、仮想計算機監視部１６にメッセージとして前記物理メモリファイル管理テーブルに記録すべきデータを送り、仮想計算機監視部１６が物理メモリファイル管理テーブルに書き込む方法など、仮想計算機監視部１６を介在させ、その監視下で物理メモリファイル管理テーブルに書き込む方法を採ることで、コンピュータ１のセキュリティをより高められる。
【００５８】
ファイル管理部１５３は、仮想計算機１５の仮想的な補助記憶装置を管理する。さらに、ファイル管理部１５３は、仮想計算機１５の動作中に、仮想計算機１５の仮想的な補助記憶装置に保存されたファイルの「ファイルＩＤ」と「パスを含めたファイル名」を、ファイル管理テーブルに記録する。また、仮想計算機１５が、複数の仮想的な補助記憶装置を持つとき、それらをマウントしたときの関連情報も、ファイル管理テーブルに記録する。「ファイルＩＤ」とは、ファイル固有の識別符号であって、例えばｉノードのことである。
【００５９】
ファイル管理テーブルは、ファイル記憶部１２のどこにどのようなファイルが存在するかを管理するテーブルである。
【００６０】
図４にファイル管理テーブルの一例を示す。ファイル管理テーブルには、少なくとも仮想計算機１５に保存され、キャッシュページにキャッシュされたファイルの「ファイルＩＤ」と「パスを含めたファイル名」が記録されている。
【００６１】
ファイル管理部１５３によるファイル管理テーブルへの記録に関し、メモリ管理部１５２と同様に、コンピュータ１に含まれる記憶部へのアクセス権限を正確に設定する必要がある。この場合も、仮想計算機監視部１６を介在させ、その監視下でファイル管理テーブルに書き込むようにすることで、コンピュータ１のセキュリティをより高められる。
【００６２】
仮想計算機監視部１６は、仮想計算機１５をコンピュータ１で動作させ、特に、仮想計算機１５の仮想的なハードウェアとコンピュータ１の実ハードウェアとの変換を行う。仮想計算機監視部１６は、属性検査部１６１と、物理メモリファイル書換処理部１６２と、ファイル書込部１６３と、を含んで構成される。
【００６３】
属性検査部１６１は、仮想計算機１５がハイバネーション状態に移行した後に、物理メモリファイル記憶部１１に記憶された仮想計算機１５の物理メモリファイルに含まれるメモリページの属性を参照し、属性に応じて処理する。
【００６４】
より具体的には、属性検査部１６１は、仮想計算機１５がハイバネーション状態に移行した後に、まず、物理メモリファイル管理テーブルを参照し、物理メモリファイルのどこにページ管理テーブルがあるかを確認する。次に、属性検査部１６１は、物理メモリファイルからページ管理テーブルを参照し、物理メモリファイルに含まれるメモリページの属性を検査する。検査の結果、検査したメモリページの「ページ参照カウンタ」が０である場合、属性検査部１６１は、当該ページのデータの変更を物理メモリファイル書換処理部１６２に依頼する。
【００６５】
更に、前記属性検査の結果、検査したメモリページの「キャッシュフラグ」がセットされており、「ダーティフラグ」がクリアである場合、属性検査部１６１は、当該ページの書き換えを物理メモリファイル書換処理部１６２に依頼し、書き換え完了後に、当該ページのエントリを初期化する。また、検査したメモリページの「キャッシュフラグ」がセットされており、「ダーティフラグ」もセットされている場合、属性検査部１６１は、ファイル書込部１６３に当該ページのデータをファイル記憶部１２へ書き戻させた後、当該ページの書き換えを物理メモリファイル書換処理部１６２に依頼し、さらに、当該ページのエントリを初期化する。なお、当該ページのエントリを初期化するとは、例えば、「キャッシュフラグ」や「ダーティフラグ」をクリアにし、「ページ参照カウンタ」を０に変更することである。
【００６６】
物理メモリファイル書換処理部１６２は、属性検査部１６１の依頼に応じて、依頼されたメモリページを書き換える。書き換え方法の例としては次のようなものが考えられる。その１つは、書き換え対象となったページを、０詰め（０パディング）するなど、より高い圧縮率で圧縮できるデータに書き換える方法である。もう１つとしては、書き換え対象となったページを削除し、その前後を詰める方法が挙げられる。後者の方法では、仮想計算機１５をレジュームするときに、書き換えられなかったデータが、再度、同じ仮想的な物理アドレスに存在できるように、例えば、図５に示すように、書き換えられなかったデータの領域の開始アドレスとサイズを保存する必要がある。図５の例では、バイト単位でサイズを表現しているが、ページ数単位で保存してもよい。
【００６７】
ファイル書込部１６３は、属性検査部１６１の依頼に応じて、物理メモリファイルの書き戻し対象となったメモリページのデータを、仮想計算機１５の仮想的な補助記憶装置であるファイル記憶部１２の対応するファイルに書き戻す。
【００６８】
より具体的には、ファイル書込部１６３は、属性検査部１６１から書き戻し依頼と同時に、ページ管理テーブルから、対象のメモリページの「マッピングファイル」と「インデックス」の値を受取る。次に、ファイル書込部１６３は、前記の「マッピングファイル」の値である「ファイルＩＤ」と、ファイル管理テーブル記憶部１８にあるファイル管理テーブルに記載の「ファイルＩＤ」とを比較して、「パスを含めたファイル名」を取得する。次に、ファイル書込部１６３は、ファイル記憶部１２に記憶されたディスクイメージファイルをマウントし、前記の「パスを含めたファイル名」からデータを書き戻すファイルを特定し、さらに、前記の「インデックス」からファイルの中でデータを書き戻す位置を決め、データを書き戻す。なお、ファイル記憶部１２に複数のディスクイメージファイルが存在する、すなわち、仮想計算機１５の仮想的な補助記憶装置が複数存在する場合、ファイル書込部１６３は、ファイル管理部１５３から送られたマウントに関する関連情報をもとに、ディスクイメージファイルをマウントする。  
【００６９】
物理メモリファイル管理テーブル記憶部１７は、前述の物理メモリファイル管理テーブル（図３参照）を保存する。
【００７０】
ファイル管理テーブル記憶部１８は、前述のファイル管理テーブル（図４参照）を保存する。
【００７１】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図６は、本実施形態の仮想計算機がハイバネーション状態に移行した後での、物理メモリファイルのサイズ削減の動作を表したフローチャートである。
【００７２】
仮想計算機監視部１６は、仮想計算機１５がハイバネーション状態にあることを確認する（ステップＳ１０１）。
【００７３】
仮想計算機監視部１６の属性検査部１６１は、ページ管理テーブルのすべてのエントリを参照したか否かを確認する（ステップＳ１０２）。すべてのエントリを参照したのであれば、メモリファイル圧縮部１３は物理メモリファイルを圧縮する（ステップＳ１１１）。すべてのエントリを参照していないのであれば、エントリを参照する（ステップＳ１０３）。
【００７４】
属性検査部１６１は、エントリの「ページ参照カウンタ」を参照し（ステップＳ１０４）、「ページ参照カウンタ」が０である場合、物理メモリファイル書換処理部に当該ページの書き換えを依頼し（ステップＳ１０５）、次のエントリを参照するため、ステップＳ１０２に戻る。
【００７５】
一方、ページ参照カウンタが正数である場合、属性検査部１６１は、「キャッシュフラグ」を参照する（ステップＳ１０６）。「キャッシュフラグ」がセットされている場合、属性検査部１６１は、「ダーティフラグ」を参照する（ステップＳ１０７）。一方、「キャッシュフラグ」がクリアである場合、属性検査部１６１は、次のエントリを参照するため、ステップＳ１０２に戻る。
【００７６】
「ダーティフラグ」がセットされている場合（ステップＳ１０７）、属性検査部１６１は、ファイル書込部１６３に当該ページのデータのファイル記憶部１２への書き戻しを依頼する（ステップＳ１０８）。
【００７７】
ファイル書込部１６３による書き戻しが完了し、あるいは、前記「ダーティフラグ」がクリアである場合、属性検査部１６１は、物理メモリファイル書換処理部１６２に当該ページの書き換えを依頼する（ステップＳ１０９）。
【００７８】
その後、属性検査部１６１は、当該ページのエントリを初期化し（ステップＳ１１０）、次のエントリを参照するため、ステップＳ１０２に戻る。
【００７９】
次に、図７のフローチャートを参照して、本実施形態の仮想計算機のレジューム前における、物理メモリファイルの伸張動作について詳細に説明する。
【００８０】
仮想計算機監視部１６は、仮想計算機１５をレジュームする前に、メモリファイル伸張部１４に物理メモリファイルを伸張させる（ステップＳ２０１）。このとき、伸張された物理メモリファイルが、書き換え対象となったページを削除する形式であった場合、前記の削除されたメモリページの位置に、削除されたメモリページと同じページ数だけページを挿入する。挿入されたページには、どのようなデータが書き込まれてもよいが、ＯＳ１５１が、その上で動作するプログラムに提供する初期化されたメモリページと同じデータが書き込まれていることが望ましい。
【００８１】
次に、本実施形態の効果について説明する。
【００８２】
以上説明したように、本実施形態では、仮想計算機の動作中に、仮想計算機のメモリ管理部が、仮想的なメインメモリのメモリページの属性をページ管理テーブルに設定し、仮想計算機がハイバネーション状態に移行した後、仮想計算機監視部の属性検査部が、ページ管理テーブルを検査し、廃棄可能なメモリページのデータを圧縮に適したデータに書き換えた後、圧縮、もしくは、当該メモリページを削除する。このため、仮想計算機が動作中には使用するメモリページであっても、ハイバネーション状態へ移行した時点で廃棄可能なメモリページであれば、確実に当該メモリページを圧縮、もしくは、削除できる。
【００８３】
なお、本実施形態では、廃棄可能なページの例として、仮想計算機のＯＳのディスクキャッシュを例としたが、ＯＳによって、前記のディスクキャッシュ以外にも仮想計算機がハイバネーション状態に移行した時点で廃棄可能であるメモリページがある。当業者であれば、本発明を、これらのメモリページにも応用できることは、明らかである。
【００８４】
［第２の実施形態］
続いて、本発明の第２の実施形態について図面を参照して詳細に説明する。上記した第１の実施形態では、仮想計算機１５のハイバネーション状態への移行後にダーティなキャッシュページのファイル記憶部１２への書き戻しを行っていたが、第２の実施形態では、このダーティなキャッシュページのファイル記憶部１２への書き戻しを、仮想計算機１５のハイバネーションを完了する前の任意の時点で行う。この結果、仮想計算機１５の「ファイルＩＤ」と「パスを含むファイル名」の管理を不要にし、また、ハイバネーション状態への移行後のファイル書込み処理を不要にできる。
【００８５】
図８は、本発明の第２の実施形態に係る計算機システム（コンピュータ）の構成を示すブロック図である。
【００８６】
図８を参照すると、本発明の第２の実施形態では、本発明の第１の実施形態のＯＳ１５１に、同期処理部１５４が追加されている。逆に、ファイル管理テーブル記憶部１８と、仮想計算機監視部１６のファイル書込部１６３と、が削除されている。また、ファイル管理部１５３について、第１の実施形態に対して、変更がある。
【００８７】
同期処理部１５４は、仮想計算機１５の仮想的なメインメモリのキャッシュページに保存されたデータを、仮想計算機１５の仮想的な補助記憶装置に書き込むことで、前記のディスクキャッシュと前記の補助記憶装置との間で、データの同期をとる。同期の実行タイミングは、ハイバネーションを完了する前の任意の時点でよいが、性能の観点から、特に、仮想計算機１５がハイバネーションを実行するときに、仮想計算機１５のＯＳ１５１が停止する直前に必ず同期をとるよう動作することが望ましい。
【００８８】
ファイル管理部１５３は、第１の実施形態と同様に、仮想計算機１５の仮想的な補助記憶装置を管理し、さらに、設定によって仮想計算機１５のファイルを、ファイル記憶部１２に書き込むときに、ディスクキャッシュを使用せずに書き込むことができる。この設定を、本明細書では、ディスクキャッシュの非使用設定と称する。ファイル管理部１５３は、同期処理部１５４による前記のＯＳ１５１が停止する前の最後の同期の後、ディスクキャッシュの非使用設定をし、ファイルの書き込みではディスクキャッシュを使用せずに書き込む。
【００８９】
なお、このディスクキャッシュを非使用にする設定がなされた状態で、キャッシュされたファイルの、キャッシュされた部分にデータを書き込む場合、ファイルのみにデータを書き込むと、ディスクキャッシュとファイルとの間で不整合が発生する。このため、前述のキャッシュされた部分に、データを書き込むときには、対応するファイルと当該キャッシュページの両方に書き込む、もしくは、対応するファイルのみに書込み、当該キャッシュページのエントリを初期化する、もしくは、対応するファイルのみに書き込んだ後、当該ページを更新する（キャッシングし直す）などの対処が必要である。
【００９０】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図９は、本実施形態の仮想計算機によるハイバネーションの実行中及びハイバネーション状態に移行した後での、物理メモリファイルのサイズ削減の動作を表したフローチャートである。
【００９１】
本実施形態では、第１の実施形態のフローチャート（図６）のステップＳ１０１に替わって、ステップＳ１２１からステップＳ１２４までが追加され、ステップＳ１０７からステップＳ１０８までが削除されている。
【００９２】
図９を参照すると、まず、仮想計算機監視部１６が仮想計算機１５に要求して、もしくは、仮想計算機１５が自ら、ハイバネーションを実行開始した場合（ステップＳ１２１）、同期処理部１５４が同期処理を実行し、書込み用キャッシュページとなったメモリページのデータを、ファイル記憶部１２に書き出す（ステップＳ１２２）。
【００９３】
同期処理が完了した時点で、同期処理部１５４は、ファイル管理部１５３に対して、以後、ファイル記憶部１２への書込み時にディスクキャッシュを使用しない設定にする（ステップＳ１２３）。この設定により、以後、ダーティであるキャッシュページが存在しなくなるため、ハイバネーション状態への移行後の、ファイル記憶部１２へのダーティなキャッシュページの書き戻しが不要になる。
【００９４】
仮想計算機１５がハイバネーション状態に移行することで、ハイバネーションの実行を完了する（ステップＳ１２４）。
【００９５】
ステップＳ１０２以降は、第１の実施の形態と同様である。ただし、前記のとおり、ファイル記憶部１２へのダーティなキャッシュページの書き戻しが不要になるため、ステップＳ１０６からステップＳ１０７までが削除される。
【００９６】
なお、前記の同期処理とディスクキャッシュを非使用にする設定を実行するタイミングは、ハイバネーション実行中のどのタイミングでも、さらには、ハイバネーション実行開始前であってもよいが、仮想計算機１５がハイバネーション状態に移行する直前になるべく近いことが望ましい。
【００９７】
これは、以下の理由による。ディスクキャッシュを非使用にすると、以後の仮想的な補助記憶装置へのデータの書込みは、仮想的なメインメモリ上のキャッシュページにではなく、直接、仮想的な補助記憶装置に書き込まれることになる。仮想的なメインメモリは、物理メモリファイル記憶部１１であって、コンピュータ１のメインメモリにロードされていることが多く、高速にアクセスできると考えられる。一方、仮想的な補助記憶装置は、ファイル記憶部１２であって、一般に、コンピュータ１の補助記憶装置（不図示）、例えば、ハードディスクドライブであり、低速にしかアクセスできない。このため、仮想的な補助記憶装置にデータを、直接、書き込むと、著しく時間がかかることが予測される。
【００９８】
また、ステップＳ１２２とステップＳ１２３を逆にし、ディスクキャッシュの非使用設定の後、同期処理を実行するように実施してもよい。
【００９９】
これは、以下の理由による。コンピュータ１によっては、同期処理を実行した後に、ディスクキャッシュの非使用設定の処理を実行したのでは、前記２つの処理を実行する間に、仮想的な補助記憶装置への書込みがないことを保証できない場合が考えられる。この場合、ディスクキャッシュの非使用設定の処理を実行した後、同期処理を実行する。
【０１００】
次に、上記した第１の実施形態の効果と異なる本実施形態の効果について説明する。
【０１０１】
本実施形態では、仮想計算機のハイバネーション実行中に、同期処理部１５４がキャッシュページのうち、ダーティなページをファイル記憶部１２に書き戻すため、仮想計算機のハイバネーション完了後に、属性検査部１６１がキャッシュページを書き戻す必要がなくなる。このため、ハイバネーション完了後の書き戻し処理が必要とするメインメモリやＣＰＵ時間などのコンピュータの資源を削減できるという効果がある。
【０１０２】
（具体例１）
次に、ＯＳとしてＬｉｎｕｘ（登録商標）を搭載したコンピュータに、本発明の第１の実施形態を適用した具体的構成を具体例１として説明する。
【０１０３】
図１０に示したとおり、コンピュータ１００１は、ＣＰＵ１０１１と、メモリ１０１２と、ハードディスクドライブ（以下、ＨＤＤ）１０１３で構成される。
【０１０４】
上記した第１の実施形態の物理メモリファイル記憶部１１と、ファイル記憶部１２と、物理メモリファイル管理テーブル記憶部１７、ファイル管理テーブル記憶部１８として、メモリ１０１２とＨＤＤ１０１３を使用して構成される。
【０１０５】
一般に、物理メモリファイル記憶部１１と、物理メモリファイル管理テーブル記憶部１７と、ファイル管理テーブル記憶部１８の内容は、頻繁にアクセスされるため、あるいは、それらを使用するプログラムによってロードされるため、メモリ１０１２に保存されることが多く、ファイル記憶部１２の内容は、あまりアクセスされないため、ＨＤＤ１０１３に保存されることが多い。これら４つの記憶部の内容はファイルとして実装されており、ファイルがメモリ１０１２やＨＤＤ１０１３にどのように保存されるかは、当業者には明らかである。
【０１０６】
図１１は、上記４つのファイルの構成を表した図である。物理メモリファイル１１０１は、物理メモリファイル記憶部１１に記憶された物理メモリファイルに対応するファイルである。物理メモリファイル１１０１には、ページ管理テーブル記憶部１１１に記憶されたページ管理テーブルに対応するページディスクリプタテーブル１１１１がある。
【０１０７】
ページディスクリプタテーブル１１１１は、後述する仮想計算機内のＬｉｎｕｘ１２１１のページディスクリプタの置かれた配列である。なお、このテーブルは、通常のＬｉｎｕｘのページディスクリプタに対して、メンバを１つ追加することが望ましい。そのメンバは、当該ページがキャッシュページである場合、前述のページがキャッシュするデータをもつファイルのｉノードの値を示すメンバである。通常のＬｉｎｕｘのページディスクリプタでは、前記のファイルのｉノードの値を参照するために、ページディスクリプタからポインタをたどって、複数のオブジェクトを参照しなくてはならない。このポインタをたどる処理のためには、物理メモリファイル１１０１内に保存された他のページテーブル（不図示）などを参照しなくてはならず、処理として複雑である。そのため、ページディスクリプタで、直接、前記のファイルのｉノードの値を参照できるようにすることが望ましい。
【０１０８】
ディスクイメージファイル１１０２は、ファイル記憶部１２に記憶されたディスクイメージファイルに対応するファイルである。
【０１０９】
メモリファイル管理テーブルファイル１１０３は、物理メモリファイル管理テーブル記憶部１７に記憶された物理メモリファイル管理テーブルに対応するファイルであって、少なくとも、ページディスクリプタテーブル１１１１の物理メモリファイル１１０１内でのアドレスを保存している。
【０１１０】
ファイル管理テーブルファイル１１０４は、ファイル管理テーブル記憶部１８に記憶されたファイル管理テーブルに対応するファイルであって、「ｉノード番号」と、「パスを含むファイル名」を対応付ける。
【０１１１】
図１２は、上記第１の実施形態で説明したハイバネーション移行後の動作を実現するためのプログラム構成を示す。
【０１１２】
図１２を参照すると、仮想計算機をはじめとするユーザプログラム１２０２〜１２０６と、これらのユーザプログラムを動作させるＯＳであるＬｉｎｕｘ１２０１が示されている。ユーザプログラムは、ＵＭＬ１２０２と、メモリファイル圧縮／伸張プログラム１２０３と、属性検査プログラム１２０４と、メモリファイル書換プログラム１２０５と、ファイル書込プログラム１２０６である。
【０１１３】
ＵＭＬ１２０２は、仮想計算機１５として利用されているＵｓｅｒ  Ｍｏｄｅ  Ｌｉｎｕｘ（以下、ＵＭＬ）である。ＵＭＬ１２０２は、ＯＳとしてのＬｉｎｕｘ１２１１と、ＵＭＬ１２０２内部で動作するユーザプログラムであるプログラム１２１２から構成される。ＵＭＬ１２０２は、ハイバネーション機能を追加されたＵＭＬであって、ハイバネーションの主な流れは、ＵＭＬ内で動作するプログラム１２１２を停止し、プログラムの情報を保存、カーネルを停止し、最後にメインメモリのデータを保存する。このような動作をするＵＭＬとしては、Ｓｃｒａｐｂｏｏｋ  ＵＭＬが提案されている。また、Ｌｉｎｕｘ１２１１は、２．４系のＬｉｎｕｘとする。
【０１１４】
第１の実施形態のＯＳ１５１に含まれるメモリ管理部１５２、ファイル管理部１５３として、Ｌｉｎｕｘ１２１１のメモリ管理機構、ファイル管理機構を利用する。ただし、属性検査部１６１やファイル書込部１６３が、所望のメモリ管理情報やファイル管理情報が得られるように改造する。
【０１１５】
例えば、前述のメモリ管理機構の場合、メモリマップの初期の過程で、ページディスクリプタの置かれた配列の開始部分の仮想的な物理アドレスと前記配列のサイズを、後述するメモリファイル管理テーブルファイル１１０３に書き込むように改造すればよい。
【０１１６】
同様に例えば、前述のファイル管理機構の場合、ファイルオープンの過程で、「パスを含めたファイル名」からファイルを検索、「ｉノード番号」を特定し、その結果をファイル管理テーブルファイル１１０４に書き込むように改造すればよい。
【０１１７】
また必要に応じて、例えば、前述のメモリ管理機構やファイル管理機構から所望のメモリ管理情報やファイル管理情報をプロセス間通信で、Ｌｉｎｕｘ１２０１上で動作するプログラム（不図示）に送り、このプログラムが、メモリファイル管理テーブルファイル１１０３やファイル管理テーブルファイル１１０４に書き込むように実装してもよい。
【０１１８】
メモリファイル圧縮／伸張プログラム１２０３は、メモリファイル圧縮部１３とメモリファイル伸張部１４に対応する。メモリファイル圧縮／伸張プログラム１２０３は、Ｌｉｎｕｘに搭載されている一般的な圧縮／伸張プログラムであるｇｚｉｐであってもよい。
【０１１９】
属性検査プログラム１２０４は、属性検査部１６１に対応する、Ｌｉｎｕｘ１２０１上で動作するプログラムである。属性検査プログラム１２０４は、ＵＭＬ１２０２がハイバネーション状態に移行した後に、物理メモリファイル１１０１をメモリ１０１２にｍｍａｐなどの関数でメモリ１０１２にマッピングする。このとき、ＵＭＬ１２０２がマッピングしたときと同じアドレスでマップすることで、ＵＭＬ１２０２の仮想的な物理アドレスを、そのまま使用できる。
【０１２０】
上記属性検査プログラム１２０４は、メモリファイル管理テーブルファイル１１０３の内容を基にして、ページディスクリプタテーブル１１１１を参照する。さらに、メモリページごとにページディスクリプタのメンバを参照し、参照カウンタであるメンバ「ｃｏｕｎｔ」が０であれば、当該ページは空きページであるため、メモリファイル書換プログラム１２０５に、当該ページの書き換えを依頼する。「ｃｏｕｎｔ」が０より大であり、メンバ「ｍａｐｐｉｎｇ」がＮＵＬＬでない場合、当該ページは、キャッシュページである。当該ページがキャッシュページであり、メンバ「ｆｌａｇｓ」のフラグがダーティでないことを示している場合、当該ページのデータと同じデータがディスクイメージファイル１１０２にも存在するため、メモリファイル書換プログラム１２０５に、当該ページの書き換えを依頼する。逆に、当該ページがキャッシュページであり、メンバ「ｆｌａｇｓ」のフラグがダーティであることを示している場合、当該ページのデータをディスクイメージファイル１１０２に書き戻す必要があるため、ファイル書込みプログラム１２０６に当該ページのデータを書き戻させた後、メモリファイル書換プログラム１２０５に、当該ページの書き換えを依頼する。当該ページの書き換えが完了した後、属性検査プログラム１２０４は、ページディスクリプタのメンバを初期値に設定する。
【０１２１】
メモリファイル書換プログラム１２０５は、物理メモリファイル書換処理部１６２に対応する、Ｌｉｎｕｘ１２０１上で動作するプログラムである。メモリファイル書換プログラム１２０５は、属性検査プログラム１２０４の依頼に応じて、物理メモリファイル１１０１の内容を書き換える。
【０１２２】
ファイル書込プログラム１２０６は、ファイル書込部１６３に対応する、Ｌｉｎｕｘ１２０１上で動作するプログラムである。ファイル書込みプログラム１２０６は、ディスクイメージファイル１１０２を、ループバックマウントすることで、その内容を操作できるようにする。さらに、ディスクイメージファイル１１０２が複数存在する場合、ＵＭＬ１２０２での仮想的な補助記憶装置の構成にあわせて、マウントする。ファイル書込プログラム１２０６は、ディスクイメージファイル１１０２をマウントした後、属性検査プログラム１２０４の依頼に応じて、物理メモリファイル１１０１の指定されたメモリページのデータをディスクイメージファイル１１０２へ書き戻す。ディスクイメージファイル１１０２内の書き戻しの位置は、属性検査プログラム１２０４から伝えられた「ｉノード番号」をもとに、ファイル管理テーブルファイル１１０４を参照し、「ｉノード番号」から「パスを含むファイル名」を取得することで、対象となるファイルを特定し、さらに、属性検査プログラム１２０４から伝えられたメンバ「ｉｎｄｅｘ」の値を基にして、前記のファイル内での位置を特定することで決められる。
【０１２３】
以上の具体例１の動作は、上記した第１の実施形態と同様であり、上記した第１の実施の形態の構成要素に対応する構成要素が同様に動作するので説明を省略する。
【０１２４】
（具体例２）
次に、ＯＳとしてＬｉｎｕｘ（登録商標）を搭載したコンピュータに、本発明の第２の実施形態を適用した具体的構成を具体例２として説明する。
【０１２５】
上記コンピュータの構成は、図１０に示した具体例１と同様であるので説明を省略する。
【０１２６】
図１３は、具体例２のコンピュータで使用されるファイルの構成を表した図である。特に、図１１に比べて、ファイル管理テーブルファイル１１０４が不要となっている。また、図１１に示した例とは、ページディスクリプタテーブルが異なり、ページディスクリプタテーブル１１１２は、後述する仮想計算機内のＬｉｎｕｘ１２１３のページディスクリプタの置かれた配列となっている。またこの第２の具体例では、ＵＭＬ１２０７のハイバネーション完了後の、キャッシュページの書き戻しがないため、ページディスクリプタへの改造をしなくてよい。
【０１２７】
図１４は、上記第２の実施形態で説明したハイバネーション実行中及びハイバネーション以降後の動作を実現するためのプログラム構成を示す。
【０１２８】
図１４のプログラム構成は、図１２に示した具体例１のプログラム構成からファイル書込プログラム１２０６を除いた構成となっている。
【０１２９】
また、図１２に示した具体例１のプログラム構成のＬｉｎｕｘ１２１１に改造を加えたＬｉｎｕｘ１２１３が搭載されており、このため、ＵＭＬについても符号を変えてＵＭＬ１２０７と表記している。
【０１３０】
Ｌｉｎｕｘ１２１３は、Ｌｉｎｕｘ１２１１に、ハイバネーション実行中にダーティなキャッシュページのディスクイメージファイル１１０２への書き戻しを実行するように改造したＬｉｎｕｘである。
【０１３１】
より具体的には、Ｌｉｎｕｘ１２１３は、ハイバネーションを実行開始した後、キャッシュページを同期させるためのシステムコールであるｓｙｎｃと同様の処理を実行する。さらに、Ｌｉｎｕｘ１２１３は、この同期を完了した後、強制的にディスクキャッシュを使用しない書込み処理を実行させる。その処理の方法として、例えば、一般的な書込みメソッドである、ｇｅｎｅｒｉｃ＿ｆｉｌｅ＿ｗｒｉｔｅ関数内で、ファイル書込み時には、強制的にディスクキャッシュを使用しない書込み処理を実行させる方法や、全てのファイル構造体のメンバ「ｆ＿ｆｌａｇｓ」に、ディスクキャッシュを使用しないフラグを設定する方法が考えられる。
【０１３２】
このようにすることで、同期を実行した後では、書込み時にディスクキャッシュは使用されず、ファイルへの書込みは、直接、ファイルに対して行われる。なお、後者の方法の場合、設定前の「ｆ＿ｆｌａｇｓ」の値を保存し、レジューム時などに再設定する必要がある。
【０１３３】
以上の具体例２の動作は、上記した第２の実施形態と同様であり、上記した第２の実施の形態の構成要素に対応する構成要素が同様に動作するので説明を省略する。
【０１３４】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した実施形態や具体例に示した構成やフローチャートは、本計算機システムの仕様や用途に応じて各種の変更を加えることが可能である。
【産業上の利用可能性】
【０１３５】
本発明は、ハイバネーション機能を有し、１台の実計算機に複数の仮想計算機を保存する仮想計算機管理システムといった用途に適用できる。また、仮想計算機を、ネットワークを介して移送する仮想計算機移送システムといった用途にも適用可能である。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１３６】
１  コンピュータ
１１  物理メモリファイル記憶部
１２  ファイル記憶部
１３  メモリファイル圧縮部
１４  メモリファイル伸張部
１５  仮想計算機
１６  仮想計算機監視部
１７  物理メモリファイル管理テーブル記憶部
１８  ファイル管理テーブル記憶部
１１１  ページ管理テーブル記憶部
１５１  ＯＳ
１５２  メモリ管理部
１５３  ファイル管理部
１５４  同期処理部
１６１  属性検査部
１６２  物理メモリファイル書換処理部
１６３  ファイル書込部
１００１  コンピュータ
１０１１  ＣＰＵ
１０１２  メモリ
１０１３  ＨＤＤ
１１０１  物理メモリファイル
１１０２  ディスクイメージファイル
１１０３  メモリファイル管理テーブルファイル
１１０４  ファイル管理テーブルファイル
１１１１  ページディスクリプタテーブル
１２０１  Ｌｉｎｕｘ
１２０２、１２０７  ＵＭＬ
１２０３  メモリファイル圧縮／伸張プログラム
１２０４  属性検査プログラム
１２０５  メモリファイル書換プログラム
１２０６  ファイル書込プログラム
１２１１、１２１３  Ｌｉｎｕｘ
１２１２  プログラム
２００１  実計算機
２１００  仮想計算機
２１０１  ＯＳ
２１０２  メモリ消費部
２２００  メモリファイル
２３００  メモリファイル圧縮部
３１０１  ＢＩＯＳ
３１０２  ＯＳ
３１０３  高速ハイバネーションソフトウェアドライバ  
【図１】
0005445463.tif 000002
【図２】
0005445463.tif 000003
【図３】
0005445463.tif 000004
【図４】
0005445463.tif 000005
【図５】
0005445463.tif 000006
【図６】
0005445463.tif 000007
【図７】
0005445463.tif 000008
【図８】
0005445463.tif 000009
【図９】
0005445463.tif 000010
【図１０】
0005445463.tif 000011
【図１１】
0005445463.tif 000012
【図１２】
0005445463.tif 000013
【図１３】
0005445463.tif 000014
【図１４】
0005445463.tif 000015
【図１５】
0005445463.tif 000016
【図１６】
0005445463.tif 000017