(57)【要約】【課題】装置が障害により停止した場合に、コンテキスト情報の取得処理の時間を短縮することができるシステム管理プログラムを提供する。【解決手段】メモリ管理プログラムは、メモリへの書き込みを検知し、検知された書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する処理をコンピュータに実行させる。【選択図】図３
2015127879.tif 000002
【特許請求の範囲】
【請求項１】
メモリへの書き込みを検知し、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する
処理をコンピュータに実行させるメモリ管理プログラム。
【請求項２】
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、請求項１に記載のメモリ管理プログラム。
【請求項３】
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、請求項１又は２に記載のメモリ管理プログラム。
【請求項４】
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、請求項１乃至３のいずれか一項に記載のメモリ管理プログラム。
【請求項５】
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、請求項１乃至４のいずれか一項に記載のメモリ管理プログラム。
【請求項６】
メモリへの書き込みを検知する処理と、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する処理と
をコンピュータが実行するメモリ管理方法。
【請求項７】
メモリへの書き込みを検知する検知部と、
前記検知部により検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する保存部と
を備えたメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置に関する。
【背景技術】
【０００２】
従来、仮想マシンモニタが、ゲストＯＳに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に設定し、ページ書き込み違反の例外に応答して、ページ書き込み違反が発生したページの更新前データを仮想マシンモニタが管理するメモリ領域に保存する情報処理装置がある。
【０００３】
仮想マシンモニタは、更新前データを保存した後に、ページ書き込み違反が発生したページの書き込み禁止を解除することによってゲストＯＳによるページ書き込み違反が発生したページへの書き込みを継続させる。チェックポイントが取得されるたびに、仮想マシンモニタは、ゲストＯＳに割り当てるメモリ領域に対応するページテーブルの全ページを書き込み禁止状態に再設定する（例えば、特許文献１参照）。
【０００４】
また、プログラムが実行時に使用するメモリ情報を時間的経過に従って収集および保存し、後に任意の時点の全メモリ情報を復元する方法がある（例えば、特許文献２または３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２４５２１６号公報
【特許文献２】特開昭６２−０００５０９号公報
【特許文献３】特開２００９−１４６３８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の情報処理装置では、ＣＰＵ（Central Processing Unit）コンテキスト情報を取得する場合、コンテキスト情報取得のプロセスがコンテキスト情報を保存し、さらにＣＰＵを通常の動作状態にする必要があったため、コンテキスト情報の取得処理に時間が掛かってしまう。
【０００７】
また、メモリデータとＣＰＵのコンテキスト情報との対応が取れなかったために、障害によりコンピュータシステムが停止した場合に、コンテキスト情報によりＣＰＵの動作状況を把握して、障害の原因を過去に遡って調査することはできない。
【０００８】
そこで、一側面では、装置が障害により停止した場合に、コンテキスト情報の取得処理の時間を短縮することができるシステム管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
一つの案では、メモリ管理プログラムは、メモリへの書き込みを検知し、検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する処理をコンピュータに実行させる。
【発明の効果】
【００１０】
一態様によれば、装置が障害により停止した場合に、コンテキスト情報の取得処理の時間を短縮することができる。
【図面の簡単な説明】
【００１１】
【図１】メモリ管理装置のハードウェア構成を示す図
【図２】メモリ管理装置のソフトウェア構成を示す図
【図３】メモリ管理装置の機能の概略を示す図
【図４】ページ管理テーブルを示す図
【図５】メモリ変更テーブルを示す図
【図６】差分メモリ取得方法の設定を示す図
【図７】書き込みトラップとメモリデータの保存を示す図
【図８】差分メモリの確保とメモリデータの保存を示す図
【図９】メモリダンプの復元を示す図
【図１０】差分メモリとコンテキスト情報との対応を示す図
【図１１】ページング発生時のメモリデータの保存を示す図
【図１２】差分メモリの削除方法の設定を示す図
【図１３】差分メモリの削除を示す図
【図１４】メモリ管理動作を示すフローチャート
【図１５】メモリデータ取得の動作を示すフローチャート
【図１６】メモリダンプ復元ポイントの作成動作を示すフローチャート
【図１７】メモリダンプの復元動作を示すフローチャート
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１３】
図１は、本実施の形態におけるメモリ管理装置のハードウェア構成の一例を示す図である。
【００１４】
図１において、メモリ管理装置１は、ＣＰＵ２、メモリ３、ＨＤＤ（Hard Disk Drive）４、入力装置５、出力装置６、およびネットワークＩ／Ｆ（Interface）７を備える。ＣＰＵ（Central Processing Unit）２、メモリ３、ＨＤＤ（Hard Disk Drive）４、入力装置５、出力装置６、およびネットワークＩ／Ｆ（Interface）７は、システムバス８によって相互に接続される。
【００１５】
ＣＰＵ２は、ＨＤＤ４に記憶されたプログラムやデータをメモリ３に読み出して、プログラムによる処理を実行する中央演算処理装置である。ＣＰＵ２は、例えば複数のプロセッサコアを有するマルチコアプロセッサである。マルチコアプロセッサは複数のプロセッサの間でプロセッサ間通信を行うことができる。
【００１６】
メモリ３は、メモリ管理装置１の主記憶装置であり、例えばＲＡＭ（Random Access Memory）によって構成される。メモリ３に記憶されたプログラムはＣＰＵ２によって実行される。メモリ３は、例えばＲＯＭ（Read Only Memory）やフラッシュメモリを含んでいてもよい。
【００１７】
ＨＤＤ４は、メモリ管理装置１の２次記憶である。ＨＤＤ４には、プログラムやデータが格納されて、適宜メモリ３に読み出される。また、メモリ３に確保された主メモリ領域のアドレスが不足した場合、ページング処理にてメモリ３のデータがＨＤＤ４に一時的に退避される。本実施の形態では２次記憶装置としてＨＤＤ４を例示したが、ＨＤＤ４の代わりに、例えばＳＳＤ（Solid State Drive）を用いることもできる。
【００１８】
入力装置５は、メモリ管理装置１の外部から内部にデータの入力を行う機器である。入力装置５は、例えば、キーボード、マウス、タッチパネル等である。出力装置６は、メモリ管理装置１の内部のデータを外部に出力する装置である。出力装置６は、例えば、ディスプレイ、スピーカである。
【００１９】
ネットワークＩ／Ｆ７は、ネットワークを介した外部装置との通信を制御する。ネットワークＩ／Ｆ７は、接続するネットワークのプロトコルに対応したＮＩＣ（Network Interface Controller）を有する。
【００２０】
次に、本実施の形態におけるメモリ管理装置１のソフトウェアの構成を、図２を用いて説明する。図２は、メモリ管理装置のソフトウェア構成の一例を示す図である。図２で説明するソフトウェアは、図１で説明したメモリ３に読み出されて、ＣＰＵ２によって実行される。
【００２１】
図２において、メモリ管理装置１は、ソフトウェアの構成として、ＯＳ（Operating System）層とアプリケーション層と、ＯＳ層の下位に位置し、図示しないハードウェア層からなる階層構造のソフトウェアを備える。ＯＳ層は、カーネル１０とデバイスドライバ１１とを備える。
【００２２】
デバイスドライバ１１は、ハードウェア層のハードウェアを制御するプログラムである。デバイスドライバ１１は、ハードウェアの構成に対応した複数のプログラムモジュールを有し、それぞれのプログラムモジュールはハードウェアの構成に応じてカーネル１０に対して動的に追加してもよい。
【００２３】
アプリケーション層は、ＯＳ層の上で動作する複数のアプリケーションプログラム（以下、「アプリ」と省略する。）を備える。メモリ管理装置１は、アプリの一例として複数のサービス１３と、複数のユーザプロセス１４とを備える。ユーザプロセス１４は、例えば、ＯＳ上で実行され、ユーザに対して定められた目的を果たすための機能を提供するプログラムである。また、サービス１３は、例えば、ユーザプロセス１４に対して、サービス１３を介してＯＳ層またはハードウェア層を利用したサービスを提供するプログラムである。
【００２４】
カーネル１０は、ＯＳ層の中核となる機能を備え、例えば、メモリ管理部１０２、プロセス管理部１０３、ＩＯ（Input Output）管理部１０４、ネットワーク管理部１０５、及びファイルシステム管理部１０６を備える。
【００２５】
メモリ管理部１０２は、物理的メモリであるメモリ３に対して仮想アドレッシングによるメモリマッピングを行い、それぞれのアプリがマッピングしたメモリ領域を安全に利用できるように管理する。プロセス管理部１０３は、それぞれのアプリに対して実行を許可し、ハードウェアへのアクセスのためのインタフェースを提供する。例えば、プロセス管理部１０３は、アプリからのシステムコールに対して、ハードウェアの利用を提供する。また、プロセス管理部１０３は、アプリを実行するのに必要なスタックを提供する。
【００２６】
ＩＯ管理部１０４は、デバイスドライバ１１を介して、メモリ管理装置１に接続される入出力デバイスによる入出力データの管理を行う。ネットワーク管理部１０５は、メモリ管理装置１に接続されるネットワークの管理を行う。ファイルシステム管理部１０６は、ファイルシステムによるデータの取り扱いを管理する。
【００２７】
メモリ管理部１０２は、メモリ管理プログラム１２を備える。メモリ管理プログラム１２は、メモリ管理部１０２の機能に対して、本実施の形態において新たに提供する機能であり、詳細は図３を用いて後述する。なお、本実施の形態において、メモリ管理プログラム１２は、メモリ管理部１０２の機能を拡張することによって実装している。但し、メモリ管理プログラム１２を、例えばサービス１３として、メモリ管理部１０２とは別のプログラムとして実装してもよい。
【００２８】
次に、メモリ管理装置１の機能を、図３を用いて説明する。図３は、メモリ管理装置１の機能の概略の一例を示す図である。
【００２９】
図３において、メモリ管理装置１は、図２で説明したメモリ管理プログラム１２と、ダンプ復元ポイント作成プロセス（以下、「復元プロセス」と省略する。）１３１のプログラムが動作している。メモリ管理プログラム１２は、検知部１２１、確保部１２２、及び保存部１２３を備える。復元プロセス１３１はＯＳ層の上で動作するサービス１３として実装する。但し、復元プロセス１３１を、例えばカーネル１０の機能を拡張して実装してもよい。
【００３０】
メモリ管理装置１は、メモリ管理部１０２によってメモリ３にマッピングされた仮想アドレス空間において、主メモリ領域３１と差分用メモリ領域３２を備える。主メモリ領域３１は、プログラムの実行においてカーネル１０により利用される領域である。
【００３１】
差分用メモリ領域３２は、ページ管理テーブル３３と差分メモリ３４を備える。ページ管理テーブル３３は、後述するページアウト時の差分メモリデータの変更を管理するテーブルである。差分メモリ３４は、コンテキスト、差分メモリデータ、メモリ変更テーブルを有している。差分用メモリ領域３２には複数の差分メモリ３４を備えることができる。図３で例示する差分メモリ３４は、差分メモリ１（３４１）、差分メモリ２（３４２）、差分メモリ３（３４３）が保存された状態を図示している。それぞれ所定の差分メモリ３４ｎには、コンテキスト３４ｎ１、差分メモリデータ３４ｎ２、およびメモリ変更テーブル３４ｎ３が対応付けられて保存される。例えば、差分メモリ１（３４１）には、コンテキスト３４１１、差分メモリデータ３４１２、メモリ変更テーブル３４１３が対応付けられて保存される。
【００３２】
検知部１２１は、主メモリ領域３１を監視して、主メモリ領域３１への書き込みを検知する。検知部１２１は、例えば、メモリ管理部１０２がメモリのデータを変更する書き込み処理をトラップして、主メモリ領域３１への書き込みを検知してもよい。検知部１２１は、書き込み処理をトラップすることにより、主メモリ領域への書き込みをページ単位で検知することができる。また、検知部１２１は、ページング処理を検知してメモリへの書き込みを検知してもよい。
【００３３】
ここで、ページング処理とは、例えばユーザプロセス１４が、物理メモリとしてマップされていない仮想アドレス空間上のページにアクセスしたときに発生するページフォルト処理を行うものである。メモリ管理部１０２は、不要なページをハードディスク等に書き出して物理メモリから消去（ページアウト）し、また、必要なページをハードディスク等から読み出して物理メモリ上に配置（ページイン）する。
【００３４】
確保部１２２は、所定のタイミングで差分用メモリ領域３２に差分メモリ３４の記憶領域を順次確保する。図３では、差分メモリ１（３４１）から差分メモリ３（３４３）の３つの差分メモリが確保されていることを示している。
【００３５】
確保部１２２が差分メモリ３４を確保する所定のタイミングとは、例えば、所定の時間間隔が経過したときである。所定のタイミングとしては他に、メモリの変更量が所定の量に達したとき、ＣＰＵの使用率が所定値以上になったとき、ハードディスク等の記憶装置の単位時間あたりの使用量が所定の回数以上となったとき、あるいは、ネットワークの単位時間あたりの使用量が所定値以上となったとき等であってもよい。
【００３６】
確保部１２２が差分メモリ３４を確保する所定のタイミングは予め設定することができる。所定のタイミングの設定について、図６を用いて説明する。図６は、差分メモリ取得方法の設定の一例を示す図である。
【００３７】
図６において、「設定項目」及び「パラメータ」は、差分メモリ３４の確保のタイミングを表している。ユーザは、設定項目とパラメータを指定できる。設定項目がパラメータで指定された条件となったときに、差分メモリ３４が確保される。例えば、設定項目で「時間」を選択して、そのパラメータが「１０秒ごとに取得」であった場合、１０秒ごとに、差分メモリ３４が順次確保されることになる。
【００３８】
設定項目は複数を選択可能である。設定項目を複数選択したときには、いずれかの設定項目がパラメータで指定された条件となったときに、差分メモリ３４が確保される。また、パラメータは適宜変更ができる。
【００３９】
図６で示す設定項目及びパラメータの指定は、例えばメモリ管理プログラム１２が、出力装置６のディスプレイを通じて、図６で示した設定画面のＵＩ（User Interface）を提供する。また、設定項目を記述したテキスト等にて、設定ファイルとして予め保存しておき、メモリ管理プログラム１２の起動時に設定ファイルを読み込んでもよい。確保部１２２は、設定された条件に従い差分メモリ３４を確保する所定のタイミングを設定又は変更することができる。
【００４０】
保存部１２３は、確保部１２２によって確保された差分メモリ３４の記憶領域に検知部１２１で検知された書き込み先のデータ領域に記憶された差分メモリデータをメモリダンプとして順次保存する。ここで、メモリダンプとは、メモリに記憶されたデータを書き出したものである。保存部１２３が保存する差分メモリデータは、例えば、主メモリ領域３１のページ単位で保存してもよい。また、複数のページを一つの差分メモリデータとして保存してもよい。
【００４１】
復元プロセス１３１は、差分メモリ３４の確保に対応して、ＣＰＵ２のコンテキスト情報をそれぞれの差分メモリ３４に順次保存する。
【００４２】
コンテキスト情報は、ＣＰＵ２が複数のプロセスにて共有されてコンテキストスイッチが発生したときに保存されるＣＰＵ２の使用状況を示す設定情報である。差分メモリ３４に保存された差分メモリデータは、対応するコンテキスト情報と併せて保存することにより、過去の差分メモリデータとそのときのＣＰＵ２の状態と整合性を図ることができる。
【００４３】
ここで、整合性を図るとは、クラッシュ発生時より過去の時点でのメモリのデータと、そのときのＣＰＵ２の状態とが時系列的に対応が取れていることをいう。
【００４４】
主メモリ領域３１のメモリデータと差分用メモリ領域３２のメモリデータは、ＣＰＵがエラーによる停止をしたときに完全メモリダンプ及び差分メモリダンプとして保存される。保存された完全メモリダンプと差分メモリダンプは、エラーの解析のために、例えばＣＰＵの再起動時に読み出すことができる。読み出された完全メモリダンプと差分メモリダンプによって、ＣＰＵ２がエラーで停止する前の過去のメモリダンプを復元することができる。メモリダンプ復元の詳細は後述する。
【００４５】
次に、ページ管理テーブル３３の詳細を、図４を用いて説明する。ページ管理テーブル３３は、ページアウト時の差分メモリデータの変更を管理するテーブルである。図４は、ページ管理テーブルの一例を示す図である。
【００４６】
図４において、ページ管理テーブル３３は、差分用メモリ領域番号、保存先のアドレス、ページアウト領域使用場所情報（１〜ｎ）の各フィールドを有する。差分用メモリ領域番号は、ページアウトした主メモリ領域の情報が、何番目の差分メモリに保存されているのかを示す情報である。差分用メモリ領域番号は、１からｎまでの整数が入力される。
【００４７】
保存先のアドレスは、主メモリ領域３１に書き込みがされて変更があった場合に保存する、変更前の主メモリ領域３１の情報を保存した差分用メモリ領域３４ｎの開始アドレスである。なお、主メモリ領域３１が変更されていない場合は（0xffffffff）が入力されている。ページ管理テーブル３３を設けることによって、増減する差分メモリ３４を一元的に管理することが可能となる。
【００４８】
ページアウト領域使用場所情報（１〜ｎ）は、ページアウトした主メモリ領域３１の情報と過去の差分用メモリ領域の情報が一致した際に追加する情報である。ページアウト領域使用場所情報は、差分メモリ３４と主メモリ領域３１のアドレスとを対応させて保存する。ページアウト領域使用場所情報は、一つの差分メモリ３４に対して、複数の差分メモリデータを保存することができる。例えば、図４では、差分用メモリ領域番号が１の領域ではｍ個の差分メモリデータが保存されている。一方、差分用メモリ領域番号が２の領域では、一つの差分メモリデータ、差分用メモリ領域番号が３の領域では、二つの差分メモリデータが保存されていることを表している。
【００４９】
次に、それぞれの差分用メモリ領域３４ｎが有するメモリ変更テーブル３４ｎ３の詳細を、図５を用いて説明する。図５は、メモリ変更テーブルの一例を示す図である。
【００５０】
図５において、それぞれのメモリ変更テーブルは、メモリ領域のアドレス、変更フラグ、および保存先のアドレスの各フィールドを有する。メモリ領域のアドレスは、主メモリ領域３１をページ単位で分割したときの先頭アドレスを示す。変更フラグは、主メモリ領域３１に対する変更の有無を示す。変更フラグの"１"は、変更があったことを示す。また、変更フラグの"０"は、変更が無かったことを示す。保存先のアドレスは、差分用メモリ領域３４ｎのそれぞれの先頭アドレスである。この保存先のアドレスは、図４で説明した保存先のアドレスと同じであり、増減する差分メモリのそれぞれにおいてもメモリ領域のアドレスと対応付けて記録しておく。
【００５１】
次に、図３で説明したメモリ管理プログラム１２による、主メモリ領域３１のメモリデータの差分用メモリ領域３２への保存について、図７を用いて説明する。図７は、書き込みトラップとメモリデータの保存の一例を示す図である。
【００５２】
図７において、（１）〜（５）は時間経過の順番を示す。（１）において、先ずは、全ての主メモリ領域３１を書き込み禁止にする。（１）で図示する主メモリ領域３１の網点は、主メモリ領域３１が書き込み禁止の状態であることを示している。主メモリ領域３１を書き込み禁止にすることにより、検知部１２１は主メモリ領域３１に対する全ての書き込み処理をトラップする。（２）において、検知部１２１が主メモリ領域に対する書き込みをともなう処理をトラップして割込処理を発生させる。
【００５３】
（３）において、確保部１２２は、所定の記憶領域として差分用メモリ領域３２に差分メモリ３４を確保して、書き込み処理の対象となる主メモリ領域３１のメモリデータ（データｎ）をページ単位で差分メモリ３４にデータｍとして保存する。なお、保存される主メモリ領域３１のデータｎと、差分メモリ３４に保存されるデータｍは、全く同一のデータであってもよいし、後述する完全メモリダンプの復元において、データｍからデータｎを復元できるのであれば、例えばデータｍはデータｎを圧縮したものであってもよい。
【００５４】
（４）において、保存されたデータｎのメモリ領域は書き込み禁止が解除されて割込処理が終了する。（５）において、トラップされた書き込み処理が実行されて、書き込み禁止が解除された主メモリ領域３１にデータｎ'が書き込まれる。
【００５５】
なお、主メモリ領域３１への書き込み禁止と解除は、例えばメモリ管理プログラム１２がメモリ管理部１０２に対して行ってもよい。
【００５６】
次に、図６で説明した差分メモリ取得方法において、設定項目が「時間」である場合の差分メモリ３４の確保とメモリデータの保存の詳細を、図８を用いて説明する。図８は、差分メモリ３４の確保とメモリデータの保存の一例を示す図である。
【００５７】
図８（１）において、（１）から（３）は、時刻ｔ１からｔ３におけるダンプ復元ポイント１から３の主メモリ領域３１のメモリの状態を示している。時刻ｔ１におおいて、メモリの状態は、それぞれのデータ領域におけるメモリデータが「Ａ、Ｂ、Ｃ、Ｄ、Ｅ」である。
【００５８】
時刻ｔ２において、主メモリ領域３１に対する書き込み処理により書き込み先のデータ領域のメモリデータ「Ｂ、Ｅ」が「Ｚ、Ｅ'」に書き換えられる。このとき、所定の記憶領域として差分メモリ１には、書き込み先のデータ領域の書き込み処理の前のメモリデータ「Ｂ、Ｅ」が差分メモリデータ（３４１２−１、３４１２−２）に保存される。差分メモリ１（３４１）には、図７で説明した差分メモリ１（３４１）の先頭アドレス等が保存される。
【００５９】
次に、時刻ｔ３において、書き込み先のデータ領域の書き込み処理の前のメモリデータ「Ｚ、Ｃ」が、差分メモリ１（３４２）から変更された差分メモリ２（３４２）の差分メモリデータ（３４２２−１、３４２２−２）として保存されて、主メモリ領域３１が「Ｇ、Ｆ」に書き換えられる。時刻ｔ４において、書き込み先のデータ領域の書き込み処理の前のメモリデータ「Ｇ、Ｄ」が、差分メモリ２（３４２）から変更された差分メモリ３（３４３）の差分メモリデータ（３４３２−１、３４３２−２）に保存されて、主メモリ領域３１が「Ｈ、Ｄ'」に書き換えられる。
【００６０】
時刻ｔ４の状態にて、例えばＯＳがクラッシュして、ＣＰＵが停止したとすると、時刻ｔ４における完全メモリダンプと、差分用メモリ領域３２に保存された差分メモリ１（３４２）〜差分メモリ３（３４３）までの情報が保存される。また、それぞれの差分メモリには、メモリ変更テーブル（３４１３、３４２３、３４３３）が保存されている。
【００６１】
次に、ＯＳがクラッシュした原因を解析する際の、各復元ポイントにおけるメモリダンプ復元の詳細を、図９を用いて説明する。図９は、メモリダンプの復元の一例を示す図である。
【００６２】
図９において、（１）は、図８で説明したＯＳクラッシュ時に保存された完全メモリダンプと差分用メモリ領域３２を示す。
【００６３】
（２）において、先ず、完全メモリダンプを、ＯＳの再起動等により読み出して、仮ダンプファイルを作成する。仮ダンプファイルの作成及び復元は、例えばダンプファイル解析用の別のコンピュータで行ってもよい。
【００６４】
（３）において、クラッシュ前に最後に保存された差分メモリ３（３４３）の差分メモリデータ（３４３２−１、３４３２−２）のメモリデータ「Ｇ、Ｄ」が、メモリ変更テーブル３４３３に保存された主記憶領域３１のアドレスに従い、基のアドレスに書き込まれて、復元ポイント３における完全メモリダンプが復元される。
【００６５】
（４）において、差分メモリ２（３４２）の差分メモリデータ（３４２２−１、３４２２−２）のメモリデータ「Ｚ、Ｃ」が、メモリ変更テーブル３４２３に保存された主記憶領域３１のアドレスに従い、基のアドレスに書き込まれて、復元ポイント２における完全メモリダンプが復元される。
【００６６】
図９では、復元ポイント２までの完全メモリダンプの復元を図示したが、同様の方法によって、順次保存された差分メモリのデータに基づいて過去の完全メモリダンプを復元することができる。したがって、ＯＳのクラッシュがクラッシュ直前ではない過去の原因によるものである場合には、それぞれの復元ポイントにおけるメモリダンプを時系列的に遡って復元することによりクラッシュの原因解析を容易にすることができる。
【００６７】
次に、図３で説明した復元プロセス１３１による主メモリ領域３１のメモリデータとコンテキスト情報との整合について、図１０を用いて説明する。図１０は、差分メモリとコンテキスト情報との対応の一例を示す図である。
【００６８】
図１０において、本実施の形態におけるメモリ管理装置１は、ＣＰＵ０（２０）〜ＣＰＵ３（２３）の４つのＣＰＵを備えるマルチプロセッサの場合を例示している。復元プロセス１３１は、ＣＰＵ０によって実行されるものとする。
【００６９】
（１）において、復元プロセス１３１が起動されると、主メモリ領域３１のダンプ用コンテキスト保存領域（図示網点の領域）のメモリデータがコンテキストスイッチにより保存されていない場合、明示的にコンテキスト保存領域に変更を加える。変更を加えることで、図３で説明した検知部１２１は、主メモリ領域３１への書き込みを検知して、所定の記憶領域としての差分メモリ領域（ｉ−１）のコンテキスト保存領域３４（ｉ−１）１にメモリデータを保存する。（１）に示す処理によって、コンテキスト情報と対応付けて保存する書き込み先のデータ領域のメモリのデータが保存可能となる。また、コンテキスト情報の保存は、図７又は図８で説明したメモリ管理プログラム１２によって行うことができるので、復元プロセス１３１がコンテキスト情報を保存する場合に比べてシステム停止時間を短縮することができる。
【００７０】
（２）において、復元プロセス１３１は、ＣＰＵ１（２１）〜ＣＰＵ３（２３）を待ち合わせ処理（ループ処理）にして停止するとともに、ＣＰＵ１（２１）〜ＣＰＵ３（２３）のコンテキスト情報をダンプ用コンテキスト保存領域に退避させる。
【００７１】
（３）において、復元プロセス１３１は、ＣＰＵ０のコンテキスト情報をダンプ用コンテキスト保存領域に退避させる。
【００７２】
（４）において、復元プロセス１３１は、全ての主メモリ領域３１を書き込み禁止にして、主メモリ領域３１への書き込み処理をトラップする。主メモリ領域３１への書き込み処理をトラップして、図７および図８で説明したとおり、書き込み先のデータ領域の書き込み前のメモリのデータを差分メモリ領域（ｉ−１）に保存する。保存されたメモリのデータは、（１）および（２）で保存されたコンテキスト情報と同じ所定の記憶領域としての差分メモリ領域（ｉ−１）に対応付けられて保存される。
【００７３】
（５）において、復元プロセス１３１は、差分メモリｉにコンテキスト保存領域３４ｉ１を確保して、コンテキスト保存領域を差分メモリ３４の中のコンテキスト保存領域３４ｎ３に変更する。例えば、ｎ＝ｉの場合は、コンテキスト保存領域は３４ｉ３に変更される。
【００７４】
（６）において、復元プロセス１３１は、停止しているＣＰＵ１（２１）〜ＣＰＵ３（２３）を起動して処理を再開し、自身のプロセスを終了する。
【００７５】
以上の動作によって、マルチプロセッサの場合であっても、同じタイミングの全プロセッサのコンテキスト情報と差分メモリデータと対応付けて、整合させて保存することができる。また、コンテキスト情報を差分用メモリ領域３２に保存することにより、コンテキスト情報の保存は、差分メモリの保存と対応付けられて行われることとなる。したがって、コンテキスト情報を復元プロセス１３１が割込処理にて行う必要がなくなり、割込処理によるシステムの停止時間を短くすることができる。
【００７６】
次に、ページング処理を考慮した差分メモリの保存について、図１１を用いて説明する。図１１は、ページング発生時のメモリデータの保存の一例を示す図である。
【００７７】
図１１において、図３で説明した検知部１２１が、ページアウトによって主メモリ領域３１のメモリデータＣが保存されていたメモリ領域が変更されることを検知すると、ページ管理テーブル３３に保存された情報から、これからページアウトされるメモリデータＣと差分メモリに過去に保存されたメモリデータと比較する。（図１１では、メモリデータＣが既に保存されている場合を図示している。）
一致する情報が格納されておらず、メモリデータＣが検出されなかった場合、差分メモリ２に変更される前の情報Ｃを保存するとともに、ページ管理テーブル３３に差分メモリ３の差分メモリデータの保存先のアドレス（図示「0x####3000」）を新規に登録する。
【００７８】
一方、メモリデータＣと一致するメモリデータが差分メモリ領域（３４４２−２）に既に格納されていることが検出された場合、差分メモリ領域への情報保存は行わず、ページ管理テーブル３３の一致した情報の記録に対して、本来情報が保存されるべきであった場所の情報を追加する。図１１では、ページアウト領域使用場所情報_１に対して、「領域３、0x####3000」が追加されることを図示している。
【００７９】
以上の動作によって、ページングの発生による主メモリ領域３１が書き換わる場合であっても差分用メモリ領域３２による差分メモリの保存ができる。
【００８０】
次に、差分メモリの削除について、図１２及び図１３を用いて説明する。図１２は、差分メモリの削除方法の設定の一例を示す図である。図１３は、差分メモリの削除の一例を示す図である。
【００８１】
差分メモリ３４は、ＯＳがクラッシュして停止等したときのみならず、稼働中においてもメモリデータとコンテキスト情報を順次保存していくため、例えば差分用メモリ領域３２の記憶容量が大きくなる場合がある。そこで、本実施の形態においては、差分メモリ３４を所定の条件にて削除して、障害調査に関連するデータを残しつつ、差分用メモリ領域３２の記憶容量の肥大化防止を図る。
【００８２】
図１２において、差分メモリ３４の削除の方法は、設定項目とパラメータによって設定される。例えば、現在時刻より一定時間経過して古くなったメモリデータを削除する設定ができる。システムが安定して稼働している場合には、一定時間以上経過して古くなったメモリデータは、トラブルの原因解析に使用される可能性が低くなるため、クラッシュ前の所定の時間のみの記録を残して、差分メモリダンプの容量を小さくすることができる。
【００８３】
また、差分メモリ３４を所定数毎に削除して間引く設定ができる。例えば、システムが安定して稼働している場合と、不安定となっている場合において、保存する差分メモリの時間的な粒度を変更することができる。
【００８４】
さらに、ＣＰＵのコンテキスト情報に特定の命令、または特定のアドレスが含まれる場合に差分メモリ３４を残して他を削除する設定をすることができる。トラブルの原因となる可能性の高い命令やデータの取り扱いに対して、監視を強化することができる。
【００８５】
なお、図１２で説明した差分メモリ３４の削除の設定は、複数の設定項目を同時に設定することができる。設定はメモリ管理プログラム１２が提供するＵＩによって設定をするようにしてもよい。また、テキストファイル
図１３において、削除前は差分メモリ１〜５までが存在しているものとする。この中で差分メモリ２（３４２）及び差分メモリ４（３４４）を削除する。削除対象である差分メモリ２（３４２）に含まれるメモリデータ「Ｚ、Ｃ」を、差分メモリ２（３４２）の直前に保存された差分メモリ１（３４１）に保存する。
【００８６】
なお、削除対象の差分メモリがページアウトにより保存されたメモリ領域である場合には、ページ管理テーブル３３に記録された差分メモリの差分メモリデータの保存先のアドレスの記載も変更する。
【００８７】
次に、削除対象である差分メモリ４（３４４）に含まれるメモリデータ「Ｕ」を、差分メモリ４（３４４）の直前に保存された差分メモリ３（３４３）に保存する。一方、差分メモリ４（３４４）に含まれるメモリデータ「Ｄ'」は、差分メモリ３に同一領域のメモリデータ「Ｄ」が存在しているため、復元時に使用されることがない「Ｄ'」は保存しない。
【００８８】
次に、差分メモリ２（３４２）と差分メモリ４（３４４）を削除して削除の処理を終了する。
【００８９】
次に、以上説明したメモリ管理装置１の動作を、フローチャートにて説明する。
【００９０】
先ず、メモリ管理プログラム１２の動作を、図１４を用いて説明する。図１４は、メモリ管理動作の一例を示すフローチャートである。
【００９１】
図１４において、メモリ管理プログラム１２の検知部１２１は、メモリ差分監視の機構として主メモリ領域３１の監視を開始する（Ｓ１１）。なお、ステップＳ１１の動作の詳細は、図１５を用いて後述する。
【００９２】
次に、メモリ管理プログラム１２は復元ポイントの取得の要求を受けたか否かを判断する（Ｓ１２）。復元ポイントの取得の要求を受けた場合（Ｓ１２でＹＥＳ）、ダンプ復元ポイントの作成を行う（Ｓ１３）。復元ポイントの取得の要求がない場合（Ｓ１２でＮＯ）、ステップＳ１２をループする。なお、ステップＳ１３のダンプ復元ポイントの作成の詳細は、図１６を用いて後述する。
【００９３】
メモリ管理プログラム１２は、メモリ管理装置１が稼働中は常駐するプログラムであり、Ｓ１２〜Ｓ１３をループして動作する。
【００９４】
次に、図１１で説明したページアウトによるメモリデータの取得動作の詳細を、図１５を用いて説明する。図１５は、メモリデータ取得の動作の一例を示すフローチャートである。
【００９５】
図１５において、主メモリ領域３１が書き込み禁止状態か否かを判断する（Ｓ２１）。書き込み禁止状態において、検知部１２１は、主メモリ領域３１の書き込み処理をトラップする。書き込み禁止で無い場合（Ｓ２１でＮＯ）、主メモリ領域３１のメモリ変更が実行され（Ｓ２８）、メモリ変更テーブル３４ｎ３が更新されて（Ｓ２９）、処理を終了する。
【００９６】
一方、書き込み禁止であった場合（Ｓ２１でＹＥＳ）、ページアウトの発生か否かを判断する（Ｓ２２）。ページアウトの発生であった場合（Ｓ２２でＹＥＳ）、変更前の主メモリ領域３１におけるメモリデータが登録済みか否かを判断する（Ｓ２３）。登録済みであった場合（Ｓ２３でＹＥＳ）、図１１で説明したページ管理テーブル３３のページアウト領域使用場所情報を更新する。
【００９７】
一方、登録済みで無かった場合（Ｓ２３でＮＯ）、ページ管理テーブル３３の保存先のアドレスの情報に新たに差分メモリ領域を追加する更新を行い（Ｓ２５）、書き込み先のデータ領域のデータを追加した差分メモリ領域に保存して退避させる（Ｓ２６）。また、ページアウトで無い場合（Ｓ２２でＮＯ）、同様に書き込み先のデータ領域のデータを差分メモリ領域に保存する（Ｓ２６）。
【００９８】
次に、ページ書き込みの禁止を解除して（Ｓ２７）、メモリ変更を実行する（Ｓ２８）。
【００９９】
以上の動作により、主メモリ領域３１に対する書き込みは、差分メモリとして保存される。
【０１００】
次に、図１０で説明したメモリダンプ復元ポイントの作成動作の詳細を、図１６を用いて説明する。図１６は、メモリダンプ復元ポイントの作成動作の一例を示すフローチャートである。
【０１０１】
図１６において、主メモリ領域３１のコンテキスト情報が待避済みか否かを判断する（Ｓ３１）。コンテキスト情報が待避済みの場合（Ｓ３１でＹＥＳ）、他のＣＰＵを停止する（Ｓ３３）。一方、コンテキスト情報が待避済みで無い場合（Ｓ３１でＮＯ）、コンテキスト情報を差分メモリのコンテキスト情報保存領域に保存して（Ｓ３２）、他のＣＰＵを停止する（Ｓ３３）。停止したＣＰＵのコンテキスト情報を主メモリ領域３１に保存して（Ｓ３４）、次に、復元プロセス１３１が動作するＣＰＵ０のコンテキスト情報を主メモリ領域３１に保存する（Ｓ３５）。
【０１０２】
主メモリ領域３１を書き込み禁止にして（Ｓ３６）、差分用メモリ領域３２に新しい差分メモリ領域を用意し（Ｓ３７）、さらに停止したＣＰＵの動作を再開して（Ｓ３８）、メモリダンプ復元ポイントの作成動作を終了する。
【０１０３】
次に、図９で説明したメモリダンプの復元動作の詳細を、図１７を用いて説明する。図１７は、メモリダンプの復元動作の一例を示すフローチャートである。
【０１０４】
図１７において、仮ダンプファイルとして、完全メモリダンプをコピーする（Ｓ４１）。
【０１０５】
次に、ステップＳ４２からＳ４５までの繰り返し動作を、目的の復元ポイントのメモリダンプになるまで行う。先ず、各復元ポイントに対する差分メモリのメモリ変更テーブルの情報を基に、差分メモリのメモリデータで仮ダンプファイルを書き換えて、各復元ポイントにおけるメモリダンプを復元する（Ｓ４３）。
一方、差分メモリに対応する情報が無い場合には、ページ管理テーブル３３に保存されたページアウト領域使用場所情報の情報を基に、メモリデータを読み出して仮ダンプファイルを書き換えてメモリダンプを復元する（Ｓ４４）。
目的の復元ポイントにおけるメモリダンプまで復元してメモリダンプの復元動作を終了する。
以上説明した本実施の形態の動作によって、ＣＰＵがＯＳクラッシュ等により停止する前であっても、差分メモリデータとそれに対応してコンテキスト情報とを整合性をたもったまま保存するので、エラーで停止したときの完全メモリダンプに加えて、エラーで停止前の過去のＣＰＵ２の状態とメモリダンプを復元することができる。これにより、トラブルの原因を解析しやすくなる。
【０１０６】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０７】
以上の説明に関し、更に以下の項を開示する。
（付記１）
メモリへの書き込みを検知し、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する
処理をコンピュータに実行させるメモリ管理プログラム。
（付記２）
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記１に記載のメモリ管理プログラム。
（付記３）
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記１又は２に記載のメモリ管理プログラム。
（付記４）
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記１乃至３のいずれか一に記載のメモリ管理プログラム。
（付記５）
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記１乃至４のいずれか一に記載のメモリ管理プログラム。
（付記６）
メモリへの書き込みを検知する処理と、
検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する処理と
をコンピュータが実行するメモリ管理方法。
（付記７）
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記６に記載のメモリ管理方法。
（付記８）
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記６又は７に記載のメモリ管理方法。
（付記９）
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記６乃至８のいずれか一に記載のメモリ管理方法。
（付記１０）
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記６乃至９のいずれか一に記載のメモリ管理方法。
（付記１１）
メモリへの書き込みを検知する検知部と、
前記検知部により検知された前記書き込みの書き込み先のデータ領域に記憶された書き込み前のデータと、前記メモリへの書き込みを検知したときのプロセッサのコンテキスト情報とを対応付けて所定の記憶領域に保存する保存部と
を備えたメモリ管理装置。
（付記１２）
前記所定の記憶領域は、前記コンテキスト情報を保存するときに変更され、
前記書き込み前のデータは、変更された前記所定の記憶領域に対応付けられて順次保存される、付記１１に記載のメモリ管理装置。
（付記１３）
前記コンテキスト情報は、コンテキストスイッチによる前記コンテキスト情報の保存がされていない場合には前記メモリのコンテキスト退避領域に明示的な変更を加えることにより前記メモリへの書き込みが検知されて保存される、付記１１又は１２に記載のメモリ管理装置。
（付記１４）
前記所定の記憶領域の変更は、予め設定可能な所定のタイミングで行われる、付記１１乃至１３のいずれか一に記載のメモリ管理装置。
（付記１５）
保存される前記コンテキスト情報は、複数のプロセッサのコンテキスト情報である、付記１１乃至１４のいずれか一に記載のメモリ管理装置。
【符号の説明】
【０１０８】
１  メモリ管理装置
２  ＣＰＵ
３  メモリ
４  ＨＤＤ
５  入力装置
６  出力装置
７  ネットワークＩ／Ｆ
８  システムバス
１０  カーネル
１０２  メモリ管理部
１０３  プロセス管理部
１０４  ＩＯ管理部
１０５  ネットワーク
１０６  ファイルシステム
１１  デバイスドライバ
１２  メモリ管理プログラム
１２１  検知部
１２２  確保部
１２３  保存部
１３  サービス
１３１  ダンプ復元ポイント作成プロセス
１４  ユーザプロセス
３１  主メモリ領域
３２  差分用メモリ領域
３３  メモリ管理テーブル
３４１、３４２、３４３  差分メモリ
３４１１、３４２１、３４３１  コンテキスト保存領域
３４１２、３４２２、３４３２  差分メモリデータ保存領域
３４１３、３４２３、３４３３  メモリ変更テーブル
【図１】
2015127879.tif 000003
【図２】
2015127879.tif 000004
【図３】
2015127879.tif 000005
【図４】
2015127879.tif 000006
【図５】
2015127879.tif 000007
【図６】
2015127879.tif 000008
【図７】
2015127879.tif 000009
【図８】
2015127879.tif 000010
【図９】
2015127879.tif 000011
【図１０】
2015127879.tif 000012
【図１１】
2015127879.tif 000013
【図１２】
2015127879.tif 000014
【図１３】
2015127879.tif 000015
【図１４】
2015127879.tif 000016
【図１５】
2015127879.tif 000017
【図１６】
2015127879.tif 000018
【図１７】
2015127879.tif 000019