JP2009075992A - 情報処理装置のメモリダンプ採取方法 - Google Patents
情報処理装置のメモリダンプ採取方法 Download PDFInfo
- Publication number
- JP2009075992A JP2009075992A JP2007246480A JP2007246480A JP2009075992A JP 2009075992 A JP2009075992 A JP 2009075992A JP 2007246480 A JP2007246480 A JP 2007246480A JP 2007246480 A JP2007246480 A JP 2007246480A JP 2009075992 A JP2009075992 A JP 2009075992A
- Authority
- JP
- Japan
- Prior art keywords
- dump
- area
- storage device
- firmware
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】
情報処理システムのスタンドアロンダンプにおいて、ファームウェア、ローダ、システム制御プログラムのダンプデータの内容を、ただ一種類のダンププログラムが外部記憶装置に出力する。
【解決手段】
ダンプデータの領域情報を保持可能なメモリマップを設け、ダンプデータの領域情報をプログラムが自ら登録することで、情報処理装置のリセット以降に実行するファームウェアおよびダンププログラムがダンプデータを上書きせずに実行でき、ダンププログラムはメモリマップからダンプすべきメモリ領域の内容を外部記憶装置に出力する。
【選択図】 図2
情報処理システムのスタンドアロンダンプにおいて、ファームウェア、ローダ、システム制御プログラムのダンプデータの内容を、ただ一種類のダンププログラムが外部記憶装置に出力する。
【解決手段】
ダンプデータの領域情報を保持可能なメモリマップを設け、ダンプデータの領域情報をプログラムが自ら登録することで、情報処理装置のリセット以降に実行するファームウェアおよびダンププログラムがダンプデータを上書きせずに実行でき、ダンププログラムはメモリマップからダンプすべきメモリ領域の内容を外部記憶装置に出力する。
【選択図】 図2
Description
本発明は情報処理装置で実行するプログラムのダンプ技術に係り、特に情報処理装置のリセットが発生したときに主記憶装置上に保存されているダンプデータのメモリダンプ採取方法に関する。
情報処理システムの障害発生時における一般的なメモリダンプは、システム制御プログラムに実装されるパニックルーチンで行われる。パニックルーチンはシステム制御プログラムが処理を継続できないと判断したときに起動されるものであり、回復不可能なハードウェア障害のマシンチェック割込み、ダンプボタンの押下に引き続くINIT割込み、システム制御プログラムの不当割込み、などが引き金になる。情報処理システム運用中に発生する致命的障害のほとんどはパニックルーチンの採取したダンプデータで原因追及される。
ところが、プログラムが意図しない情報処理装置のリセットを引き起こす様な障害の場合は、システム制御プログラムに制御が移行しないためにパニックルーチンが実行できず、結果、メモリダンプが採取されなくなる。また、パニックルーチンは、2重障害と言われるパニックルーチン実行中の新たな障害に対するリカバリ機能を実装しないのが一般的であるため、2重障害が発生するとメモリダンプが採取できない。さらに、システム制御プログラムの初期設定時に情報処理装置の障害が発生すると、パニックルーチンが実行可能な状態になっていない場合もあり、このときにもメモリダンプは採取されない。
パニックルーチンによるダンプ採取の問題を解決する手法として、主記憶装置上に保存されているデータを情報処理システムのリブート処理の過程でダンプするスタンドアロンダンプが知られている。スタンドアロンダンプならば、ハードウェアの一時的な障害はリセットされるのでダンプ採取に成功するケースは高まる。この様なことから、スタンドアロンダンプはメモリダンプを確実に採取する方法して有効なものである。ところが、情報処理システムの社会的重要度が高まっている状況であっても未だに、パーソナルコンピュータを代表とする情報処理システムではスタンドアロンダンプが実装されていないのが実情である。
第1の従来技術のスタンドアロンダンプは特許文献1に示されている。ここでは、通常運用では使用されないシステムダンプ採取プログラム専用のメモリ領域を予め確保しておき、ダンプ対象のアドレスとサイズをダンプリストに予め登録しておき、情報処理装置のリセット後にはシステムダンプ採取プログラムがシステムダンプ採取プログラム専用のメモリ領域で実行する方式を述べている。この方法は比較的規模が小さくてダンプ領域のアドレスとサイズを予め求めることが容易である情報処理システムには適用可能であるが、規模が大きい近年の情報処理システムには適用困難である。
第2の従来技術が特許文献2に示されている。ここには、通常運用では使用しないメモリ領域を使ってオペレーティングシステムを再起動し、その後で障害発生直前に使用していたメモリ領域をダンプする方法が述べられている。メモリ領域を2面持つ目的は、ダンプ採取を待たずにシステム運用を再開させることにある。この方式は、複数オペレーティングシステムを共存し得る情報処理システムで実現できるものであり、単一オペレーティングシステムの情報処理システムに広く適用できるわけではない。
第3の従来技術が特許文献3に示されている。ここには、メモリを通常使用領域とリザーブ領域の2つ分け、障害を起因とする情報処理装置のリセットのときには使用するメモリ領域を切り替えてシステムを運用する。メモリ領域を2面持つ目的は、ダンプ採取を待たずにシステム運用を再開することにある。しかし、メモリ領域のアドレスとサイズは予め決めておく必要がある。
第4の従来技術が特許文献4で示されている。ここで示されるスタンドアロンダンプでは、情報処理装置の実行モードをシステム運用モードとダンプ運用モードの2つに分け、ブートファームウェアがシステム運用モードとダンプ運用モードとでオペレーティングシステムが使用するメモリ領域を分離し、ダンプ運用モードのメモリ領域で実行するダンププログラムがシステム運用モードのときの領域をダンプする。
第5の従来技術が特許文献5で示されている。ここで示されるスタンドアロンダンプでは、ハードウェアレベルでメモリを2面実装し、システム運用中は両方のメモリを更新し、障害発生時は一方のメモリを使って動作しながらもう一方のメモリをダンプすると言うものである。
従来のスタンドアロンダンプ方式には以下に示す問題があった。
1)情報処理装置のリセットが発生する様な障害で全メモリをダンプする必要性は低く、オペレーティングシステムのカーネルに関するメモリ領域のダンプデータでも十分原因追求に役立つ。しかしながら、従来技術ではカーネルに関するメモリ領域のアドレスとサイズを確実に取得する手段がない。このことが、全てのメモリをダンプすることになっている1つの原因でもある。
2)情報処理システムではファームウェアで実装する機能が拡大しているため、ファームウェアに適用可能なスタンドアロンダンプの要求が高まってきている。しかし、従来技術のほとんどは、情報処理装置のリセット以降の処理でファームウェア領域を上書きしてしまう。メモリを完全に2重化する方式もあるが、ハードウェアレベルでの実装であるためにコスト面で適用する情報処理装置は限られる。
本発明は、上記実情に鑑みてなされたものであり、ローダおよびシステム制御プログラムが本当に必要なそれぞれのダンプ領域の領域情報をファームウェアとダンププログラムに確実に伝える手段と、ファームウェアのダンプ領域情報をダンププログラムに確実に伝える手段と、を提供することにある。
本発明のスタンドアロンダンプ方式は、情報処理システムを構成するファームウェア、ローダ、システム制御プログラム、ダンププログラムがメモリマップを介して互いにダンプデータの領域情報を共有可能とする。そうすることで、ローダとシステム制御プログラムはダンプデータの領域情報をメモリマップに登録するだけになり、ファームウェアとダンププログラムはメモリマップからダンプすべきメモリ領域を判断できる。
ファームウェア領域のデータをダンプするには、ファームウェアがメモリマップを参照して上書き可能なメモリ領域を見つけ出し、その領域にファームウェア領域のデータをコピーし、コピー先の領域をメモリマップに登録すればよい。このとき、情報処理装置のリセット直後に実行するシステムファームウェアは必ず固定メモリ領域を必要とする様に設計されているため、ファームウェア領域のデータをコピーする時点においてはリセット直前のファームウェア領域の一部は上書きされてしまう可能性がある。しかし、この領域は十分小さく、ファームウェアのスタンドアロンダンプの有効性を否定するものにはならない。
スタンドアロンダンプが終了した後にはダンプデータの領域を再利用できるように開放する必要があるが、これはメモリマップに登録されているダンプデータの領域情報を削除すればよい。
本発明によれば、ファームウェア、ローダ、システム制御プログラムのそれぞれのスタンドアロンダンプが、ただ一種類のダンププログラムによって実現され、さらに、システム制御プログラムの種類にもバージョンにも左右されることがないので、ダンププログラムをROMに格納することが可能になる。これによって、プログラムに依存しないスタンドアロンダンプ機能を実装するところの情報処理装置が提供可能になる。
以下、本発明の一実施形態を図1から図4に基づいて説明する。
図1は、本発明の実施例に係る構成の主要部の例を示す構成図である。
図1は、本発明の実施例に係る構成の主要部の例を示す構成図である。
情報処理装置100は主記憶装置101、ROM102、プロセッサ103、I/Oデバイス104を有し、ケーブル105を介して外部記憶装置106と接続している。外部記憶装置106はネットワーク上にあっても情報処理装置100の内部にあってもよい。主記憶装置101はシステムファームウェア200、ブートファームウェア201、ダンププログラム203、ローダ204、システム制御プログラム205、ダンプデータ206を記憶する。ROMにはシステムファームウェア200、ブートファームウェア201の主記憶装置101上にロードされる前のオブジェクトコードが格納されている。外部記憶装置106にはダンププログラム203、ローダ204、システム制御プログラム205の主記憶装置101上にロードされる前のオブジェクトコードが格納されている。また、外部記憶装置105はダンププログラム203が採取したダンプデータを格納できる。
情報処理装置100の電源が入ると、ROM102上のシステムファームウェア107が最初に起動する。システムファームウェア107は、主記憶装置101の初期化を行った後にシステムファームウェア200の領域を決定し、この領域にシステムファームウェア200のコードを展開する。これ以後は、主記憶装置上でシステムファームウェア200が実行し、メモリマップ202を作成した後にROM102を読み出してブートファームウェア201のコードを主記憶装置101上に展開し、起動する。
ブートファームウェア201は、メモリマップ202に基づいて、主記憶装置101上の利用可能な領域にローダ204をロードし、起動する。ローダ204はシステム制御プログラム205をロードし、起動する。最後に起動されたシステム制御プログラム205は、システム構成情報やトレースデータをダンプデータ206に格納ながら、各種サービスを提供する。
図2は、本発明の実施例に係るメモリマップの構造を示している。メモリマップ202は、メモリマップアドレス210がポイントするところの主記憶装置101上に存在し、1つ以上のメモリマップエントリ212から成る。1つのメモリマップエントリ212は主記憶装置101上の1つの領域に一対一に対応するものであり、メモリタイプ213、物理アドレス214、仮想アドレス215、ページサイズ216、属性217でその領域がどの様な種類のものであるかを明示する。
メモリタイプ213は領域の種類を表すものであり、メモリタイプコード5(220)とメモリタイプコード6(221)はシステムファームウェア領域を、メモリタイプコード8(222)は利用可能な領域を、メモリタイプコード13(223)はシステムファームウェアのコア領域を、メモリタイプコード14(224)はシステムファームウェア200のダンプデータ領域を、メモリタイプコード15(225)はローダ204またはシステム制御プログラム205のシステムダンプデータ領域を、それぞれ明示できる。メモリマップ内には、同一メモリタイプ213を持つ複数のメモリマップエントリがあってもよい。
ローダ204は、システムファームウェア200が提供するファームウェア関数を用いて、ローダ204の一部あるいは全ての領域をシステムダンプデータ領域(メモリタイプコード15)としてメモリマップに登録する。同様に、システム制御プログラム205も、システムファームウェア200が提供するファームウェア関数を用いて、システム制御プログラム205の一部の領域をシステムダンプデータ領域(メモリタイプコード15)としてメモリマップに登録する。メモリマップ202の内容をローダ204およびシステム制御プログラム205が直接変更する方法も考えられるが、ファームウェア関数を用いる方がより安全である。
メモリタイプコード15のメモリマップエントリ212がメモリマップ202に登録された状態で情報処理装置100にリセットが要求されると、システムファームウェア200とブートファームウェア201は、スタンドアロンダンプを採取するに必要な処理を遂行する。
次に、情報処理装置がリセットされたときの本実施例におけるスタンドアロンダンプの採取手順について説明する。図3は、本発明の実施例に係わるスタンドアロンダンプの採取手順を説明するためのフローチャートである。
情報処理装置がリセットされると、システムファームウェアはプロセッサの各種レジスタを初期化する(ステップ300)。その後、ステップ301でメモリテストを行うが、このとき、システムダンプデータ領域を示すメモリマップエントリが存在するならば、当該領域はメモリテスト対象から外される(ステップ301)。システムファームウェアはROMに格納されているブートファームウェアのオブジェクトを主記憶装置に展開し、ブートファームウェアに制御を移行する(ステップ302)。このとき、ブートファームウェアにはメモリマップの先頭アドレスが渡される。
ブートファームウェアは、システムダンプデータ領域を示すメモリマップエントリがメモリマップ内に存在するかチェックし(ステップ310)、それが存在するならば外部記憶装置からダンププログラムをロードし、起動する。このとき、ダンププログラムにはメモリマップの先頭アドレスが渡される。ダンププログラムはダンプデータ領域のデータを外部記憶装置に出力する(ステップ311)。ブートファームウェアはダンププログラムの完了コードからダンプ採取が成功したかを判断し(ステップ312)、もし、リターンコードが成功を示すものであるならば、システムファームウェア関数を用いてシステムダンプ領域を示すメモリマップエントリを開放する(ステップ313)。ダンププログラムのリターンコードが失敗を示すものであるならば、ステップ314でオペレータの介入要求処理を行い、その後にステップ311に分岐する。
ブートファームウェアは上記ステップの処理を完了すると、外部記憶装置からローダをロードし、ローダを起動する(ステップ320)。
図4は、本発明の実施例のファームウェアダンプ領域に係わるシステムファームウェア処理を説明するためのフローチャートである。
情報処理装置がリセットされると、システムファームウェアはステップ300のプロセッサの初期化後に、メモリマップのアドレスを取得する(ステップ400)。メモリマップのアドレスを記憶するデータのアドレスは、ファームウェアが予め決めてある。システムファームウェアは、メモリマップからメモリタイプコード5(220)とメモリタイプコード6(221)を持つメモリマップエントリを検索し、メモリエントリに記憶されているページサイズを加算し、これをシステムファームウェアサイズとして記憶する(ステップ401)。
次に、システムファームウェアサイズを上回るページサイズを持つところの再利用可能領域(メモリタイプコード222)のメモリマップエントリを探し出す(ステップ402)。もし、これを満たすメモリマップエントリが見つかれば、再利用可能領域からシステムファームウェアサイズ分の領域を確保する(ステップ403)。確保した領域をファームウェアダンプデータ領域(メモリタイプコード14)としてメモリマップを再編成する(ステップ404)。そして、システムファームウェアダンプデータ領域にシステムファームウェアのコード領域およびデータ領域の内容をコピーする(ステップ405)。その後、ステップ301でダンプ領域を除くメモリテストを行う。前記コピーされた内容は、ステップ311によって、外部記憶装置に出力される。
100 情報処理装置
101 主記憶装置
102 ROM(Read Only Memory)
103 プロセッサ
104 I/Oデバイス
105 I/Oケーブルケーブル
106 外部記憶装置
107 ROM上のシステムファームウェア
200 システムファームウェア
201 ブートファームウェア
202 メモリマップ
203 ダンププログラム
204 ローダ
205 システム制御プログラム
206 ダンプデータ
101 主記憶装置
102 ROM(Read Only Memory)
103 プロセッサ
104 I/Oデバイス
105 I/Oケーブルケーブル
106 外部記憶装置
107 ROM上のシステムファームウェア
200 システムファームウェア
201 ブートファームウェア
202 メモリマップ
203 ダンププログラム
204 ローダ
205 システム制御プログラム
206 ダンプデータ
Claims (7)
- システムファームウェアがブートファームウェアを主記憶装置にロードし、ブートファームウェアがローダを主記憶装置にロードし、ローダがシステム制御プログラムを主記憶装置にロードし、システム制御プログラムが各種サービスを提供する情報処理装置のメモリダンプ採取方法において、
システムファームウェアが主記憶装置の各領域の領域情報を登録するメモリマップを作成し、ローダ又はシステム制御プログラムがダンプ対象の領域情報を前記メモリマップに登録し、情報処理装置がリセットされた場合にローダがダンププログラムを主記憶装置にロードし、ダンププログラムが前記メモリマップに登録されているダンプ対象のデータを外部記憶装置に出力することを特徴とする情報処理装置のメモリダンプ採取方法。 - 情報処理装置がリセットされた場合にシステムファームウェアが当該システムファームウェアのダンプ領域を確保し、確保した領域をダンプ領域としてメモリマップに登録し、当該システムファームウェア領域のデータを前記確保されたダンプ領域にコピーすることを特徴とする請求項1記載の情報処理装置のメモリダンプ採取方法。
- ローダ、システム制御プログラム、及びダンププログラムが外部記憶装置に格納されていることを特徴とする請求項1記載の情報処理装置のメモリダンプ採取方法。
- ROMに格納されたシステムファームウェアが当該システムファームウェアを主記憶装置にロードし、ロードされたシステムファームウェアがROMに格納されたブートファームウェアを主記憶装置にロードし、ロードされたブートファームウェアがローダを外部記憶装置から主記憶装置にロードし、ロードされたローダがシステム制御プログラムを外部記憶装置から主記憶装置にロードし、ロードされたシステム制御プログラムが各種サービスを提供する情報処理装置のメモリダンプ採取方法において、
システムファームウェアが主記憶装置の各領域の領域情報を登録するメモリマップを作成し、ローダ又はシステム制御プログラムがダンプ対象の領域情報を前記メモリマップに登録し、情報処理装置がリセットされた場合にローダがダンププログラムを外部記憶装置から主記憶装置にロードし、ロードされたダンププログラムが前記メモリマップに登録されているダンプ対象のデータを外部記憶装置に出力することを特徴とする情報処理装置のメモリダンプ採取方法。 - 主記憶装置、プロセッサ、ROMを有する情報処理装置の電源投入後に、ROMに格納されたシステムファームウェアが起動し、起動されたシステムファームウェアが主記憶装置の初期化を行った後にシステムファームウェア領域を決定し、当該領域にシステムファームウェアをロードし、ロードされたシステムファームウェアがROMに格納されたブートファームウェアを主記憶装置にロードし、ロードされたブートファームウェアがローダを外部記憶装置から主記憶装置にロードし、ロードされたローダがシステム制御プログラムを外部記憶装置から主記憶装置にロードして起動し、起動されたシステム制御プログラムが各種サービスを提供する情報処理装置のメモリダンプ採取方法において、
情報処理装置の電源投入後に、システムファームウェアが主記憶装置の各領域の領域情報を登録するためのメモリマップを作成し当該システムファームウェア領域を前記メモリマップに登録し、ローダがローダの少なくとも一部の領域をダンプ領域として前記メモリマップに登録し、システム制御プログラムがシステム制御プログラムの少なくとも一部の領域をダンプ領域として前記メモリマップに登録し、その後システム制御プログラムが各種サービスを提供している際に、情報処理装置がリセットされると、システムファームウェアはプロセッサを初期化し、前記メモリマップに登録されたダンプ領域を除く主記憶装置をテストした後、ブートファームウェアを主記憶装置にロードして起動し、起動されたブートファームウェアは前記メモリマップにダンプ領域が登録されている場合にはダンププログラムを外部記憶装置から主記憶装置にロードして起動し、起動されたダンププログラムは前記メモリマップに登録されているダンプ対象のデータを外部記憶装置に出力することを特徴とする情報処理装置のメモリダンプ採取方法。 - 情報処理装置がリセットされ、システムファームウェアがプロセッサを初期化した後、システムファームウェアはメモリマップに登録されたシステムファームウェア領域情報からシステムファームウェアサイズを算出し、算出したサイズ分の領域をダンプ領域として確保し、確保した領域をシステムファームウェアダンプ領域としてメモリマップに登録し、当該システムファームウェアダンプ領域にシステムファームウェアをコピーすることを特徴とする請求項5記載の情報処理装置のメモリダンプ採取方法。
- メモリダンプ採取後にメモリマップに登録されたダンプ領域情報を開放し、引き続いてローダおよびシステム制御プログラムをロードすることを特徴とする請求項1又は2いずれか記載の情報処理装置のメモリダンプ採取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007246480A JP2009075992A (ja) | 2007-09-25 | 2007-09-25 | 情報処理装置のメモリダンプ採取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007246480A JP2009075992A (ja) | 2007-09-25 | 2007-09-25 | 情報処理装置のメモリダンプ採取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009075992A true JP2009075992A (ja) | 2009-04-09 |
Family
ID=40610873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007246480A Pending JP2009075992A (ja) | 2007-09-25 | 2007-09-25 | 情報処理装置のメモリダンプ採取方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009075992A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489932B2 (en) | 2009-07-06 | 2013-07-16 | Nec Corporation | Server system and crash dump collection method |
JP2020135240A (ja) * | 2019-02-15 | 2020-08-31 | 株式会社リコー | 情報処理装置、制御方法、およびプログラム |
-
2007
- 2007-09-25 JP JP2007246480A patent/JP2009075992A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489932B2 (en) | 2009-07-06 | 2013-07-16 | Nec Corporation | Server system and crash dump collection method |
JP2020135240A (ja) * | 2019-02-15 | 2020-08-31 | 株式会社リコー | 情報処理装置、制御方法、およびプログラム |
JP7283108B2 (ja) | 2019-02-15 | 2023-05-30 | 株式会社リコー | 情報処理装置、制御方法、およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9792105B2 (en) | Method and system for booting and automatically updating software, and recovering from update error, and computer readable recording medium storing method | |
US7774636B2 (en) | Method and system for kernel panic recovery | |
JPH03278126A (ja) | 計算機システム立上げ方式 | |
KR101636870B1 (ko) | 최소 부트 이미지의 생성 방법 및 장치 | |
JP5783809B2 (ja) | 情報処理装置、起動方法およびプログラム | |
US20070174689A1 (en) | Computer platform embedded operating system backup switching handling method and system | |
JP2006072997A (ja) | 高速再起動を伴うメモリダンプ生成 | |
TWI441081B (zh) | 更新韌體方法與開機方法及使用其之電子裝置 | |
US20130061090A1 (en) | Partial rebooting recovery apparatus and method | |
US7308547B2 (en) | Apparatus and method for control of write filter | |
US20090164743A1 (en) | Information processing apparatus and data recovering method | |
CN113254048B (zh) | 引导程序更新方法、装置、设备及计算机可读介质 | |
JP2005301639A (ja) | Osの障害対応方法およびそのプログラム | |
CN110874237A (zh) | 软件升级方法、装置、终端以及可读存储介质 | |
JP2007058699A (ja) | 情報処理装置、情報処理装置制御プログラム、情報処理装置制御方法 | |
JP2009075992A (ja) | 情報処理装置のメモリダンプ採取方法 | |
JPH10307726A (ja) | 起動エラー時におけるファームウェアリカバリ方式 | |
JP7180542B2 (ja) | 情報処理装置および情報処理方法 | |
US7210033B1 (en) | Method, system, and computer-readable medium for enabling multi-segmented recovery of basic input output system program code in a computer system | |
JP2011150383A (ja) | ファームウェア書き込み方法 | |
JP2005228225A (ja) | メモリカードアダプタ | |
JP2009054116A (ja) | メモリシステムおよび情報処理装置 | |
JP2006053848A (ja) | 情報処理装置およびプログラム更新方法 | |
JP2010102441A (ja) | 情報処理装置、情報処理プログラム | |
JP2000259452A (ja) | 記憶領域管理方法及び装置 |