(57)【要約】      （修正有）【課題】オペレーティングシステムの起動処理の早期においてメモリダンプ処理を行えるコンピュータ起動方法及びコンピュータを提供する。【解決手段】コンピュータ起動方法は、ブートローダの処理において、メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡し、オペレーティングシステムの起動処理中のいずれかのタイミングにおいて、上記ロード位置に基づいて上記プログラムを起動する処理を含む。【選択図】図６
2019032610.tif 000002
【特許請求の範囲】
【請求項１】
ブートローダの処理において、メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡し、
前記オペレーティングシステムの起動処理中のいずれかのタイミングにおいて、前記ロード位置に基づいて前記プログラムを起動する
処理を含み、コンピュータにより実行されるコンピュータ起動方法。
【請求項２】
更に、
前記オペレーティングシステムの前記起動処理において、前記プログラムを作成し、作成した前記プログラムの格納位置を不揮発性の記憶媒体に書き込み、
前記ブートローダの処理において、前記記憶媒体から前記プログラムの前記格納位置を読み取る
処理を含む請求項１記載のコンピュータ起動方法。
【請求項３】
前記タイミングは、割込みイベントが発生した時点である
請求項１又は２記載のコンピュータ起動方法。
【請求項４】
前記タイミングは、エラーを検出した時点である
請求項１又は２記載のコンピュータ起動方法。
【請求項５】
メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡す処理を含むブートローダと、
自らの起動処理中のいずれかのタイミングにおいて、前記ロード位置に基づいて前記プログラムを起動する処理を含む前記オペレーティングシステムと
を記憶する媒体を有するコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリダンプを生成する技術に関する。
【背景技術】
【０００２】
例えば、コンピュータが動作不良に陥った場合に、プログラムを解析するためにメモリダンプを採ることがある。
【０００３】
ＯＳ（Operating System）の起動処理において動作不良が生じることがある。この場合でも、メモリダンプを採れれば原因の究明や対策の検討に役立つ。
【０００４】
具体的には、ＯＳの起動処理中にメモリダンプを採ろうとするタイミングで、メモリにロードされたダンプ生成プログラムを起動することによって、メモリの内容がファイルに記録される。つまり、先にダンプ生成プログラムをメモリにロードしておくことが条件となる。
【０００５】
しかし、ダンプ生成プログラムのロード自体もＯＳの起動処理において行われるので、未だダンプ生成プログラムがロードされていない早い段階では、メモリダンプを採ることができない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１３７６３０号公報
【特許文献２】特開２０１１−２３２９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、一側面では、オペレーティングシステムの起動処理の早期においてメモリダンプ処理を行えるようにすることである。
【課題を解決するための手段】
【０００８】
一態様に係るコンピュータ起動方法は、（Ａ）ブートローダの処理において、メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡し、（Ｂ）オペレーティングシステムの起動処理中のいずれかのタイミングにおいて、上記ロード位置に基づいて上記プログラムを起動する処理を含む。
【発明の効果】
【０００９】
一側面としては、オペレーティングシステムの起動処理の早期においてメモリダンプ処理を行えるようになる。
【図面の簡単な説明】
【００１０】
【図１】図１は、コンピュータの起動時におけるダンプ生成シーケンスの従来例を示す図である。
【図２】図２は、ブートローダのロードの様子を示す図である。
【図３】図３は、ＯＳのロードの様子を示す図である。
【図４】図４は、ダンプ生成プログラムのロードの様子を示す図である。
【図５】図５は、従来技術においてダンプファイルを生成できない例を示す図である。
【図６】図６は、本実施の形態におけるダンプ生成シーケンスを示す図である。
【図７】図７は、ブートローダのロードの様子を示す図である。
【図８】図８は、ダンプ生成プログラムのロードの様子を示す図である。
【図９】図９は、ＯＳのロードの様子を示す図である。
【図１０】図１０は、ブートローダのモジュール構成例を示す図である。
【図１１】図１１は、ブートローダの処理フローを示す図である。
【図１２】図１２は、ブートローダの処理フローを示す図である。
【図１３】図１３は、ブートローダの処理フローを示す図である。
【図１４】図１４は、ＯＳのモジュール構成例を示す図である。
【図１５】図１５は、ＯＳの処理フローを示す図である。
【図１６】図１６は、作成処理フローを示す図である。
【図１７】図１７は、割込みハンドラの処理フローを示す図である。
【図１８】図１８は、エラー対応処理フローを示す図である。
【図１９】図１９は、ダンプ生成プログラムの処理フローを示す図である。
【図２０】図２０は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
図１に、コンピュータの起動時におけるダンプ生成シーケンスの従来例を示す。コンピュータの電源が投入されると、ＢＩＯＳ（Basic Input/Output System）１０１が処理を開始する。ＢＩＯＳ１０１は、まずデバイスを初期化する（Ｓ１１１）。続いて、ＢＩＯＳ１０１は、図２に示すように、ハードディスクドライブ２０１に格納されているブートローダ１０３をメインメモリ２０３にロードする（Ｓ１１３）。そして、ＢＩＯＳ１０１は、ブートローダ１０３を起動する（Ｓ１１５）。
【００１２】
尚、ＯＳ１０５がインストールされた時点で、図２に示したダンプ生成プログラム１０７は存在しない。ＯＳ１０５が最初に起動されたときに、ＯＳ１０５によってダンプ生成プログラム１０７が作成され、ハードディスクドライブ２０１に格納される。
【００１３】
図１の説明に戻る。ブートローダ１０３は、処理を開始すると（Ｓ１２１）、図３に示すように、ハードディスクドライブ２０１にファイル形式で格納されているＯＳ１０５をメインメモリ２０３にロードする（Ｓ１２３）。そして、ブートローダ１０３は、ＯＳ１０５を起動する（Ｓ１２５）。
【００１４】
ＯＳ１０５は、起動処理を開始する（Ｓ１３１）。当該起動処理は、ＯＳ１０５の初期化処理又はＯＳ１０５の初期処理ということもある。起動処理において、ＯＳ１０５は、ファイルシステムを準備する（Ｓ１３３）。
【００１５】
ＯＳ１０５は、ダンプ生成プログラム１０７が存在しない場合、つまりＯＳ１０５がインストールされた後の初回起動の際に、ダンプ生成プログラム１０７を作成する（Ｓ１３５）。一方、ＯＳ１０５は、ダンプ生成プログラム１０７が存在する場合、つまり２回目以降の起動の際には、ダンプ生成プログラム１０７を作成しない。
【００１６】
ＯＳ１０５は、図４に示すように、ハードディスクドライブ２０１にファイル形式で格納されているダンプ生成プログラム１０７をメインメモリ２０３にロードする（Ｓ１３７）。
【００１７】
ダンプ生成プログラム１０７がロードされた後に、ＯＳ１０５がエラー発生又は外部割込みを検出すると（Ｓ１３９）、ＯＳ１０５は、ダンプ生成プログラム１０７を起動する（Ｓ１４１）。
【００１８】
ダンプ生成プログラム１０７は、ダンプ生成処理を開始し（Ｓ１５１）、メインメモリ２０３から採取したデータを記録したダンプファイルを生成する（Ｓ１５３）。
【００１９】
このように、従来技術では、ＯＳ１０５のファイルシステムによってダンプ生成プログラム１０７が読み出され、メインメモリ２０３にロードされる。そして、ダンプ生成プログラム１０７がロードされている状態で、ＯＳ１０５がダンプ生成プログラム１０７を起動することができる。
【００２０】
上述した従来技術では、ファイルシステムの準備が完了していない段階では、ダンプ生成プログラム１０７がロードされない。図５に示すように、ＯＳ１０５がファイルシステムを準備していない段階では、エラー発生又は外部割込みを検出したとしても（Ｓ５０１）、ＯＳ１０５は、ダンプ生成プログラム１０７を起動できない。つまり、ＯＳ１０５における起動処理の早期におけるメモリダンプを行えない。尚、図５に示したＳ１１１乃至Ｓ１３１の処理は、図１の場合と同様である。
【００２１】
本実施の形態では、ブートローダ１０３においてダンプ生成プログラム１０７をロードすることによって、ＯＳ１０５における起動処理の早い段階においてメモリダンプを生成できるようにする。
【００２２】
図６に、本実施の形態におけるダンプ生成シーケンスを示す。コンピュータの電源が投入されると、ＢＩＯＳ１０１が処理を開始する。ＢＩＯＳ１０１は、まずデバイスを初期化する（Ｓ６１１）。続いて、ＢＩＯＳ１０１は、図７に示すように、ハードディスクドライブ２０１に格納されているブートローダ１０３をメインメモリ２０３にロードする（Ｓ６１３）。そして、ＢＩＯＳ１０１は、ブートローダ１０３を起動する（Ｓ６１５）。
【００２３】
本実施の形態では、図７に示すように、ダンプ生成プログラム１０７が格納される時点でパスファイル７０１も格納される。パスファイル７０１には、ファイルシステムにおけるダンプ生成プログラム１０７の格納位置を特定するパスが設定されている。
【００２４】
ブートローダ１０３は、処理を開始すると（Ｓ６２１）、図８に示すように、ハードディスクドライブ２０１にファイル形式で格納されているダンプ生成プログラム１０７をメインメモリ２０３にロードする（Ｓ６２３）。このとき、ブートローダ１０３は、パスファイル７０１を参照する。
【００２５】
その後、ブートローダ１０３は、図９に示すように、ハードディスクドライブ２０１にファイル形式で格納されているＯＳ１０５をメインメモリ２０３にロードする（Ｓ６２５）。そして、ブートローダ１０３は、ＯＳ１０５を起動する（Ｓ６２７）。
【００２６】
本実施の形態において、呼び出されたＯＳ１０５は、起動処理を実行する前に所定処理（以下、前処理という。）を実行する（Ｓ６３１）。前処理については、図１５を用いて後述する。
【００２７】
前処理を終えると、ＯＳ１０５は、起動処理を開始する（Ｓ６３３）。この例では、ファイルシステムが準備される前に、ＯＳ１０５は、エラー発生又は外部割込みを検出するものとする（Ｓ６３５）。ＯＳ１０５は、この段階で既にロードされているダンプ生成プログラム１０７を起動する（Ｓ６３７）。
【００２８】
そして、ダンプ生成プログラム１０７は、ダンプ生成処理を開始し（Ｓ６４１）、ダンプファイルを生成する（Ｓ６４３）。
【００２９】
本実施の形態では、ＯＳ１０５が、パスファイル７０１を介してハードディスクドライブ２０１におけるダンプ生成プログラム１０７の格納位置をブートローダ１０３へ伝える。更に、ブートローダ１０３が、メモリマップを用いてメインメモリ２０３におけるダンプ生成プログラム１０７のロード位置をＯＳ１０５へ伝える。メモリマップに関する処理については、後述する。以上で、本実施の形態における概要の説明を終える。
【００３０】
続いて、ブートローダ１０３の動作について説明する。図１０に、ブートローダ１０３のモジュール構成例を示す。ブートローダ１０３は、取得モジュール１００１、ロードモジュール１００３、呼び出しモジュール１００５及び引渡モジュール１００７を有している。取得モジュール１００１、ロードモジュール１００３、呼び出しモジュール１００５及び引渡モジュール１００７は、いずれもソフトウエアモジュールである。
【００３１】
取得モジュール１００１は、ＢＩＯＳ１０１からメモリマップを取得する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる取得モジュール１００１とによって、機能要素である取得部が実現される。
【００３２】
ロードモジュール１００３は、ダンプ生成プログラム１０７をロードする処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させるロードモジュール１００３とによって、機能要素であるロード部が実現される。
【００３３】
呼び出しモジュール１００５は、ＯＳ１０５を呼び出す処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる呼び出しモジュール１００５とによって、機能要素である呼び出し部が実現される。
【００３４】
引渡モジュール１００７は、メモリマップをＯＳ１０５に引き渡す処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる引渡モジュール１００７とによって、機能要素である引渡部が実現される。
【００３５】
図１１に、ブートローダ１０３の処理フローを示す。取得部は、ＢＩＯＳ１０１からメモリマップを取得する（Ｓ１１０１）。メモリマップは、メインメモリ２０３にロードされているプログラム又はデータの名前と、ロード位置（ロード領域の先頭アドレスを含む）との組を含んでいる。
【００３６】
ロード部は、所定の格納位置に格納されているパスファイル７０１を読み（Ｓ１１０３）、当該パスファイル７０１にダンプ生成プログラム１０７の格納先パスが設定されているか否かを判定する（Ｓ１１０５）。パスファイル７０１にダンプ生成プログラム１０７の格納先パスが設定されていない場合には、ダンプ生成プログラム１０７のロードは行われない。従って、端子Ａを介して図１２に示したＳ１２０１の処理に移る。図１２の処理については、後述する。
【００３７】
一方、パスファイル７０１にダンプ生成プログラム１０７の格納先パスが設定されていると判定した場合には、ロード部は、格納先パスで特定されるファイルが存在するか否かを判定する（Ｓ１１０７）。格納先パスで特定されるファイルが存在しない場合には、ダンプ生成プログラム１０７のロードは行われない。従って、端子Ａを介して図１２に示したＳ１２０１の処理に移る。
【００３８】
一方、格納先パスで特定されるファイルが存在すると判定した場合には、ロード部は、格納先パスで特定されるファイルが真正のダンプ生成プログラム１０７であるか否かを判定する（Ｓ１１０９）。例えば、ロード部は、格納先パスで特定されるファイルの所定位置に、ダンプ生成プログラム１０７であることを示す識別コードが設定されている場合に、当該ファイルが真正のダンプ生成プログラム１０７であると判定する。格納先パスで特定されるファイルが真正のダンプ生成プログラム１０７でない場合には、ダンプ生成プログラム１０７のロードは行われない。従って、端子Ａを介して図１２に示したＳ１２０１の処理に移る。
【００３９】
一方、格納先パスで特定されるファイルが真正のダンプ生成プログラム１０７であると判定した場合には、ＯＳ１０５とダンプ生成プログラム１０７とがメインメモリ２０３に納まるか否かを判定する。
【００４０】
そのため、ロード部は、まずダンプ生成プログラム１０７の大きさを特定する（Ｓ１１１１）。更に、ロード部は、ＯＳ１０５の大きさを特定する（Ｓ１１１３）。また、ロード部は、メモリの空き領域サイズを特定する（Ｓ１１１５）。
【００４１】
そして、ロード部は、メモリの空き領域サイズが、ダンプ生成プログラム１０７の大きさとＯＳ１０５の大きさとの合計以上であるか否かを判定する（Ｓ１１１７）。メモリの空き領域サイズが、ダンプ生成プログラム１０７の大きさとＯＳ１０５の大きさとの合計を下回る場合には、ダンプ生成プログラム１０７のロードは行われない。従って、端子Ａを介して図１２に示したＳ１２０１の処理に移る。
【００４２】
一方、メモリの空き領域サイズが、ダンプ生成プログラム１０７の大きさとＯＳ１０５の大きさとの合計以上であると判定した場合には、ダンプ生成プログラム１０７のロードが行われる。従って、端子Ｂを介して図１３に示したＳ１３０１の処理に移る。
【００４３】
次に、図１２を用いて、ダンプ生成プログラム１０７のロードを行わない場合の処理について説明する。呼び出し部は、メインメモリ２０３にＯＳ１０５の大きさに相当する領域を確保して、ハードディスクドライブ２０１に格納されているＯＳ１０５を当該領域にロードする（Ｓ１２０１）。そして、呼び出し部は、ロードしたＯＳ１０５を起動する（Ｓ１２０３）。
【００４４】
そして、引渡部は、ＯＳ１０５にメモリマップを渡す（Ｓ１２０５）。尚、このときダンプ生成プログラム１０７はロードされていないので、メモリマップにダンプ生成プログラム１０７のロード位置は含まれていない。そして、ブートローダ１０３の処理を終える。
【００４５】
次に、図１３を用いて、ダンプ生成プログラム１０７のロードを行う場合の処理について説明する。ロード部は、メインメモリ２０３にダンプ生成プログラム１０７の大きさに相当する領域を確保して、ハードディスクドライブ２０１に格納されているダンプ生成プログラム１０７を当該領域にロードする（Ｓ１３０１）。
【００４６】
次に、呼び出し部は、メインメモリ２０３にＯＳ１０５の大きさに相当する領域を確保して、ハードディスクドライブ２０１に格納されているＯＳ１０５を当該領域にロードする（Ｓ１３０３）。そして、呼び出し部は、ロードしたＯＳ１０５を起動する（Ｓ１３０５）。
【００４７】
引渡部は、メモリマップにダンプ生成プログラム１０７のロード位置を加えて（Ｓ１３０７）、ＯＳ１０５に当該メモリマップを渡す（Ｓ１３０９）。そして、ブートローダ１０３の処理を終える。
【００４８】
続いて、ＯＳ１０５の動作について説明する。図１４に、ＯＳ１０５のモジュール構成例を示す。ＯＳ１０５は、受入モジュール１４０１、設定モジュール１４０３、起動モジュール１４０５、割込みハンドラ１４１１及びパラメータ領域１４１３を有している。起動モジュール１４０５は、作成モジュール１４０７及びエラー対応モジュール１４０９を含んでいる。受入モジュール１４０１、設定モジュール１４０３、起動モジュール１４０５、作成モジュール１４０７、エラー対応モジュール１４０９及び割込みハンドラ１４１１は、いずれもソフトウエアモジュールである。
【００４９】
受入モジュール１４０１は、ブートローダ１０３からメモリマップを受け入れる処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる受入モジュール１４０１とによって、機能要素である受入部が実現される。
【００５０】
設定モジュール１４０３は、ダンプ生成プログラム１０７のロード位置をパラメータ領域１４１３に設定する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる設定モジュール１４０３とによって、機能要素である設定部が実現される。
【００５１】
起動モジュール１４０５は、ＯＳ１０５の起動処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる起動モジュール１４０５とによって、機能要素である起動部が実現される。
【００５２】
作成モジュール１４０７は、ダンプ生成プログラム１０７を作成する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる作成モジュール１４０７とによって、機能要素である作成部が実現される。
【００５３】
エラー対応モジュール１４０９は、ＯＳ１０５におけるエラー対応としてダンプ生成プログラム１０７を起動する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させるエラー対応モジュール１４０９とによって、機能要素であるエラー対応部が実現される。
【００５４】
割込みハンドラ１４１１は、割込みのイベントに応じてダンプ生成プログラム１０７を起動する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させる割込みハンドラ１４１１とによって、機能要素である割込み処理部が実現される。尚、ここでは、例えばキー押下、マウスクリックや画面タッチなどのような外部割込みを想定するが、内部割込みに対応するようにしてもよい。
【００５５】
パラメータ領域１４１３は、ダンプ生成プログラム１０７のロード位置、つまりメインメモリ２０３におけるダンプ生成プログラム１０７の先頭アドレスを記憶するために用いられる。
【００５６】
図１５に、ＯＳ１０５の処理フローを示す。受入部は、ブートローダ１０３からメモリマップを受け入れる（Ｓ１５０１）。受入部は、当該メモリマップにダンプ生成プログラム１０７のロード位置が含まれるか否かを判定する（Ｓ１５０３）。当該メモリマップにダンプ生成プログラム１０７のロード位置が含まれていないと判定した場合には、Ｓ１５０７の処理に移る。
【００５７】
一方、当該メモリマップにダンプ生成プログラム１０７のロード位置が含まれていると判定した場合には、設定部は、ダンプ生成プログラム１０７のロード位置をパラメータ領域１４１３に設定する（Ｓ１５０５）。Ｓ１５０１乃至Ｓ１５０５の処理が、図６のＳ６３１に示した前処理に相当する。
【００５８】
そして、起動部は、ＯＳ１０５の起動処理を実行する（Ｓ１５０７）。起動処理を終えると、ＯＳ１０５が常駐処理を行う準備が整う。
【００５９】
尚、ＯＳ１０５の起動処理は、上述したようにダンプ生成プログラム１０７を作成する処理（以下、作成処理という。）を含む。図１６に、作成処理フローを示す。
【００６０】
作成部は、格納先パスにダンプ生成プログラム１０７が存在するか否かを判定する（Ｓ１６０１）。格納先パスにダンプ生成プログラム１０７が存在すると判定した場合には、作成処理を終える。
【００６１】
一方、格納先パスにダンプ生成プログラム１０７が存在していないと判定した場合には、作成部は、ダンプ生成プログラム１０７を作成する（Ｓ１６０３）。ダンプ生成プログラム１０７を作成する方法は、従来技術と同様である。作成部は、格納先パスにダンプ生成プログラム１０７を格納する（Ｓ１６０５）。
【００６２】
作成部は、ファイルシステムにおける所定の格納位置にパスファイル７０１を作成する（Ｓ１６０７）。作成部は、パスファイル７０１にダンプ生成プログラム１０７の格納先パスを格納する（Ｓ１６０９）。そして、作成処理を終える。
【００６３】
また、上述したＯＳ１０５の起動処理は、割込みハンドラ１４１１を所定の割込みイベントに対応付ける設定処理を含む。当該設定処理が実行されると、所定の割込みイベントが発生したタイミングで、割込みハンドラ１４１１が起動されるようになる。
【００６４】
次に、当該処理で設定される割込みハンドラ１４１１の処理について説明する。図１７に、割込みハンドラ１４１１の処理フローを示す。
【００６５】
割込み処理部は、パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されているか否かを判定する（Ｓ１７０１）。具体的には、割込み処理部は、例えばパラメータ領域１４１３に未設定の旨のコードが設定されている場合に、ダンプ生成プログラム１０７のロード位置が設定されていないと判定する。
【００６６】
パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されていないと判定した場合には、そのまま割込みハンドラ１４１１の処理を終える。
【００６７】
一方、パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されていると判定した場合には、割込み処理部は、ダンプ生成プログラム１０７を起動する（Ｓ１７０３）。具体的には、割込み処理部は、メインメモリ２０３における当該ロード位置にジャンプしてプロセッサにダンプ生成プログラム１０７の命令を実行させる。そして、割込みハンドラ１４１１の処理を終える。
【００６８】
また、上述したＯＳ１０５の起動処理は、エラー発生の検出処理とエラー対応処理とを含む。エラー発生の検出処理では、例えば想定外の状態となった場合や整合しない事態に至った場合にエラーの発生を検出する。そして、エラーの発生を検出した場合に、エラー対応処理が実行される。図１８に、エラー対応処理フローを示す。
【００６９】
エラー対応部は、パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されているか否かを判定する（Ｓ１８０１）。具体的には、割込み処理部は、例えばパラメータ領域１４１３に未設定の旨のコードが設定されている場合に、ダンプ生成プログラム１０７のロード位置が設定されていないと判定する。
【００７０】
パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されていないと判定した場合には、そのままエラー対応処理を終える。
【００７１】
一方、パラメータ領域１４１３にダンプ生成プログラム１０７のロード位置が設定されていると判定した場合には、エラー対応部は、ダンプ生成プログラム１０７を起動する（Ｓ１８０３）。具体的には、エラー対応部は、メインメモリ２０３における当該ロード位置にジャンプしてプロセッサにダンプ生成プログラム１０７の命令を実行させる。そして、エラー対応処理を終える。
【００７２】
最後に、ダンプ生成プログラム１０７について説明する。ダンプ生成プログラム１０７は、メインメモリ２０３の内容を記録したダンプファイルを生成する処理を含む。ハードウエア資源（例えば、図２０）と当該ハードウエア資源におけるプロセッサに後述する処理を実行させるダンプ生成プログラム１０７とによって、機能要素であるダンプ生成部が実現される。
【００７３】
図１９に、ダンプ生成プログラム１０７の処理フローを示す。ダンプ生成部は、所定の格納位置に新規のダンプファイルを開く（Ｓ１９０１）。そして、ダンプ生成部は、メインメモリ２０３のブロックを順次１つ特定する（Ｓ１９０３）。
【００７４】
ダンプ生成部は、メインメモリ２０３から当該ブロックのデータを読み（Ｓ１９０５）、読んだブロックのデータを順次ダンプファイルに書き込む（Ｓ１９０７）。
【００７５】
そして、ダンプ生成部は、最終ブロックに至ったか否かを判定する（Ｓ１９０９）。最終ブロックに至っていないと判定した場合には、Ｓ１９０３に示した処理に戻って、上述した処理を繰り返す。
【００７６】
一方、最終ブロックに至ったと判定した場合には、ダンプ生成部は、ダンプファイルを閉じる（Ｓ１９１１）。そして、ダンプ生成プログラム１０７の処理を終える。
【００７７】
以上の例では、ブートローダ１０３が、メモリマップを用いてダンプ生成プログラム１０７のロード位置をＯＳ１０５へ引き渡すようにしたが、ブートローダ１０３が、起動パラメータによって当該ロード位置をＯＳ１０５へ引き渡すようにしてもよい。
【００７８】
本実施の形態によれば、ＯＳ１０５の起動処理の早期においてメモリダンプ処理を行えるようになる。
【００７９】
また、パスファイルを設けるので、ＯＳ１０５で作成されたダンプ生成プログラム１０７を、ブートローダ１０３において特定できる。
【００８０】
また、割込み処理においてダンプ生成プログラム１０７を起動するので、任意のタイミングにおけるメモリダンプを行うことができる。
【００８１】
また、エラー対応としてダンプ生成プログラム１０７を起動するので、エラー解析に用いるデータを確保し易い。
【００８２】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【００８３】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【００８４】
なお、上で述べたコンピュータは、図２０に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスクドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティングシステム（ＯＳ）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエア資源とＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８５】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【００８６】
本実施の形態に係るコンピュータ起動方法は、（Ａ）ブートローダの処理において、メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡し、（Ｂ）オペレーティングシステムの起動処理中のいずれかのタイミングにおいて、上記ロード位置に基づいて上記プログラムを起動する処理を含む。
【００８７】
このようにすれば、オペレーティングシステムの起動処理の早期においてメモリダンプ処理を行えるようになる。具体的には、ファイルシステムの準備が完了する前であっても、メモリダンプ処理を行えるようになる。
【００８８】
更に、コンピュータ起動方法は、オペレーティングシステムの起動処理において、上記プログラムを作成し、作成した上記プログラムの格納位置を不揮発性の記憶媒体に書き込む処理を含むようにしてもよい。また、コンピュータ起動方法は、ブートローダの処理において、上記記憶媒体から上記プログラムの格納位置を読み取る処理を含むようにしてもよい。
【００８９】
このようにすれば、オペレーティングシステムで作成されたプログラムを、ブートローダにおいて特定できる。尚、ハードディスクドライブ２０１は、不揮発性の記憶媒体の例である。
【００９０】
更に、上記タイミングは、割込みイベントが発生した時点であってもよい。
【００９１】
このようにすれば、任意のタイミングにおけるメモリダンプを得ることができる。
【００９２】
更に、上記タイミングは、エラーを検出した時点であってもよい。
【００９３】
このようにすれば、エラー解析に用いるデータを確保し易い。
【００９４】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【００９５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９６】
（付記１）
ブートローダの処理において、メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡し、
前記オペレーティングシステムの起動処理中のいずれかのタイミングにおいて、前記ロード位置に基づいて前記プログラムを起動する
処理を含み、コンピュータにより実行されるコンピュータ起動方法。
【００９７】
（付記２）
更に、
前記オペレーティングシステムの前記起動処理において、前記プログラムを作成し、作成した前記プログラムの格納位置を不揮発性の記憶媒体に書き込み、
前記ブートローダの処理において、前記記憶媒体から前記プログラムの前記格納位置を読み取る
処理を含む付記１記載のコンピュータ起動方法。
【００９８】
（付記３）
前記タイミングは、割込みイベントが発生した時点である
付記１又は２記載のコンピュータ起動方法。
【００９９】
（付記４）
前記タイミングは、エラーを検出した時点である
付記１又は２記載のコンピュータ起動方法。
【０１００】
（付記５）
メモリダンプ処理を行うプログラムをメモリにロードし、当該プログラムのロード位置をオペレーティングシステムに引き渡す処理を含むブートローダと、
自らの起動処理中のいずれかのタイミングにおいて、前記ロード位置に基づいて前記プログラムを起動する処理を含む前記オペレーティングシステムと
を記憶する媒体を有するコンピュータ。
【符号の説明】
【０１０１】
１０１  ＢＩＯＳ
１０３  ブートローダ
１０５  ＯＳ
１０７  ダンプ生成プログラム
２０１  ハードディスクドライブ
２０３  メインメモリ
７０１  パスファイル
１００１  取得モジュール
１００３  ロードモジュール
１００５  呼び出しモジュール
１００７  引渡モジュール
１４０１  受入モジュール
１４０３  設定モジュール
１４０５  起動モジュール
１４０７  作成モジュール
１４０９  エラー対応モジュール
１４１１  割込みハンドラ
１４１３  パラメータ領域
【図１】
2019032610.tif 000003
【図２】
2019032610.tif 000004
【図３】
2019032610.tif 000005
【図４】
2019032610.tif 000006
【図５】
2019032610.tif 000007
【図６】
2019032610.tif 000008
【図７】
2019032610.tif 000009
【図８】
2019032610.tif 000010
【図９】
2019032610.tif 000011
【図１０】
2019032610.tif 000012
【図１１】
2019032610.tif 000013
【図１２】
2019032610.tif 000014
【図１３】
2019032610.tif 000015
【図１４】
2019032610.tif 000016
【図１５】
2019032610.tif 000017
【図１６】
2019032610.tif 000018
【図１７】
2019032610.tif 000019
【図１８】
2019032610.tif 000020
【図１９】
2019032610.tif 000021
【図２０】
2019032610.tif 000022