(57)【要約】  プロセッサコア２のメモリダンプ実施部３５が共有メモリであるメモリ装置５のデータをＨＤＤ装置７に保存しているときに異常が発生した場合に、メモリダンプ異常検出部３７がメモリダンプ異常を検出し、コア連携部３６がプロセッサコア１のコア連携部３０にメモリダンプ異常を通知し、プロセッサコア１のメモリダンプ実施部２９がコア連携部３０からメモリダンプ実施部３５のメモリダンプ異常を通知され、メモリダンプ実施部３５に代わってメモリ装置５のデータをＨＤＤ装置７に保存する。
2012004854.tif 000002
【特許請求の範囲】
【請求項１】
メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置であって、
前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出部と、
前記障害検出部により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施部とを有することを特徴とするプロセッサ装置。
【請求項２】
前記障害検出部は、
前記他のプロセッサ装置からメモリダンプが正常に行われていない旨の通知を受信し、前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出することを特徴とする請求項１に記載のプロセッサ装置。
【請求項３】
前記プロセッサ装置は、更に、
前記他のプロセッサ装置が正常に動作している間は前記他のプロセッサ装置により所定の周期で更新されるカウンタ値を監視し、前記カウンタ値の更新が停止した場合に、前記他のプロセッサ装置が正常に動作していないと判断し、前記メモリダンプ実施部に前記メモリ装置のメモリダンプを行うよう指示する監視部を有し、
前記メモリダンプ実施部は、
前記監視部からの指示に基づき、前記メモリ装置のメモリダンプを行うことを特徴とする請求項１又は２に記載のプロセッサ装置。
【請求項４】
前記プロセッサ装置は、更に、
前記メモリダンプ実施部によるメモリダンプが正常に完了した場合に、前記他のプロセッサ装置に前記メモリダンプ実施部によるメモリダンプが正常に完了したことを通知するメモリダンプ完了通知部を有することを特徴とする請求項１〜３のいずれかに記載のプロセッサ装置。
【請求項５】
前記プロセッサ装置は、
論理アドレスを前記メモリ装置の物理アドレスに変換するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記ＭＭＵを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能な他のプロセッサ装置に接続されていることを特徴とする請求項１〜４のいずれかに記載のプロセッサ装置。
【請求項６】
前記プロセッサ装置は、
論理アドレスを前記メモリ装置の物理アドレスに変換するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）に接続され、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスが割り当てられ、
前記メモリダンプ実施部は、
前記ＭＭＵを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項１〜５のいずれかに記載のプロセッサ装置。
【請求項７】
前記プロセッサ装置は、
論理アドレスを前記メモリ装置の物理アドレスに変換するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記ＭＭＵを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能であり、
前記プロセッサ装置は、更に、
メモリダンプ時に、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスを設定し、前記メモリダンプ実施部が前記メモリ装置内の全ての物理アドレスをアクセス可能な状態にするアクセス制御部を有し、
前記メモリダンプ実施部は、
前記ＭＭＵを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項１〜６のいずれかに記載のプロセッサ装置。
【請求項８】
前記プロセッサ装置は、
それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う２以上の他のプロセッサ装置に接続されており、
前記プロセッサ装置は、更に、
前記メモリダンプ実施部によるメモリダンプの実施状況を監視し、前記メモリダンプ実施部においてメモリダンプが正常に行われていないことを検出した場合に、前記障害検出部によりメモリダンプが正常に行われていないことが検出されたプロセッサ装置以外の他のプロセッサ装置に、前記メモリダンプ実施部の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求部を有することを特徴とする請求項１〜７のいずれかに記載のプロセッサ装置。
【請求項９】
前記プロセッサ装置は、
それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う２以上の他のプロセッサ装置に接続されており、
前記プロセッサ装置は、更に、
少なくともいずれかの他のプロセッサ装置により更新状況が監視されるカウンタ値を、前記メモリダンプ実施部によりメモリダンプが正常に行われている間は所定の周期で更新するカウンタ値更新部を有することを特徴とする請求項１〜８のいずれかに記載のプロセッサ装置。
【請求項１０】
他のプロセッサ装置と接続され、前記他のプロセッサ装置とメモリ装置を共有しているプロセッサ装置であって、
所定の場合に、前記メモリ装置のメモリダンプを行うメモリダンプ実施部と、
前記メモリダンプ実施部によるメモリダンプの実施状況を監視し、前記メモリダンプ実施部においてメモリダンプが正常に行われていないことを検出した場合に、前記他のプロセッサ装置に、前記メモリダンプ実施部の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求部とを有することを特徴とするプロセッサ装置。
【請求項１１】
前記プロセッサ装置は、更に、
前記他のプロセッサ装置により更新状況が監視されるカウンタ値を、所定の周期で更新するカウンタ値更新部を有することを特徴とする請求項１０に記載のプロセッサ装置。
【請求項１２】
前記プロセッサ装置は、更に、
前記メモリダンプ要求部が前記他のプロセッサ装置にメモリダンプを実施するよう要求した後に、前記他のプロセッサ装置においてメモリダンプが正常に行われている間は前記他のプロセッサ装置により所定の周期で更新されるカウンタ値を監視し、前記カウンタ値の更新が停止した場合に、前記他のプロセッサ装置においてメモリダンプが正常に行われていないと判断する監視部を有することを特徴とする請求項１０又は１１に記載のプロセッサ装置。
【請求項１３】
前記プロセッサ装置は、
それぞれが前記メモリ装置を共有し、前記メモリ装置のメモリダンプを行う２以上の他のプロセッサ装置に接続されており、
前記メモリダンプ要求部は、
メモリダンプの実施を要求したプロセッサ装置においてメモリダンプが正常に行われていないと前記監視部により判断された場合に、前記監視部によりメモリダンプが正常に行われていないと判断されたプロセッサ装置以外の他のプロセッサ装置に前記メモリ装置のメモリダンプを実施するよう要求することを特徴とする請求項１２に記載のプロセッサ装置。
【請求項１４】
前記プロセッサ装置は、
論理アドレスを前記メモリ装置の物理アドレスに変換するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）に接続され、前記メモリ装置内の一部の物理アドレスを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、前記ＭＭＵを用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能であり、
前記プロセッサ装置は、更に、
メモリダンプ時に、前記メモリ装置内の全ての物理アドレスを対象とする論理アドレスを設定し、前記メモリダンプ実施部が前記メモリ装置内の全ての物理アドレスをアクセス可能な状態にするアクセス制御部を有し、
前記メモリダンプ実施部は、
前記ＭＭＵを用いて、前記メモリ装置内の全ての物理アドレスにアクセスしてメモリダンプを行うことを特徴とする請求項１０〜１３のいずれかに記載のプロセッサ装置。
【請求項１５】
メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置に、
前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出処理と、
前記障害検出処理により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施処理とを実行させることを特徴とするプログラム。
【請求項１６】
他のプロセッサ装置と接続され、前記他のプロセッサ装置とメモリ装置を共有しているプロセッサ装置であって、
所定の場合に、前記メモリ装置のメモリダンプを行うメモリダンプ実施処理と、
前記メモリダンプ実施処理によるメモリダンプの実施状況を監視し、前記メモリダンプ実施処理においてメモリダンプが正常に行われていないことを検出した場合に、前記他のプロセッサ装置に、前記メモリダンプ実施処理の代わりに前記メモリ装置のメモリダンプを実施するよう要求するメモリダンプ要求処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ装置がメモリ装置のデータを二次記憶装置に保存するメモリダンプ技術に関する。
【背景技術】
【０００２】
計算機システムにおいて、障害発生時にメモリ装置（以下、単にメモリともいう）の内容を二次記憶装置に保存（これをメモリダンプと呼ぶ）しておき、障害原因の解析に活用する手法が一般的に利用されている。
従来のメモリダンプ方式では、障害が発生したプロセッサ装置（以下、単にプロセッサともいう）自身が二次記憶装置に保存するのが一般的であったが、この場合、障害が発生したプロセッサにて二次記憶装置に保存できない場合、メモリダンプを実施することができなかった。【０００３】
これを解決する方法として、例えば、特許文献１に記載の方法がある。
特許文献１の方法では、障害発生プロセッサが二次記憶装置にアクセスできる場合は、障害発生プロセッサが障害処理プログラムを共有メモリにロードし、共有メモリにロードされた障害処理プログラムを用いて固有メモリの内容を二次記憶装置に保存する。
一方、障害発生プロセッサが二次記憶装置にアクセスできない場合は、まず、健全なプロセッサの中から特定のプロセッサが支援プロセッサとして選定される。
そして、支援プロセッサが障害処理プログラムを共有メモリにロードし、障害発生プロセッサが共有メモリにロードされた障害処理プログラムを用いて固有メモリの内容を共有メモリにコピーする。
次に、支援プロセッサが共有メモリにコピーされた障害発生プロセッサの固有メモリのデータを二次記憶装置に保存する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−３０５６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記従来技術においては、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できるか否かは、プロセッサ装置情報に予め設定された構成情報を元に決めている。
そして、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できる設定になっている場合に、障害発生プロセッサが障害処理プログラムを用いて固有メモリの内容を二次記憶装置に保存している最中に、障害処理プログラムが異常になると、二次記憶装置への保存ができない。
障害処理プログラムが異常になるケースとしては、障害処理プログラムが共有メモリに保持されている場合に、プログラムコードに、別コードから書込みが発生し、コードが不正になってしまう（いわゆるプログラムのバグにより発生する）ケースがある。
更に、障害処理プログラムが異常になるケースとしては、プロセッサが論理アドレス空間を物理アドレス空間に変換するＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を備え、障害処理プログラムコードが論理アドレス空間を用いて動作している場合、障害情報（障害発生プロセッサの固有メモリの内容）が保存されている領域の論理アドレス空間をアクセスするための変換テーブルに別コードから書込みが発生し、論理アドレス空間設定が不正になるようなケースが考えられる。
このようなケースに至った場合、障害発生プロセッサが固有メモリの内容を二次記憶装置に保存できる設定になっていても、二次記憶装置に固有メモリの内容を保存している最中に異常となってしまうため、保存ができない。
また、支援プロセッサが障害発生プロセッサの固有メモリの内容を二次記憶装置に保存するケースでも、障害発生プロセッサが固有メモリの内容を共有メモリに保存する最中に異常となってしまうと、保存ができない。
さらには、支援プロセッサが共有メモリから障害発生プロセッサの固有メモリの内容を二次記憶装置に保存する際でも、保存処理を行うプログラムや共有メモリの論理アドレス空間に対して上記のような現象が発生した場合は、二次記憶装置に保存することができなくなる。【０００６】
この発明は、上記のような課題を解決することを主な目的とし、複数のプロセッサ装置がメモリ装置を共有する構成において、メモリダンプを試行するプロセッサ装置がメモリダンプを正常に行えない状態になっていても、別のプロセッサ装置によりメモリダンプが確実に実施できる機構を得ることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るプロセッサ装置は、
メモリ装置のメモリダンプを行う他のプロセッサ装置と接続され、前記メモリ装置を前記他のプロセッサ装置と共有しているプロセッサ装置であって、
前記他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出する障害検出部と、
前記障害検出部により前記他のプロセッサ装置においてメモリダンプが正常に行われていないことが検出された場合に、前記他のプロセッサ装置に代わって、前記メモリ装置のメモリダンプを行うメモリダンプ実施部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、障害検出部が他のプロセッサ装置においてメモリダンプが正常に行われていないことを検出した場合に、メモリダンプ実施部が他のプロセッサ装置に代わってメモリ装置のメモリダンプを行うため、メモリダンプを試行するプロセッサ装置がメモリダンプを正常に行えない状態になっていても、メモリダンプが確実に実施できる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るハードウェア構成例を示す図。
【図２】実施の形態１に係るソフトウェア構成例を示す図。
【図３】実施の形態１に係る障害発生時の動作例を示す図。
【図４】実施の形態１に係る障害発生時の動作例を示す図。
【図５】実施の形態１に係る障害発生時の動作例を示すフローチャート図。
【図６】実施の形態１に係る障害発生時の動作例を示すフローチャート図。
【図７】実施の形態２に係るハードウェア構成例を示す図。
【図８】実施の形態２に係るソフトウェア構成例を示す図。
【図９】実施の形態２に係る障害発生時の動作例を示す図。
【図１０】実施の形態２に係る障害発生時の動作例を示す図。
【図１１】実施の形態２に係る障害発生時の動作例を示すフローチャート図。
【図１２】実施の形態２に係る障害発生時の動作例を示すフローチャート図。
【図１３】実施の形態３に係るソフトウェア構成例を示す図。
【図１４】実施の形態３に係る障害発生時の動作例を示す図。
【図１５】実施の形態３に係る障害発生時の動作例を示す図。
【図１６】実施の形態３に係る障害発生時の動作例を示すフローチャート図。
【図１７】実施の形態３に係る障害発生時の動作例を示すフローチャート図。
【図１８】実施の形態４に係るソフトウェア構成例を示す図。
【図１９】実施の形態４に係る障害発生時の動作例を示す図。
【図２０】実施の形態４に係る障害発生時の動作例を示す図。
【図２１】実施の形態４に係る障害発生時の動作例を示すフローチャート図。
【図２２】実施の形態４に係る障害発生時の動作例を示すフローチャート図。
【図２３】実施の形態５に係るソフトウェア構成例を示す図。
【図２４】実施の形態５に係る障害発生時の動作例を示す図。
【図２５】実施の形態５に係る障害発生時の動作例を示す図。
【図２６】実施の形態５に係る障害発生時の動作例を示す図。
【図２７】実施の形態５に係る障害発生時の動作例を示すフローチャート図。
【図２８】実施の形態５に係る障害発生時の動作例を示すフローチャート図。
【図２９】実施の形態５に係る障害発生時の動作例を示すフローチャート図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態では、複数のプロセッサコアがメモリを共有しているハードウェア構成における、メモリダンプ方式を説明する。
より具体的には、本実施の形態は、各プロセッサコアの上で複数のオペレーティングシステムおよびアプリケーションが動作している構成において、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳにて二次記憶装置にメモリ内容を保存している最中に、当該プロセッサコアにおいて異常が発生した場合のメモリダンプ方式に関する。
そして、本実施の形態では、メモリダンプを実施しているプロセッサコアにて異常を検出し、異常を検出したプロセッサコアが、別プロセッサコアにメモリダンプを指示し、別プロセッサコアが、二次記憶装置にメモリ内容を保存することにより、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できるメモリダンプ方式を説明する。
以下、実施の形態１に係るメモリダンプ方式を図を用いて説明する。
【００１１】
図１は、本実施の形態に係るメモリダンプ方式におけるハードウェア（Ｈ／Ｗ）構成例を示す。
【００１２】
図中、１、２、３が演算処理を行うプロセッサコアであり、お互いが、バス４で結合される。
各プロセッサコアは、プロセッサ装置の例である。
また、バス４を通して、プロセッサコア１、プロセッサコア２、プロセッサコア３と、メモリ装置５、コンソール装置６、ハードディスク装置（以下、ＨＤＤ装置とも表記する）７及びバックアップメモリ装置８が結合されている。
【００１３】
メモリ装置５は、オペレーティングシステム（以下、ＯＳとも表記する）のコードやデータ、およびアプリケーション（以下、ＡＰとも表記する）のコードやデータ、およびヒープ／スタックを保持する。
前述したように、プロセッサコア１、プロセッサコア２、プロセッサコア３は、メモリ装置５を共有している。
コンソール装置６は、ＯＳやＡＰからのメッセージを出力する。
ハードディスク装置７は、メモリダンプ時にメモリ装置５の内容を格納する。
バックアップメモリ装置８は、ＨＤＤ装置７上にある、メモリ装置５の内容を保存するためのファイルの情報を保持している。
【００１４】
プロセッサコア１、プロセッサコア２、プロセッサコア３には、それぞれ、演算処理を行う演算処理部９（プロセッサコア１）、１０（プロセッサコア２）、１１（プロセッサコア３）、メモリ装置５の内容および演算処理部の処理結果を一時的に保持しておくキャッシュ１２（プロセッサコア１）、１３（プロセッサコア２）、１４（プロセッサコア３）、および、各プロセッサコア間で通信を行うためのプロセッサコア間通信機能１５（プロセッサコア１）、１６（プロセッサコア２）、１７（プロセッサコア３）が存在する。
プロセッサコア間通信機能については、プロセッサコアに割込みを通知する方法や、メモリ装置５を介して、通信したいプロセッサコアが通信先プロセッサコアが参照するメモリ領域に印をつけ、通信先プロセッサコアがそれを参照することにより、通知を把握する方法などが利用される。
本実施の形態では、３つのプロセッサコアを図示しているが、３つである必要はなく、２つのプロセッサコアでも、４つ以上のプロセッサコアでも、動作そのものに変更はない。
【００１５】
図２は、図１で示したＨ／Ｗ構成に対する、ソフトウェア（Ｓ／Ｗ）の構成例を示す図である。
【００１６】
図中、プロセッサコア１ではオペレーティングシステム（ＯＳ）２１が動作する。
同様に、プロセッサコア２ではＯＳ２２が、プロセッサコア３ではＯＳ２３が動作する。
また、ＨＤＤ装置７には、メモリ装置５の内容を保存するための記憶領域であるダンプファイル２４が存在し、バックアップメモリ装置８には、ダンプファイル２４のＨＤＤ装置７内での位置情報などが格納されたファイル情報格納領域２５が存在する。
【００１７】
プロセッサコア１のＯＳ２１には、プロセッサコア１のリセット時に動作し、ＯＳ２１自身の初期化を行うＯＳ初期化部２６、ダンプファイル２４の情報をファイル情報格納領域２５に設定するメモリダンプ設定部２７（ダンプ設定部２７とも表記する）、ＯＳ２１動作中に不正命令が実行されたり、不正アドレスへのアクセスが発生したことによりＯＳ２１がこれ以上動作できなくなったときに、その異常を検出する異常検出部２８が存在する。
【００１８】
また、ＯＳ２１には、異常検出部２８からの指示により、ファイル情報格納領域２５にあるダンプファイル情報を元に、メモリ装置５の内容をダンプファイル２４に書き込むメモリダンプ実施部２９（ダンプ実施部２９とも表記する）が存在する。
後述するように、メモリダンプ実施部２９は、他のプロセッサコア（例えば、プロセッサコア２）においてメモリダンプが正常に行われていないことが検出された場合に、他のプロセッサコアに代わって、メモリ装置５のメモリダンプを行う。
【００１９】
更に、ＯＳ２１には、プロセッサコア間の通信を行うためのコア連携部３０と、メモリダンプ実施部２９の処理中に異常が発生した場合に、その異常を検出するメモリダンプ異常検出部３１（ダンプ異常検出部３１とも表記する）が存在する。
【００２０】
プロセッサコア２のＯＳ２２にも、同様な手段として、ＯＳ初期化部３２、メモリダンプ設定部３３（ダンプ設定部３３とも表記する）、異常検出部３４、メモリダンプ実施部３５（以下、ダンプ実施部３５とも表記する）、コア連携部３６、メモリダンプ異常検出部３７（ダンプ異常検出部３７とも表記する）が存在する。
また、図２では、図示を省略しているが、プロセッサコア３のＯＳ２３にも、同様な手段として、ＯＳ初期化部、メモリダンプ設定部、異常検出部、メモリダンプ実施部、コア連携部、メモリダンプ異常検出部が存在する。
ＯＳ２３における各要素を言及する場合には、ＯＳ初期化部３８、メモリダンプ設定部３９、異常検出部４０、メモリダンプ実施部４１、コア連携部４２、メモリダンプ異常検出部４３と表記する。
【００２１】
なお、コア連携部３０、コア連携部３６及びコア連携部４２は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当する。
また、メモリダンプ異常検出部３１、メモリダンプ異常検出部３７及びメモリダンプ異常検出部４３は、メモリダンプ要求部の例に相当する。
後述するように、プロセッサコア２がメモリダンプを試行するケースにおいては、メモリダンプ異常検出部３７がメモリダンプ実施部３５によるメモリダンプの実施状況を監視する。
そして、メモリダンプ異常検出部３７がメモリダンプ実施部３５においてメモリダンプが正常に行われていないことを検出した場合に、コア連携部３６が、例えばプロセッサコア１のコア連携部３０に、メモリダンプ実施部３５の代わりにメモリ装置５のメモリダンプを実施するよう要求する。
また、コア連携部３０は、コア連携部３６から、メモリダンプの要求、つまりプロセッサコア２においてメモリダンプが正常に行われていない旨の通知を受け、プロセッサコア２においてメモリダンプが正常に行われていないことを検出する。
また、プロセッサコア１のメモリダンプ実施部２９においてメモリダンプが正常に完了した場合は、コア連携部３０はコア連携部３６にメモリダンプが正常に完了したことを通知する。
【００２２】
プロセッサコア１、プロセッサコア２、プロセッサコア３上で動作しているＯＳ２１、ＯＳ２２、ＯＳ２３の実行コードやデータ、および各ＯＳ上で動作するアプリケーション（ＡＰ）は、メモリ装置５内に存在する。
そのため、メモリ装置５には、ＯＳ２１が利用しているＯＳ２１用領域４４と、ＯＳ２２が利用しているＯＳ２２用領域と、ＯＳ２３が利用しているＯＳ２３用領域が存在している。
各ＯＳ用領域は、コードやデータが重なるとＯＳが動作できなくなるため、互いに独立して（異なる物理アドレスにて）メモリ装置５内に配置される。
また、各ＯＳ内の要素も、各ＯＳ用領域に存在し、ＯＳ２１のメモリダンプ実施部２９やコア連携部３０などのコードやデータは、ＯＳ２１用領域４４のメモリダンプ実施部２９０（ダンプ実施部２９０とも表記する）、コア連携部３００などとして存在し、同様に、ＯＳ２２の各要素およびＯＳ２３の各要素も、それぞれＯＳ２２用領域４５、ＯＳ２３用領域４６に存在する。
ＯＳ２２用領域４５においても、メモリダンプ実施部３５やコア連携部３６などのコードやデータは、メモリダンプ実施部３５０（ダンプ実施部３５０とも表記する）、コア連携部３６０などとして存在する。
更に、ＯＳ２３用領域４６においても、メモリダンプ実施部４１やコア連携部４２などのコードやデータは、メモリダンプ実施部４１０（ダンプ実施部４１０とも表記する）、コア連携部４２０などとして存在する。
【００２３】
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を、図３、図４内の矢印および図５、図６のフローチャートを用いて説明する。
なお、図３、図４では、作図上の理由から、プロセッサコア３、メモリ装置５内のＯＳ２３用領域４６、コンソール装置６の図示を省略している。
【００２４】
図３〜図６では、プロセッサコア２上で動作するＯＳ２２に障害が発生し、かつ、ＯＳ２２のメモリダンプ実施部３５のメモリ装置５上のコード・データであるＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていた場合の例を説明する。
【００２５】
まず、ＯＳ２２動作中に障害が発生すると、ＯＳ２２の異常検出部３４がその異常を検出する（図５のＳ１０１）。
この異常検出は、リソース不足によってＯＳ２２が単独で異常と検出できるものや、不正アドレスアクセスや、不正命令実装によって、プロセッサコア２上で例外が発生することによって異常と検出されるものがある。
これら異常が異常検出部３４によって検出されると、異常検出部３４は、異常の原因特定などの処理をした後、メモリダンプ実施部３５にメモリダンプの指示を出す（図３及び図５のＳ１０２）。
メモリダンプ指示を受けたメモリダンプ実施部３５は、メモリダンプ実施中に発生するプロセッサコア２の例外を、再度異常検出部３４が検出しない（検出すると、再度メモリダンプ指示が発生するので）ように、例外が発生した場合、メモリダンプ異常検出部３７が検出するようにプロセッサコア２を設定した後、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得する（図３及び図５のＳ１０３）。
次に、メモリダンプ実施部３５は、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む（図３及び図５のＳ１０４）。
ここで、メモリ装置５のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていなければ、メモリダンプ実施部３５の動作に支障がないので、メモリダンプ実施部３５のメモリダンプ処理は正常に終了する。
【００２６】
しかし、メモリ装置５のＯＳ２２用領域４５のメモリダンプ実施部３５０のデータが破壊されていた場合、メモリダンプ実施部３５の動作は不定になり、不正命令実行や不正アクセスにより、プロセッサコア２上で例外が発生する。
この場合、すでにメモリダンプ実施部３５の動作は不正になっているため、再度メモリダンプ実施部３５を動作させても、メモリダンプを正常に動作させることができない。
メモリダンプ異常検出部３７は、メモリダンプ実施部３５のメモリダンプの実施状況を監視しているため、プロセッサコア２上で例外が発生したことがメモリダンプ異常検出部３７によって検出される（図３及び図５のＳ１０５）。
異常を検出すると、メモリダンプ異常検出部３７は、コア連携部３６に別プロセッサコアへの通知（メモリダンプの実施要求を含む通知）を指示する（図３及び図５のＳ１０６）。
メモリダンプ異常検出部３７から指示を受けたコア連携部３６は、通知を送信すべきプロセッサコアを選択する。
ここでは、コア連携部３６はプロセッサコア１に通知を行う（図３及び図５のＳ１０７）。
プロセッサコアの選択については、特定のプロセッサコアを予め決めておく方法や、各プロセッサコアの負荷状況をメモリ装置５内に記録するようにし、一番負荷が低いプロセッサコアを選択する、などの方法がある。
また、プロセッサコアへの通知については、プロセッサコア間割込みを利用するものや、メモリ装置５内の共通領域への読み書きによって同期を取る方法が取られる。
本実施の形態では、このような方法により、プロセッサコア２のコア連携部３６は、プロセッサコア１を選択し、プロセッサコア１へ通知を行う。
この通知は、プロセッサコア１のコア連携部３０が受信する（図６のＳ１０８）。
【００２７】
プロセッサコア１のコア連携部３０は、プロセッサコア２のコア連携部３６からの通知を受信すると、メモリダンプ実施部２９に対し、メモリダンプを指示する（図４及び図６のＳ１０９）。
メモリダンプ実施部２９は、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得し（図４及び図６のＳ１１０）、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む（図４及び図６のＳ１１１）。
メモリ装置５内のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータは破壊されているものの、メモリ装置５内のＯＳ２１用領域４４のメモリダンプ実施部２９０の動作には支障がないので、メモリダンプ実施部２９のメモリダンプは正常に終了する。
メモリダンプ実施部２９は、メモリダンプが終了すると、コア連携部３０に対し、メモリダンプ終了の通知を行う（図４及び図６のＳ１１２）。
コア連携部３０は、通知元であるプロセッサコア２に対し処理完了の通知を行う（図４及び図６のＳ１１３）。
この通知は、プロセッサコア２のコア連携部３６が受信する（図５のＳ１１４）。
【００２８】
プロセッサコア２のコア連携部３６は、プロセッサコア１のコア連携部３０からの通知を受信すると、メモリダンプ異常検出部３７に処理完了の通知を行う（図４及び図５のＳ１１５）。
この通知を受けて、メモリダンプ異常検出部３７は、異常検出部３４に処理完了の通知を行う（図４及び図６のＳ１１６）。
通知を受けた異常検出部３４は、メモリ内容が保存されたことにより、装置を停止または再起動する（図４及び図６のＳ１１７）。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
【００２９】
以上のように、実施の形態１によるメモリダンプ方式では、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、別プロセッサコアにメモリダンプを指示し、別プロセッサコア上にてメモリダンプを実施する。
このため、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できる。
【００３０】
なお、プロセッサコア１のメモリダンプ実施部２９の処理にて、プロセッサコア２のメモリダンプ実施部３５が実施したのと同様に、プロセッサコア１の例外を、メモリダンプ異常検出部３１が検出するように、プロセッサコア１に設定し、プロセッサコア１のメモリダンプ実施部２９の処理中に異常が発生した時に、さらに別のプロセッサコア（例えば、プロセッサコア３）にメモリダンプを指示するようにしてもよい。
このようにすることで、メモリダンプがさらに確実に実施できる。
【００３１】
また、本実施の形態では、プロセッサコア１のメモリダンプ実施部２９によるメモリダンプ処理が終了した後、コア連携部３０を介して、プロセッサコア２の異常検出部３４に処理完了を通知し、プロセッサコア２の異常検出部３４にて装置の停止または再起動を実施している。
これにつき、メモリダンプ実施部２９が、プロセッサコア１の異常検出部２８に処理完了を通知し、異常検出部２８にて装置の停止または再起動を行うことでも、同様なメモリダンプ方式を得ることができる。
【００３２】
また、本実施の形態では、メモリダンプ実施部３５の処理内での異常について、プロセッサコア２の例外発生をメモリダンプ異常検出部３７が検出することにより、異常を検出している。
これにつき、例外発生ではなく、利用したデータが不正であることをメモリダンプ実施部３５が検出した時に、メモリダンプ異常検出部３７に異常を通知することでも、同様なメモリダンプ方式を得ることができる。
【００３３】
また、本実施の形態では、メモリダンプ実施部３５の処理内での異常について、プロセッサコア２の例外発生をＯＳ２２内のメモリダンプ異常検出部３７が検出することにより、異常を検出している。
これをＨ／Ｗの仮想化支援機能を利用し、ＯＳ２２が動作できないような状態（例えば、ダブルフォルト）では、仮想化支援機能にてＯＳ２２とは別の機能（仮想化支援コード）が動作し、その中で、プロセッサコア１へのメモリダンプ指示を行うことでも、同様なメモリダンプ方式を得ることができる。
また、仮想化支援機能とは別に、プロセッサコアの例外発生を、従来からプロセッサコアに備えられているシステム管理モード（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｍｏｄｅ：ＳＭＭ）に遷移するようにし、ＳＭＭモードで動作するコード内にて、プロセッサコア１へのメモリダンプ指示を行うことでも、同様なメモリダンプ方式を得ることができる。
つまり、メモリダンプ実施部３５の処理内での異常を検出するのは、ＯＳ２２（プロセッサコア２）に限らず、ＯＳ２１（プロセッサコア１）やＯＳ２３（プロセッサコア３）を含む、他の機構であってもよい。
【００３４】
また、本実施の形態では、メモリダンプ実施部３５の処理内での異常を、メモリダンプ異常検出部３７にて検出するようにしている。
これにつき、異常検出部３４が異常検出時にメモリダンプ実施中か否かを判断し、メモリダンプ実施中でなければ、メモリダンプ実施部３５にメモリダンプ指示をし、メモリダンプ実施中であれば、コア連携部３６に別プロセッサコアへの通知を指示するようにすることで、メモリダンプ異常検出部３７を必要とすることなく、同様なメモリダンプ方式を得ることができる。
異常検出部３４がメモリダンプ実施中か否かを判断する方法としては、異常検出時に実行していたコード位置が、メモリダンプ実施部３５のコード内であるか否かを判断することや、メモリダンプ実施部３５がメモリダンプ開始時に、メモリ装置５内の特定の領域にマーキングし、それを異常検出部３４が読み取ることで判断することができる。
【００３５】
また、本実施の形態では、プロセッサコア１、２、３上のＯＳに同様な機能を持たせているが、１つのプロセッサコアにコア連携部およびメモリダンプ実施部のみを備え、メモリダンプ専用とし、他のＯＳのメモリダンプ中に異常が発生した場合、メモリダンプ専用のプロセッサコアに通知することでも、同様なメモリダンプ方式を得ることができる。
【００３６】
なお、プロセッサコア２のメモリダンプ実施部３５がメモリダンプを実施している最中にメモリダンプ実施部３５０が破損した場合には、破損時には既にメモリ装置５の一部のデータはＨＤＤ装置７に保存されている。
しかしながら、プロセッサコア１のメモリダンプ実施部２９は、メモリダンプ実施部３５によりどのデータがＨＤＤ装置７に保存されているかを確認できないので、メモリダンプ実施部３５におけるメモリダンプの進捗状況にかかわらず、メモリダンプを最初からやり直す。
【００３７】
以上、本実施の形態では、
複数のプロセッサコアと、各プロセッサコアが共有するメモリと、障害発生時のメモリ内容を保存する二次記憶装置を備えたハードウェア上にて、複数のオペレーティングシステム（ＯＳ）が動作している構成において、以下の構成要素を含む、メモリダンプ方式を説明した。
（１）各プロセッサコア上のＯＳに以下の構成要素を持つ。
（ａ）障害発生時にメモリ内容を二次記憶装置に保存する手段
（ｂ）二次記憶装置に保存する間に発生する異常を検出する手段
（ｃ）上記（ｂ）の手段から呼び出され、他プロセッサコアに通知を行う手段
（ｄ）他プロセッサコアからの通知を受け、上記（ａ）の手段を呼び出す手段
【００３８】
実施の形態２．
本実施の形態では、複数のプロセッサコアと、論理アドレス空間を物理アドレス空間に変換するＭＭＵを持ったハードウェア構成を備え、その上で複数のオペレーティングシステム（ＯＳ）およびアプリケーション（ＡＰ）が動作している構成におけるメモリダンプ方式を説明する。
より具体的には、本実施の形態に係るメモリダンプ方式では、メモリダンプ処理専用プロセッサコアを設け、メモリダンプ処理専用プロセッサコア以外は、各自が使用するメモリ領域のみ論理アドレス空間として参照できるようにし、メモリダンプ処理専用プロセッサコアは、全メモリを論理アドレス空間として参照できるようにしている。
そして、本実施の形態に係るメモリダンプ方式では、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳ内で二次記憶装置にメモリ内容を保存している最中に、メモリダンプ処理において異常が発生した場合に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアがメモリダンプ処理専用プロセッサコアにメモリダンプを指示し、メモリダンプ処理専用プロセッサコアが、二次記憶装置にメモリ内容を保存する。
本実施の形態に係るメモリダンプ方式によれば、メモリダンプ処理専用プロセッサコア以外は、各自が使用するメモリ領域のみ論理アドレス空間として参照できるため、メモリダンプ処理専用プロセッサコア上のメモリダンプ処理用のコードが、他プロセッサコアから破壊されることなく、メモリダンプを確実に実施できる。
【００３９】
図７は、本実施の形態に係るメモリダンプ方式におけるハードウェア（Ｈ／Ｗ）構成例を示す。
【００４０】
図７において、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１８、１９、２０以外は、図１に示した要素と同じである。
ここでは、ＭＭＵ１８、１９、２０以外の要素の説明を省略する。
ＭＭＵ１８、１９、２０は、論理アドレスをメモリ装置５の物理アドレスに変換する機能を有し、プロセッサコア１、２、３がメモリ装置５をアドレス空間として論理的に分割するために用いられる。
各プロセッサコア上のＯＳは、このＭＭＵを使用することで、メモリ装置５の一部をそのＯＳ専用のメモリとして使用し、他プロセッサコアのＯＳが参照できないようにすることができる。
本実施の形態では、３つのプロセッサコアを図示しているが、３つである必要はなく、２つのプロセッサコアでも、４つ以上のプロセッサコアでも、動作そのものに変更はない。
【００４１】
図８は、図１で示したＨ／Ｗ構成に対する、ソフトウェア（Ｓ／Ｗ）の構成例を示す図である。
図８では、作図上の理由から、コンソール装置６の図示を省略し、また、プロセッサコア３のＯＳ２３の内部構成の図示を省略している。
なお、プロセッサコア３のＯＳ２３は、プロセッサコア２のＯＳ２２と同様の内部構成である。
つまり、ＯＳ２３は、図２について説明したように、ＯＳ初期化部３８、メモリダンプ設定部３９、異常検出部４０、メモリダンプ実施部４１、コア連携部４２、メモリダンプ異常検出部４３と、後述するマップ部５２を備える。
また、図８では、記述を省略しているが、本実施の形態においてもコア連携部３０、コア連携部３６及びコア連携部４２は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当し、メモリダンプ異常検出部３７及びメモリダンプ異常検出部４３は、メモリダンプ要求部の例に相当する。
【００４２】
実施の形態２では、プロセッサコア１のＯＳ２１は、他のプロセッサコアのＯＳとは異なり、メモリダンプを専用に処理する機能を有し、メモリダンプ設定部、異常検出部、メモリダンプ異常検出部を持たない構成になっている。
また、各ＯＳには、プロセッサコアのＭＭＵ（図７のＭＭＵ１８（プロセッサコア１）、ＭＭＵ１９（プロセッサコア２）、ＭＭＵ２０（プロセッサコア３））を使用して、メモリ装置５を論理アドレス空間上で参照可能（マップ）にするためのマップ部を備える（ＯＳ２１にはマップ部５０を、ＯＳ２２にはマップ部５１を、ＯＳ２３にはマップ部５２（不図示）をそれぞれ備える）。
マップ部５０、５１、５２は、それぞれのＯＳがアクセスできるメモリ装置５の物理アドレス空間を指定する。
後述するように、ＯＳ２２、ＯＳ２３は、メモリダンプ時以外はメモリ装置５の一部の物理アドレス空間に対応する論理アドレス空間が設定され、一部の物理アドレス空間のみアクセス可能である。
一方で、メモリダンプ時には、マップ部５１、５２が、メモリ装置５内の全ての物理アドレスを対象とする論理アドレスをそれぞれのＯＳに設定し、メモリダンプ実施部３５、４１がメモリ装置５内の全ての物理アドレスをアクセス可能な状態にする。
マップ部５１、５２は、アクセス制御部の例である。
【００４３】
また、メモリ装置５には、各プロセッサコアのＭＭＵが論理アドレス空間と物理アドレス空間を変換するためのテーブルである、ページテーブルを備える。
プロセッサコア１のＭＭＵ１８は、ＯＳ２１用領域４４内にあるページテーブル５４を参照するようにマップ部５０にて設定される。
ページテーブル５４内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、ＯＳ２１の各要素のコード（メモリダンプ実施部２９０、コア連携部３００など）およびページテーブル５４が格納されているＯＳ２１用領域４４、すなわちメモリ装置５全体を参照可能にするよう設定される。
これにより、プロセッサコア１では、メモリ装置５全体を参照可能になる。
また、プロセッサコア２のＭＭＵ１９は、ＯＳ２２用領域４５内にあるページテーブル５５を参照するようにマップ部５１にて設定される。
ページテーブル５５内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、ＯＳ２２の各要素のコード（メモリダンプ実施部３５０、コア連携部３６０など）およびページテーブル５５が格納されているＯＳ２２用領域４５のみを参照可能にするよう設定される。
これにより、プロセッサコア２では、ＯＳ２２用領域４５のみ参照可能になり、ＯＳ２１用領域４４のメモリダンプ実施部２９０や、ＯＳ２３用領域４６は参照できない。
こうすることで、プロセッサコア２内の処理にて、ＯＳ２１用の領域や、ＯＳ２３用の領域がデータ破壊されることを防ぐ。
同様に、プロセッサコア３のＭＭＵ２０は、ＯＳ２３用領域４６内にあるページテーブル５６を参照するようマップ部５２にて設定される。
ページテーブル５６内で設定されている論理アドレス空間と物理アドレス空間の変換情報は、ＯＳ２３の各要素のコード（メモリダンプ実施部４１０、コア連携部４２０など）およびページテーブル５６が格納されているＯＳ２３用領域４６のみを参照可能にするよう設定される。
これにより、プロセッサコア３では、ＯＳ２３用領域４６のみ参照可能になり、ＯＳ２１用領域４４のメモリダンプ実施部２９０や、ＯＳ２２用領域４５は参照できない。
こうすることで、プロセッサコア３内の処理にて、ＯＳ２１用の領域や、ＯＳ２２用の領域がデータ破壊されることを防ぐ。
【００４４】
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を、図９、図１０内の矢印および図１１、図１２のフローチャートを用いて説明する。
なお、図９、図１０では、作図上の理由から、プロセッサコア３、メモリ装置５内のＯＳ２３用領域４６、コンソール装置６の図示を省略している。
【００４５】
図９〜図１２では、プロセッサコア２上で動作するＯＳ２２に障害が発生し、かつ、ＯＳ２２のメモリダンプ実施部３５のメモリ装置５上のコード・データであるＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていた場合の例で説明する。
【００４６】
まず、ＯＳ２２動作中に障害が発生すると、ＯＳ２２の異常検出部３４がその異常を検出する（図１１のＳ２０１）。
異常が異常検出部３４によって検出されると、異常検出部３４は、異常の原因特定などの処理をした後、メモリダンプ実施部３５にメモリダンプの指示を出す（図９及び図１１のＳ２０２）。
メモリダンプ指示を受けたメモリダンプ実施部３５は、メモリダンプ実施中に発生するプロセッサコア２の例外を、再度異常検出部３４が検出しないように、例外が発生した場合、メモリダンプ異常検出部３７が検出するようにプロセッサコア２を設定した後、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得する（図９及び図１１のＳ２０３）。
次にメモリダンプ実施部３５は、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む処理を行う。
【００４７】
プロセッサコア２では、メモリ装置５のＯＳ２２用領域４５内にあるページテーブル５５を使用してＭＭＵ１９が動作しているため、ＯＳ２２のメモリダンプ実施部３５は、メモリ装置５のＯＳ２２用領域４５しかアクセスできないようになっている。
このため、メモリ装置５の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部３５は、メモリ装置５の物理アドレス空間の先頭ページ（アドレス空間を一定のサイズ（一般的には４Ｋバイト）で区切った領域）が、ＯＳ２２用領域４５内に存在するかチェックする（図１１のＳ２０４）。
これは、ページテーブル５５を参照し、プロセッサコア２の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、ＯＳ２２用領域４５に含まれていない場合（図１１のＳ２０４でＮＯ）、メモリダンプ実施部３５はマップ部５１に指示し、物理アドレス空間をプロセッサコア２の論理アドレス空間上（マップ領域５７）で参照可能にする（図９及び図１１のＳ２０５）。
マップ部５１は、物理アドレス空間をプロセッサコア２の論理アドレス空間で参照できるように、ＭＭＵ１９が使用しているページテーブル５５を設定する。
所望の物理アドレスが、ＯＳ２２用領域４５に含まれている場合（図１１のＳ２０４でＹＥＳ）は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部５１に指示は出さない。
ＯＳ２２用領域へのマップ（図９及び図１１のＳ２０５）が完了した、または、既に参照可能になっている（図１１のＳ２０４でＹＥＳ）場合は、次にメモリダンプ実施部３５は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル２４に書き込む（図９及び図１１のＳ２０６）。
そして、異常が発生していない（図１１のＳ２０７でＮＯ）場合は、物理アドレス空間の次のページにてＳ２０４からＳ２０６の処理を行う。
ここで、メモリ装置５のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていなければ、メモリダンプ実施部３５の動作に支障がないので、物理アドレス空間内のメモリ装置５の内容が全てダンプファイル２４に格納された時点で、メモリダンプ実施部３５のメモリダンプ処理は正常に終了する。
【００４８】
しかし、メモリ装置５のＯＳ２２用領域４５のメモリダンプ実施部３５０のデータが破壊されていた場合、メモリダンプ実施部３５の動作は異常（図１１のＳ２０７でＹＥＳ）になり、不正命令実行や不正アクセスにより、プロセッサコア２上で例外が発生する。
この場合、すでにメモリダンプ実施部３５の動作は不正になっているため、再度メモリダンプ実施部３５を動作させても、メモリダンプを正常に動作させることができない。
プロセッサコア２上で例外が発生したことは、メモリダンプ異常検出部３７によって検出される（図９及び図１１のＳ２０８）。
異常を検出すると、メモリダンプ異常検出部３７は、コア連携部３６に別プロセッサコアへの通知（メモリダンプの実施要求を含む通知）を指示する（図９及び図１１のＳ２０９）。
メモリダンプ異常検出部３７から指示を受けたコア連携部３６は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア１を、メモリダンプを専用に処理する機能としているので、コア連携部３６はプロセッサコア１に送信を行う（図９及び図１１のＳ２１０）。
この通知は、プロセッサコア１のコア連携部３０が受信する（図１２のＳ２１１）。
【００４９】
プロセッサコア１のコア連携部３０は、プロセッサコア２のコア連携部３６からの通知を受信すると、メモリダンプ実施部２９に対し、メモリダンプを指示する（図１０及び図１２のＳ２１２）。
メモリダンプ実施部２９は、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得し（図１０及び図１２のＳ２１３）、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む（図１０及び図１２のＳ２１４）。
メモリ装置５内のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータは破壊されているものの、メモリ装置５内のＯＳ２１用領域４４のメモリダンプ実施部２９０の動作には支障がないので、メモリダンプ実施部２９のメモリダンプは正常に終了する。
また、ＯＳ２１用領域４４のページテーブル５４により、プロセッサコア１では、論理アドレス空間にメモリ装置５が全て参照可能になっており、マップ部５０を呼び出す必要はない。
メモリダンプ実施部２９は、メモリダンプが終了すると、コア連携部３０に対し、メモリダンプ終了の通知を行う（図１０及び図１２のＳ２１５）。
コア連携部３０は、通知元であるプロセッサコア２に対し処理完了の通知を行う（図１０及び図１２のＳ２１６）。
この通知は、プロセッサコア２のコア連携部３６が受信する（図１１のＳ２１７）。
【００５０】
プロセッサコア２のコア連携部３６は、プロセッサコア１のコア連携部３０からの通知を受信すると、メモリダンプ異常検出部３７に処理完了の通知を行う（図１０及び図１１のＳ２１８）。
この通知を受けて、メモリダンプ異常検出部３７は、異常検出部３４に処理完了の通知を行う（図１０及び図１１のＳ２１９）。
通知を受けた異常検出部３４は、メモリ内容が保存されたことにより、装置を停止または再起動する（図１０及び図１１のＳ２２０）。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
【００５１】
実施の形態２によるメモリダンプ方式では、論理アドレス空間を物理アドレス空間に変換するＭＭＵを利用し、各プロセッサコアを論理アドレス空間で動作させ、通常の動作を行うプロセッサコアは、そのプロセッサコアが動作しているＯＳが利用できる特定のメモリ領域だけを参照可能し、メモリダンプを専用に行うプロセッサコアのみメモリ全体を参照できるようにしている。
また、実施の形態２によるメモリダンプ方式では、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアがメモリダンプ処理専用プロセッサコアにメモリダンプを指示し、メモリダンプ処理専用プロセッサコア上のメモリダンプ実施部にて、二次記憶装置にメモリ内容を保存する。
このため、実施の形態２によるメモリダンプ方式では、メモリダンプ処理中に障害が発生しても、メモリダンプが確実に実施できる。
【００５２】
なお、本実施の形態では、通常の動作を行うプロセッサコアは、そのプロセッサコアが動作しているＯＳが利用できる特定のメモリ領域だけを参照可能であり、メモリダンプを専用に行うプロセッサコアのみメモリ全体を参照できるようにしたので、通常の動作を行うプロセッサコアにて、メモリ内のデータを破壊するような異常状態が発生しても、メモリダンプを専用に行うプロセッサコア上で動作するコードには影響を与えない。
【００５３】
以上、本実施の形態では、
各プロセッサコアは、メモリを分割して、各メモリを異なるアドレス空間として管理することができるＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を備え、以下の構成要素を含むメモリダンプ方式を説明した。
（１）１つのプロセッサコア上のＯＳに以下の構成要素を持つ
（ａ）ＭＭＵを使って、メモリ全体をアクセス可能にする手段
（２）上記（１）以外のプロセッサコア上のＯＳに以下の構成要素を持つ
（ａ）ＭＭＵを使って、メモリの特定の領域のみアクセス可能にする手段
（ｂ）障害発生時に、他メモリの内容をアクセス可能にする手段
（ｃ）二次記憶装置に保存する間に異常が発生した場合、上記（１）のプロセッサコアに通知を行う手段
【００５４】
実施の形態３．
本実施の形態に係るメモリダンプ方式では、メモリダンプ処理専用プロセッサコアが、定期的に他プロセッサコアの状態を監視し、異常を検出した場合、メモリダンプ処理専用プロセッサコア自身が、異常が検出されたプロセッサコアを停止し、メモリダンプを実施する。
本実施の形態に係るメモリダンプ方式によれば、障害が発生したプロセッサコア自身がハングアップ等で動作できない場合でも、メモリダンプを確実に実施できる。
【００５５】
実施の形態３では、Ｈ／Ｗ構成は実施の形態２と同じであり、図７で示される。
図１３は、図７で示したＨ／Ｗ構成に対する、ソフトウェア（Ｓ／Ｗ）の構成例を示す図である。
【００５６】
実施の形態３では、プロセッサコア１のＯＳ２１に、プロセッサコア２のＯＳ２２およびプロセッサコア３のＯＳ２３の動作状況を監視するための監視部６０が存在する。
監視部６０は、後述するカウンタのカウンタ値を監視する。このカウンタ値は、他のプロセッサコアが正常に動作している間は所定の周期で更新される。
そして、監視部６０は、カウンタ値の更新が停止した場合に、他のプロセッサコアに障害が発生したと判断する。
【００５７】
また、プロセッサコア２のＯＳ２２に、ＯＳ２２が問題なく動作していることを示す応答部６１が存在し、プロセッサコア３のＯＳ２３にも同様な応答部６２（不図示）が存在する。
また、メモリ装置５には、ＯＳ２２が動作していることを示すために応答部６１がカウンタ値を更新するカウンタ６３と、ＯＳ２３が動作していることを示すために応答部６２がカウンタ値を更新するカウンタ６４が存在する。
つまり、応答部６１は、ＯＳ２２が正常に動作している間はカウンタ６３のカウンタ値を所定の周期で更新して、プロセッサコア２が正常に動作していることを監視部６０に示す。
同様に、応答部６２は、ＯＳ２３が正常に動作している間はカウンタ６４のカウンタ値を所定の周期で更新して、プロセッサコア３が正常に動作していることを監視部６０に示す。
応答部６１、６２は、カウンタ値更新部の例である。
【００５８】
なお、実施の形態３では、プロセッサコア２およびプロセッサコア３の異常検出部にて異常が検出された場合の動作は、実施の形態２と同じであり、図９、図１０の矢印および図１１、図１２のフローチャートで示される。
【００５９】
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作例を説明する。
具体的には、プロセッサコアがハングアップ、すなわち、突然動作できなくなる状態に陥ったケースでの動作例を図１４、図１５内の矢印および図１６、図１７のフローチャートを用いて説明する。
なお、図１４、図１５では、作図上の理由から、プロセッサコア３、メモリ装置５内のＯＳ２３用領域４６、コンソール装置６の図示を省略している。
【００６０】
図１４〜図１７では、プロセッサコア２がハングアップする場合の例を説明する。
【００６１】
まず、プロセッサコア２およびプロセッサコア３が問題なく動作している状態でのプロセッサコア２およびプロセッサコア３の動作を説明する。
プロセッサコア２が問題なく動作している場合では、図１６のＳ３０１にてプロセッサコア２のＯＳ２２は通常の動作を実施している。
そして一定時間が経過しているかチェックされる（図１６のＳ３０２）。
このチェックは、ＯＳ内部時刻の更新状況を監視することや、時刻変化によって発生する割り込みによって起動されてもよい。
Ｓ３０２にて、一定時間が経過していない場合（図１６のＳ３０２でＮＯ）は、Ｓ３０１に戻って通常の動作を継続する。
Ｓ３０２にて一定時間が経過している場合（図１６のＳ３０２でＹＥＳ）、ＯＳ２２では応答部６１が動作し、メモリ装置５のＯＳ２２用領域４５にあるカウンタ６３を１加算する（図１４及び図１７のＳ３０３）。
これにより、カウンタ６３は一定時間毎に加算され、監視部６０はカウンタ６３を見ることで、ＯＳ２２が動作していることが確認できる。
Ｓ３０３にてカウンタ６３を加算した後は、ＯＳ２２は、Ｓ３０１に戻って通常の動作を継続する。
以上がプロセッサコア２の動作である。
なお、プロセッサコア３における動作は、図１４及び図１６に示したプロセッサコア２の動作（Ｓ３０１〜Ｓ３０３）と同様であり、説明を省略する。
【００６２】
次に、プロセッサコア１の動作を説明する。
プロセッサコア１では、まずＯＳ２１の監視部６０が、一定時間経過したをチェックする（図１７のＳ３１０）。
一定時間経過していない場合（Ｓ３１０でＮＯ）は、まだ、プロセッサコア２およびプロセッサコア３のチェックを行う必要がないので、最初に戻る。
Ｓ３１０にて一定時間経過している場合（Ｓ３１０でＹＥＳ）、カウンタ６３およびカウンタ６４がチェックされる（図１４及び図１７のＳ３１１）。
図１４では、監視部６０がＯＳ２２用領域４５のカウンタ６３をチェックすることのみが図示されているが、監視部６０は同時にＯＳ２３用領域４６のカウンタ６４もチェックする。
ここで、一定時間経過時にカウンタ６３およびカウンタ６４の値が正しく更新（カウントアップ）されている場合（図１７のＳ３１１でＹＥＳ）、プロセッサコア２およびプロセッサコア３が正常に動作していると判断し、最初に戻る。
プロセッサコア２が動作できていない場合は、ＯＳ２２の応答部６１にてカウンタ６３の更新が実施されないため、監視部６０によるＳ３１１でのカウンタ６３の更新チェックにて、監視部６０はＯＳ２２が動作できていない、すなわち異常が発生したと判断される（Ｓ３１２でＮＯ）。
これにより、監視部６０は、メモリダンプ実施部２９にメモリダンプを指示する（図１４及び図１７のＳ３１３）。
【００６３】
メモリダンプ実施部２９は、監視部６０からの指示に基づき、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得し（図１５及び図１７のＳ３１４）、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む（図１５及び図１７のＳ３１５）。
プロセッサコア２は動作できていないもののメモリ装置５内のＯＳ２１用領域４４のメモリダンプ実施部２９０の動作には支障がないので、メモリダンプ実施部２９のメモリダンプは正常に終了する。
また、ＯＳ２１用領域４４のページテーブル５４により、プロセッサコア１では、論理アドレス空間にメモリ装置５が全て参照可能になっており、マップ部５０を呼び出す必要はない。
メモリダンプ実施部２９は、メモリダンプが終了すると、監視部６０に対し、メモリダンプ終了の通知を行う（図１５及び図１７のＳ３１６）。
通知を受けた監視部６０は、メモリ内容が保存されたことにより、装置を停止または再起動する（図１５及び図１７のＳ３１７）。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
【００６４】
実施の形態３によるメモリダンプ方式では、通常の動作を行うプロセッサコアには、一定時間毎にメモリ内のデータを更新する手段を設け、メモリダンプを専用に行うプロセッサコアには、そのデータを一定時間毎に参照し、データが更新されていない場合、メモリダンプの実施を指示する手段を設けている。
このため、本実施の形態によるメモリダンプ方式では、通常の動作を行うプロセッサコアにてＨ／Ｗ的にハングアップ状態となり、ＯＳの異常検知部が動作できない状態でも、メモリダンプが確実に実施できる。
【００６５】
なお、本実施の形態では、通常の動作を行うプロセッサコアが正常に動作しているか否かについて、メモリ内のデータを定期的に更新することで判断している。
これを、プロセッサコア間通信を使い、通常の動作を行うプロセッサコアは、定期的に、メモリダンプを行うプロセッサコアに通知割込みを発生させ、メモリダンプを行うプロセッサコアは、定期的な割込みが来ない場合に、正常に動作していないと判断し、メモリダンプを実施するようにしても、同様なメモリダンプ方式を得ることができる。
【００６６】
以上、本実施の形態では、
各プロセッサコアに、以下の構成要素を含むメモリダンプ方式を説明した。
（１）実施の形態２に記載のメモリダンプを専用に処理するプロセッサコア上のＯＳに以下の構成要素を持つ。
（ａ）下記の（２）（ａ）をチェックし、一定時間内に値が更新されない場合、メモリ内容を二次記憶装置に保存する手段
（２）上記の（１）のプロセッサコア以外のプロセッサコア上のＯＳに以下の構成要素を持つ。
（ａ）メモリ内の、自身がアクセス可能な領域に存在するカウンタ
（ｂ）メモリダンプ中に、カウンタを一定時間毎に更新する手段
【００６７】
実施の形態４．
本実施の形態では、複数のプロセッサコアと、論理アドレス空間を物理アドレス空間に変換するＭＭＵを持ったハードウェア構成を備え、その上で複数のオペレーティングシステム（ＯＳ）およびアプリケーション（ＡＰ）が動作している構成におけるメモリダンプ方式を説明する。
より具体的には、本実施の形態に係るメモリダンプ方式では、各プロセッサコアは、各自が使用するメモリ領域のみ、論理アドレス空間として参照できるようにし、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳ内で二次記憶装置にメモリ内容を保存している最中に、メモリダンプ処理において異常が発生した場合に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアが別のプロセッサコアにメモリダンプを指示し、別プロセッサコア上のＯＳが、全メモリを論理アドレス空間として参照できるようにしてから、メモリダンプを実施する。
本実施の形態に係るメモリダンプ方式によれば、メモリダンプ処理専用プロセッサコアを持つことなく、メモリダンプを確実に実施できる。
【００６８】
実施の形態４では、Ｈ／Ｗ構成は実施の形態２と同じであり、図７で示される。
図１８は、図７で示したＨ／Ｗ構成に対する、ソフトウェア（Ｓ／Ｗ）の構成例を示す図である。
実施の形態４では、実施の形態２と異なり、プロセッサコア１はメモリダンプを専用に処理する構成ではない。
このため、プロセッサコア１のＯＳ２１には、実施の形態１と同様に、メモリダンプ設定部２７、異常検出部２８、メモリダンプ異常検出部３１を備える。
プロセッサコア２のＯＳ２２およびプロセッサコア３のＯＳ２３の構成は、実施の形態２と同じである。
また、メモリ装置５の構成も、実施の形態２と異なり、ＯＳ２１用領域４４は、メモリ装置５全体を示すようにはならず、プロセッサコア１のＭＭＵ１８が使用するページテーブル５４は、ＯＳ２２用領域４５やＯＳ２３用領域４６とは重複せず、ＯＳ２１用領域４４のみを参照できるように設定される。
つまり、本実施の形態では、プロセッサコア１には、メモリ装置５の一部の物理アドレスをを対象とする論理アドレスが割り当てられ、メモリダンプ時以外は、プロセッサコア１は、ＭＭＵ１８を用いて、割り当てられている論理アドレスが対象としている一部の物理アドレスにのみアクセス可能である。
また、メモリ装置５内の各ＯＳ用領域には、ＯＳ用領域外のメモリ領域を各ＯＳ内の領域（論理アドレス空間）で参照するための領域を持っている。
ＯＳ２１用領域４４にはマップ領域７０を、ＯＳ２２用領域４５にはマップ領域７１を、ＯＳ２３用領域４６にはマップ領域７２を、それぞれ備える。
なお、本実施の形態では、メモリダンプ実施部２９、３５、４１が、カウンタ値更新部の例でもある。
また、本実施の形態では、マップ部５１、５２の他、マップ部５０もアクセス制御部の例となる。
【００６９】
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作について、図１９、図２０内の矢印および図２１、図２２のフローチャートを用いて説明する。
なお、図１９、図２０では、作図上の理由から、プロセッサコア３、メモリ装置５内のＯＳ２３用領域４６、コンソール装置６の図示を省略している。
【００７０】
図１９〜図２２では、プロセッサコア２上で動作するＯＳ２２に障害が発生し、かつ、ＯＳ２２のメモリダンプ実施部３５のメモリ装置５上のコード・データであるＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていた場合の例で説明する。
【００７１】
まず、ＯＳ２２動作中に障害が発生すると、ＯＳ２２の異常検出部３４がその異常を検出する（図２１のＳ４０１）。
異常が異常検出部３４によって検出されると、異常検出部３４は、異常の原因特定などの処理をした後、メモリダンプ実施部３５にメモリダンプの指示を出す（図１９及び図２１のＳ４０２）。
メモリダンプ指示を受けたメモリダンプ実施部３５は、メモリダンプ実施中に発生するプロセッサコア２の例外を、再度異常検出部３４が検出しないように、例外が発生した場合、メモリダンプ異常検出部３７が検出するようにプロセッサコア２を設定した後、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得する（図１９及び図２１のＳ４０３）。
次にメモリダンプ実施部３５は、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む処理を行う。
【００７２】
プロセッサコア２では、メモリ装置５のＯＳ２２用領域４５内にあるページテーブル５５を使用してＭＭＵ１９が動作しているため、ＯＳ２２のメモリダンプ実施部３５は、メモリ装置５のＯＳ２２用領域４５しかアクセスできないようになっている。
このため、メモリ装置５の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部３５は、メモリ装置５の物理アドレス空間の先頭ページ（アドレス空間を一定のサイズ（一般的には４Ｋバイト）で区切った領域）が、ＯＳ２２用領域４５内に存在するかチェックする（図２１のＳ４０４）。
これは、ページテーブル５５を参照し、プロセッサコア２の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、ＯＳ２２用領域４５に含まれていない場合（図２１のＳ４０４でＮＯ）、メモリダンプ実施部３５はマップ部５１に指示し、物理アドレス空間をプロセッサコア２の論理アドレス空間上（マップ領域７１）で参照可能にする（図１９及び図２１のＳ４０５）。
マップ部５１は、物理アドレス空間をプロセッサコア２の論理アドレス空間で参照できるように、ＭＭＵ１９が使用しているページテーブル５５を設定する。
なお、図１９では、先頭ページ及びＯＳ２１用領域４４をマップ領域７１に設定している例を示しているが、他の領域についても同様の処理を繰り返すと、メモリ装置５の全領域が参照可能となる。
所望の物理アドレスが、ＯＳ２２用領域４５に含まれている場合（図２１のＳ４０４でＹＥＳ）は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部５１に指示は出さない。
ＯＳ２２用領域４５へのマップ（図１９及び図２１のＳ４０５）が完了した、または、既に参照可能になっている（図２１のＳ４０４でＹＥＳ）場合、次にメモリダンプ実施部３５は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル２４に書き込む（図１９及び図２１のＳ４０６）。
そして、異常が発生していない（図２１のＳ４０７でＮＯ）場合は、物理アドレス空間の次のページにてＳ４０４からＳ４０６の処理を行う。
ここで、メモリ装置５のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていなければ、メモリダンプ実施部３５の動作に支障がないので、物理アドレス空間内のメモリ装置５の内容が全てダンプファイル２４に格納された時点で、メモリダンプ実施部３５のメモリダンプ処理は正常に終了する。
【００７３】
しかし、メモリ装置５のＯＳ２２用領域４５のメモリダンプ実施部３５０のデータが破壊されていた場合、メモリダンプ実施部３５の動作は異常（図２１のＳ４０７でＹＥＳ）になり、不正命令実行や不正アクセスにより、プロセッサコア２上で例外が発生する。
この場合、すでにメモリダンプ実施部３５の動作は不正になっているため、再度メモリダンプ実施部３５を動作させても、メモリダンプを正常に動作させることができない。
プロセッサコア２上で例外が発生したことは、メモリダンプ異常検出部３７によって検出される（図１９及び図２１のＳ４０８）。
異常を検出すると、メモリダンプ異常検出部３７は、コア連携部３６に別プロセッサコアへの通知（メモリダンプの実施要求を含む通知）を指示する（図１９及び図２１のＳ４０９）。
メモリダンプ異常検出部３７から指示を受けたコア連携部３６は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア１に送信を行う（図１９及び図２１のＳ４１０）。
プロセッサコアの選択については、実施の形態１と同様に特定のプロセッサコアを予め決めておく方法や、各プロセッサコアの負荷状況をメモリ装置５内に記録するようにし、一番負荷が低いプロセッサコアを選択する、などの方法がある。
本実施の形態では、このような方法により、プロセッサコア２のコア連携部３６は、プロセッサコア１を選択し、プロセッサコア１に通知の送信を行う（図１９及び図２１のＳ４１０）。
この通知は、プロセッサコア１のコア連携部３０が受信する（図２２のＳ４１１）。
【００７４】
プロセッサコア１のコア連携部３０は、プロセッサコア２のコア連携部３６からの通知を受信すると、メモリダンプ実施部２９に対し、メモリダンプを指示する（図２０及び図２２のＳ４１２）。
メモリダンプ実施部２９は、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得し（図２０及び図２２のＳ４１３）、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む処理を行う。
【００７５】
プロセッサコア１では、メモリ装置５のＯＳ２１用領域４４内にあるページテーブル５４を使用してＭＭＵ１８が動作しているため、ＯＳ２１のメモリダンプ実施部２９は、メモリ装置５のＯＳ２１用領域４４しかアクセスできないようになっている。
このため、メモリ装置５の内容を書き込む処理は、以下のようにして行われる。
まず、メモリダンプ実施部２９は、メモリ装置５の物理アドレス空間の先頭ページ（アドレス空間を一定のサイズ（一般的には４Ｋバイト）で区切った領域）が、ＯＳ２１用領域４４内に存在するかチェックする（図２２のＳ４１４）。
これは、ページテーブル５４を参照し、プロセッサコア１の論理アドレス空間に、所望の物理アドレスが含まれているか否かで判断される。
所望の物理アドレスが、ＯＳ２１用領域４４に含まれていない場合（図２２のＳ４１４でＮＯ）は、メモリダンプ実施部２９はマップ部５０に指示し、物理アドレス空間をプロセッサコア１の論理アドレス空間上（マップ領域７０）で参照可能にする（図２０及び図２２のＳ４１５）。
マップ部５０は、物理アドレス空間をプロセッサコア１の論理アドレス空間で参照できるように、ＭＭＵ１８が使用しているページテーブル５４を設定する。
なお、図２０では、先頭ページ及びＯＳ２２用領域４５をマップ領域７０に設定している例を示しているが、他の領域についても同様の処理を繰り返すと、メモリ装置５の全領域が参照可能となる。
所望の物理アドレスが、ＯＳ２１用領域４４に含まれている場合（図２２のＳ４１４でＹＥＳ）は、論理アドレス空間上で物理アドレスが既に参照可能になっているため、マップ部５０に指示は出さない。
ＯＳ２１用領域４４へのマップ（図２０及び図２２のＳ４１５）が完了した、または、既に参照可能になっている（図２２のＳ４１４でＹＥＳ）場合は、次にメモリダンプ実施部２９は、物理アドレス空間の先頭ページに対応する論理アドレス空間のページをダンプファイル２４に書き込む（図２０及び図２２のＳ４１６）。
そして、メモリダンプがメモリ装置５のすべての領域に対して行われたかチェック（図２２のＳ４１７）し、すべての領域に対して行われていない場合（図２２のＳ４１７でＮＯ）は、物理アドレス空間の次のページにてＳ４１４からＳ４１６の処理を行う。
メモリ装置５内のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータは破壊されているものの、メモリ装置５内のＯＳ２１用領域４４のメモリダンプ実施部２９０の動作には支障がないので、メモリダンプ実施部２９のメモリダンプは正常に終了する。
【００７６】
メモリダンプ実施部２９は、メモリ装置５の全ての領域に対してメモリダンプが終了すると（図２２のＳ４１７でＹＥＳ）、コア連携部３０に対し、メモリダンプ終了の通知を行う（図２０及び図２２のＳ４１８）。
コア連携部３０は、通知元であるプロセッサコア２に対し処理完了の通知を行う（図２０及び図２２のＳ４１９）。
この通知は、プロセッサコア２のコア連携部３６が受信する（図２１のＳ４２０）。
【００７７】
プロセッサコア２のコア連携部３６は、プロセッサコア１のコア連携部３０からの通知を受信すると、メモリダンプ異常検出部３７に処理完了の通知を行う（図２０及び図２１のＳ４２１）。
この通知を受けて、メモリダンプ異常検出部３７は、異常検出部３４に処理完了の通知を行う（図２０及び図２１のＳ４２２）。
通知を受けた異常検出部３４は、メモリ内容が保存されたことにより、装置を停止または再起動する（図２０及び図２１のＳ４２３）。
以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
【００７８】
実施の形態４によるメモリダンプ方式では、論理アドレス空間を物理アドレス空間に変換するＭＭＵを利用し、各プロセッサコアを論理アドレス空間で動作させ、そのプロセッサコアが動作しているＯＳが利用できる特定のメモリ領域だけを参照できるようにしている。
また、実施の形態４によるメモリダンプ方式では、１つのプロセッサコアに障害が発生し、そのプロセッサコア上で動作しているＯＳにて二次記憶装置にメモリ内容を保存している最中に、メモリダンプ実施部内にて異常が発生した時に、メモリダンプを実施しているプロセッサコアにて異常を検出した後、異常を検出したプロセッサコアが他のプロセッサコアにメモリダンプを指示し、指示を受けたプロセッサコア上のメモリダンプ実施部は、そのプロセッサコアが動作する論理アドレス空間に、そのプロセッサコアが参照できなかったメモリ領域を参照できるようにページテーブルを設定し、二次記憶装置にメモリ内容を保存する。
このため、実施の形態４によるメモリダンプ方式では、メモリダンプ処理中に障害が発生しても、メモリダンプを専用に処理するプロセッサコアを必要とせずに、メモリダンプが確実に実施できる。
【００７９】
以上、本実施の形態では、
各プロセッサコアは、メモリを分割して、各メモリを異なるアドレス空間として管理することができるＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を備え、以下の構成要素を含むメモリダンプ方式を説明した。
（１）各プロセッサコア上のＯＳに以下の構成要素を持つ。
（ａ）ＭＭＵを使って、メモリの特定の領域のみアクセス可能にする手段
（ｂ）障害発生時に、他メモリの内容をアクセス可能にする手段。
【００８０】
実施の形態５．
本実施の形態に係るメモリダンプ方式では、あるプロセッサコアにおいてメモリダンプ処理を行っている際に異常が発生した際に、障害が発生したプロセッサコアが別のプロセッサコアにメモリダンプを指示し、障害が発生したプロセッサコアが別プロセッサコアのメモリダンプを監視し、一定時間内にメモリダンプ処理が終了しない場合は、その別プロセッサコアを停止させ、もう１つの別のプロセッサコアにメモリダンプを指示する。
【００８１】
実施の形態５では、Ｈ／Ｗ構成は実施の形態１と同じであり、図１で示される。
図２３は、図１で示したＨ／Ｗ構成に対する、ソフトウェア（Ｓ／Ｗ）の構成例を示す図である。
実施の形態５では、他プロセッサコアにて実施されているメモリダンプ処理を監視するために、ＯＳ２１には監視部８０が、ＯＳ２２には監視部８１が、ＯＳ２３には監視部８２（不図示）がそれぞれ備わる。
また、メモリ装置５には、各プロセッサコアでのメモリダンプ処理にて、メモリダンプが動作し続けることを示すカウンタとして、ＯＳ２１用領域４４にカウンタ８３が、ＯＳ２２用領域４５にカウンタ８４が、ＯＳ２３用領域にカウンタ８５が、それぞれ備わる。
それ以外の構成は、実施の形態１と同じである。
なお、本実施の形態においても、コア連携部３０、コア連携部３６及びコア連携部４２は、それぞれ、障害検出部、メモリダンプ完了通知部及びメモリダンプ要求部の例に相当する。
また、本実施の形態においても、メモリダンプ異常検出部３１、メモリダンプ異常検出部３７及びメモリダンプ異常検出部４３は、メモリダンプ要求部の例に相当する。
【００８２】
次に、本実施の形態におけるメモリダンプ方式の障害発生時の動作について、図２４、図２５、図２６の矢印および図２７、図２８、図２９のフローチャートを用いて説明する。
なお、図２４、図２５、図２６では、作図上の理由から、プロセッサコア３、メモリ装置５内のＯＳ２３用領域４６、コンソール装置６の図示を省略している。
【００８３】
図２４〜図２９では、プロセッサコア２上で動作するＯＳ２２に障害が発生し、かつ、ＯＳ２２のメモリダンプ実施部３５のメモリ装置５上のコード・データであるＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていた場合の例を説明する。
【００８４】
まず、ＯＳ２２動作中に障害が発生すると、ＯＳ２２の異常検出部３４がその異常を検出する（図２７のＳ５０１）。
異常検出部３４は、異常の原因特定などの処理をした後、メモリダンプ実施部３５にメモリダンプの指示を出す（図２４及び図２７のＳ５０２）。
メモリダンプ指示を受けたメモリダンプ実施部３５は、メモリダンプ実施中に発生するプロセッサコア２の例外を、再度異常検出部３４が検出しない（検出すると、再度メモリダンプ指示が発生するので）ように、例外が発生した場合、メモリダンプ異常検出部３７が検出するようにプロセッサコア２を設定した後、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得する（図２４及び図２７のＳ５０３）。
次にメモリダンプ実施部３５は、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む（図２４及び図２７のＳ５０４）。
ここで、メモリ装置５のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータが破壊されていなければ、メモリダンプ実施部３５の動作に支障がないので、メモリダンプ実施部３５のメモリダンプ処理は正常に終了する。
【００８５】
しかし、メモリ装置５のＯＳ２２用領域４５のメモリダンプ実施部３５０のデータが破壊されていた場合、メモリダンプ実施部３５の動作は不定になり、不正命令実行や不正アクセスにより、プロセッサコア２上で例外が発生する。
プロセッサコア２上で例外が発生したことは、メモリダンプ異常検出部３７によって検出される（図２４及び図２７のＳ５０５）。
異常を検出すると、メモリダンプ異常検出部３７は、コア連携部３６に別プロセッサコアへの通知（メモリダンプの実施要求を含む通知）を指示する（図２４及び図２７のＳ５０６）。
メモリダンプ異常検出部３７から指示を受けたコア連携部３６は、送信すべきプロセッサコアを選択する。
本実施の形態ではプロセッサコア１に通知の送信を行う（図２４及び図２７のＳ５０７）。
プロセッサコア２のコア連携部３６は、プロセッサコア１を選択し、プロセッサコア１へ通知を行う。
この通知は、プロセッサコア１のコア連携部３０が受信する（図２９のＳ５０８）。
【００８６】
プロセッサコア１のコア連携部３０は、プロセッサコア２のコア連携部３６からの通知を受信すると、メモリダンプ実施部２９に対し、メモリダンプを指示する（図２５及び図２８のＳ５０９）。
メモリダンプ実施部２９は、バックアップメモリ装置８内にあるファイル情報格納領域２５からＨＤＤ装置７内にあるダンプファイル２４の位置情報を取得し（図２５及び図２８のＳ５１０）、取得した位置情報を元に、ＨＤＤ装置７内のダンプファイル２４にメモリ装置５の内容を書き込む。
この処理は、以下のようにして行われる。
まず、メモリダンプ実施部２９は、メモリ装置５の先頭から１ページ分（４ＫＢ）をダンプファイル２４に保存する（図２５及び図２８のＳ５１１）。
そしてメモリダンプ実施部２９は、メモリ装置５にあるＯＳ２１用領域４４のカウンタ８３を１加算する（図２５及び図２８のＳ５１２）。
次に、メモリダンプ実施部２９は、メモリダンプがメモリ装置５の全ての領域に対して終了したかチェックする（図２９のＳ５１３）。
まだメモリダンプが全ての領域に対して終了していない場合（図２９のＳ５１３でＮＯ）、メモリ装置５の次のページに対しメモリダンプを行い（図２５及び図２８のＳ５１１）、カウンタ８３を再度１加算する（図２５及び図２８のＳ５１２）。
これをメモリ装置５全体に対して実施する。
メモリダンプがメモリ装置５の全ての領域に対して終了した場合（図２９のＳ５１３でＹＥＳ）、プロセッサコア１は処理を終了する。
メモリ装置５内のＯＳ２２用領域４５内のメモリダンプ実施部３５０のデータは破壊されているものの、メモリ装置５内のＯＳ２１用領域４４のメモリダンプ実施部２９０の動作には支障がないので、メモリダンプ実施部２９のメモリダンプは正常に終了する。
【００８７】
Ｓ５０７にて、プロセッサコア２のコア連携部３６がプロセッサコア１への通知を行うと、プロセッサコア２のメモリダンプ異常検出部３７は監視部８１に監視の開始を通知する（図２６及び図２８のＳ５１４）。
通知を受けた監視部８１は、まず、一定時間経過したかチェックする（図２８のＳ５１５）。
一定時間が経過していなければ（Ｓ５１５でＮＯ）、監視部８１は、時間が経過するまで待つ。
Ｓ５１５にて一定時間が経過していることが判明した場合（Ｓ５１５でＹＥＳ）、監視部８１は、プロセッサコア１のメモリダンプ実施部２９が、Ｓ５１２にて更新しているメモリ装置５のＯＳ２１用領域４４内にあるカウンタ８３を参照し、値が更新されているかチェックする（図２６及び図２８のＳ５１６）。
カウンタ８３の内容は、プロセッサコア１のメモリダンプ実施部２９にて、１ページ分のメモリダンプを実施する毎に１加算するようになっているので、メモリダンプ実施部２９の動作に支障がなければ、監視部８１がカウンタを参照する毎に値は更新されている。
更新されている場合（Ｓ５１６でＹＥＳ）、監視部８１は、カウンタ８３の値から、メモリダンプが終了したかチェックする（図２８のＳ５１７）。
プロセッサコア１のメモリダンプ実施部２９では、１ページ（４ＫＢ）毎にカウンタ８３を１加算しているので、メモリ装置５全体でメモリダンプが実施されたときのカウンタ値は、
カウンタ８３の値＝メモリ実装量÷４ＫＢ
にて算出でき、カウンタ８３がこの値になった時、メモリダンプがメモリ装置５全体に対し終了したと判断することができる。
メモリ装置５全体に対し、まだメモリダンプが終了していない場合（Ｓ５１７でＮＯ）、Ｓ５１５に戻り、再度一定時間待って（Ｓ５１５）、カウンタ８３の値が更新されたかをチェックする（Ｓ５１６）。
Ｓ５１７にて、カウンタ８３の値が、メモリ装置５全体に対してメモリダンプを実施したことを意味する値になった時、監視部８１は、メモリダンプ異常検出部３７に、処理完了の通知を行う（図２６及び図２８のＳ５１８）。
通知を受けたメモリダンプ異常検出部３７は、異常検出部３４に処理完了の通知を行う（図２６及び図２８のＳ５１９）。
通知を受けた異常検出部３４は、メモリ内容が保存されたことにより、装置を停止または再起動する（図２６及び図２８のＳ５２０）。
【００８８】
Ｓ５１６にて、カウンタ８３の値が更新されていない場合（Ｓ５１６でＮＯ）、監視部８１は、メモリダンプ異常検出部３７にメモリダンプ処理が異常であることを意味する通知を行う（図２６のＳ５２２）。
メモリダンプ異常検出部３７は、異常情報をバックアップメモリ装置８内に保存するなどし、異常の記録をした後、プロセッサコア１の停止を行う（図２８のＳ５２１）。
これは、コア連携部３６を用い、通常のプロセッサコア間通信とは別系統の通知を行うことで、プロセッサコア１で停止指示が来たことを判断できるようにする。
メモリダンプ異常検出部３７は、これにより、プロセッサコア１のメモリダンプは正常にできなかったと判断し、Ｓ５０６に戻り、別のプロセッサコア（プロセッサコア３）に、コア連携部３６を介して、メモリダンプ指示を行う。
これにより、プロセッサコア３のメモリダンプ実施部４１にてメモリダンプが実施される。以上がこの実施の形態におけるメモリダンプ方式の障害発生時の動作である。
【００８９】
実施の形態５によるメモリダンプ方式では、各プロセッサコア上にて、他プロセッサコアのメモリダンプ処理を監視する監視部を設けるとともに、各プロセッサコアでのメモリダンプ処理中には、メモリダンプ処理が正常に動作していることを意味するカウンタを設け、監視部は、そのカウンタを一定時間毎に参照し、値が更新されていない場合、異常と判断し、別のプロセッサコアにメモリダンプを実施する。
このため、あるプロセッサコアにおけるメモリダンプ処理にて異常が発生し、別プロセッサコアにてメモリダンプを実施した際に、別プロセッサコアのメモリダンプ処理でもハングアップするような状態に陥るような状況になっても、メモリダンプが確実に実施できる、メモリダンプ方式を得ることができる。
【００９０】
以上、本実施の形態では、
各プロセッサコアに、以下の構成要素を含むメモリダンプ方式を説明した。
（１）各プロセッサコア上のＯＳに以下の構成要素を持つ。
（ａ）メモリ内に存在するカウンタ
（ｂ）メモリダンプ中に、カウンタを一定時間毎に更新する手段
（ｃ）二次記憶装置に保存する間に異常が発生し、他プロセッサコアにメモリダンプを通知した後、カウンタ値をチェックし、一定時間内に値が更新されない場合、別プロセッサコアにメモリダンプを通知する手段
【符号の説明】
【００９１】
１  プロセッサコア、２  プロセッサコア、３  プロセッサコア、４  バス、５  メモリ装置、６  コンソール装置、７  ＨＤＤ装置、８  バックアップメモリ装置、９  演算処理部、１０  演算処理部、１１  演算処理部、１２  キャッシュ、１３  キャッシュ、１４  キャッシュ、１５  プロセッサコア間通信機能、１６  プロセッサコア間通信機能、１７  プロセッサコア間通信機能、１８  ＭＭＵ、１９  ＭＭＵ、２０  ＭＭＵ、２１  ＯＳ、２２  ＯＳ、２３  ＯＳ、２４  ダンプファイル、２５  ファイル情報格納領域、２６  ＯＳ初期化部、２７  メモリダンプ設定部、２８  異常検出部、２９  メモリダンプ実施部、３０  コア連携部、３１  メモリダンプ異常検出部、３２  ＯＳ初期化部、３３  メモリダンプ設定部、３４  異常検出部、３５  メモリダンプ実施部、３６  コア連携部、３７  メモリダンプ異常検出部、４４  ＯＳ２１用領域、４５  ＯＳ２２用領域、４６  ＯＳ２３用領域、５０  マップ部、５１  マップ部、５４  ページテーブル、５５  ページテーブル、５６  ページテーブル、６０  監視部、６１  応答部、６３  カウンタ、６４  カウンタ、７０  マップ領域、７１  マップ領域、７２  マップ領域、８０  監視部、８１  監視部、８３  カウンタ、８４  カウンタ、８５  カウンタ、２９０  メモリダンプ実施部、３００  コア連携部、３５０  メモリダンプ実施部、３６０  コア連携部、４１０  メモリダンプ実施部、４２０  コア連携部。
【図１】
2012004854.tif 000003
【図２】
2012004854.tif 000004
【図３】
2012004854.tif 000005
【図４】
2012004854.tif 000006
【図５】
2012004854.tif 000007
【図６】
2012004854.tif 000008
【図７】
2012004854.tif 000009
【図８】
2012004854.tif 000010
【図９】
2012004854.tif 000011
【図１０】
2012004854.tif 000012
【図１１】
2012004854.tif 000013
【図１２】
2012004854.tif 000014
【図１３】
2012004854.tif 000015
【図１４】
2012004854.tif 000016
【図１５】
2012004854.tif 000017
【図１６】
2012004854.tif 000018
【図１７】
2012004854.tif 000019
【図１８】
2012004854.tif 000020
【図１９】
2012004854.tif 000021
【図２０】
2012004854.tif 000022
【図２１】
2012004854.tif 000023
【図２２】
2012004854.tif 000024
【図２３】
2012004854.tif 000025
【図２４】
2012004854.tif 000026
【図２５】
2012004854.tif 000027
【図２６】
2012004854.tif 000028
【図２７】
2012004854.tif 000029
【図２８】
2012004854.tif 000030
【図２９】
2012004854.tif 000031
【国際調査報告】
2012004854.tif 000032
2012004854.tif 000033
2012004854.tif 000034
2012004854.tif 000035