(57)【要約】【課題】ＢＩＯＳにハードウェアエラーが発生した場合、コンピュータを終了させず、ＢＩＯＳの処理を続けることができる情報処理装置、情報処理方法及びプログラムを提供する。【解決手段】本発明の第１の態様によれば、情報処理装置は、第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製部と、前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御部と、を備える。【選択図】図１
2019149127.tif 000002
【特許請求の範囲】
【請求項１】
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製部と、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御部と、
を備える情報処理装置。
【請求項２】
前記ＢＩＯＳ制御部は、前記第二処理が完了した場合、前記第二処理を停止させ、前記第一処理の次の処理から前記第一ＢＩＯＳを再開させる
請求項１に記載の情報処理装置。
【請求項３】
ＯＳと、前記第一ＢＩＯＳと、第二ＢＩＯＳと、のデータ及びアドレスの内少なくとも一つを制御するメモリ制御部
を備える請求項１又は２に記載の情報処理装置。
【請求項４】
前記メモリ制御部は、前記第二ＢＩＯＳのデータと、前記第二ＢＩＯＳのアドレスの内、少なくとも一つを、ＯＳが参照できるようにする
請求項３に記載の情報処理装置。
【請求項５】
前記メモリ制御部は、前記第二ＢＩＯＳのデータ及びアドレスの内、少なくとも一つを、ランタイムサービスが参照できるようにする
請求項３又は４のいずれか一項に記載の情報処理装置。
【請求項６】
前記メモリ制御部は、前記エラーが発生した前記第一ＢＩＯＳのアドレスと、前記第二ＢＩＯＳのアドレスと、を書き換える
請求項３から５のいずれか一項に記載の情報処理装置。
【請求項７】
前記第一ＢＩＯＳの処理において前記エラーが起きたか否か判定する例外判定部
を備える請求項１から６のいずれか一項に記載の情報処理装置。
【請求項８】
前記例外判定部の判定結果に基づいて、前記エラーが起きたと判定された場合、コンピュータを動かすために必要な最小限の所定の動作を行うランタイムサービスを持つ、
請求項７に記載の情報処理装置。
【請求項９】
１又は複数のコンピュータが、
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御ステップと、
を有する情報処理方法。
【請求項１０】
１又は複数のコンピュータに、
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
コンピュータなどの情報機器では、起動の際、ＢＩＯＳ（Basic Input / Output System）と呼ばれるファームウェアが用いられている。ＢＩＯＳは、ＲＯＭ（Read Only Memory）などの不揮発メモリに組み込まれているプログラムである。不揮発メモリは、電源を供給しなくても記憶を保持できるメモリの総称である。また、ＢＩＯＳは、ハードウェアの差異を吸収するためにＯＳ（Operating System）にランタイムサービスを提供する。
【０００３】
ランタイムサービスとは、ＢＩＯＳがハードウェアの差異を吸収するために抽象化した関数であり、ＯＳやＯＳ上のプログラムが利用するサービスである。ランタイムサービスは、時刻の読み書きや不揮発メモリの読み書き、ハードウェアのログ読み出し（障害監視）などを行う。
【０００４】
コンピュータを起動させると、ＢＩＯＳは、最初に、ＣＰＵ（Central Processing Unit）内部のキャッシュやレジスタなどの初期化を行う。次に、ＢＩＯＳは、マザーボード上の各種コントローラにアクセスし、ＰＯＳＴ（Power On Self Test）を行う。ＰＯＳＴとは、周辺機器の検出、初期化及び設定を行う処理である。ＰＯＳＴが終了した後、ＢＩＯＳは、予め定められた優先順位に従って、ＯＳが記録されているストレージから、そのストレージの先頭セクタにあるＯＳローダをロードする。ＯＳローダとは、ＯＳを検出し起動するプログラムのことを表す。
【０００５】
ＢＩＯＳの処理を経てコンピュータは起動するため、ＢＩＯＳにおいてエラーが発生すると、コンピュータは、起動することができず、終了する。ＢＩＯＳにおいて発生するエラーは、未定義命令例外やアクセス例外などのソフトウェアエラーと、アンコレクタブルエラーやＭＣＥ（Machine Check Exception）などのハードウェアエラーと、が存在する。
【０００６】
ソフトウェアエラーの対策として、ＯＳの起動時に割り込みが発生した場合、割り込み発生時の情報を、トレーサ情報（採取情報）として、ベクタ番号や割り込みハンドラなどを保存する手法が文献１で開示されている。文献１では、ＢＩＯＳが壊れた場合、トレーサ情報を記憶装置に書き出す、もしくは、メモリ上にキャッシュすることで、システムを維持する手法が開示されている。
【０００７】
また、ソフトウェアエラーの対策として、ＢＩＯＳになんらかのエラーが発生した場合、記憶デバイス中に保存されたバックアップＢＩＯＳと比較する手法が文献２で開示されている。文献２では、初めに、ＢＩＯＳをバックアップする。文献２では、使用中のＢＩＯＳが壊れた場合、バックアップしたＢＩＯＳを用いることでシステムを維持する手法が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−１８４２０４号公報
【特許文献２】特開２００４−３０２９９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上より、上記文献１及び２では、ＢＩＯＳにソフトウェアエラーが発生した場合、ＢＩＯＳのバックアップデータを用いて、ＢＩＯＳを再度コンピュータ内で書き換えることでソフトウェアエラーの復旧を試みている。しかしながら、ハードウェアエラーが発生した場合、上記の方法ではコンピュータが終了してしまい復旧できないという問題があった。
【００１０】
そこで本発明は、上述の課題を解決する情報処理装置、情報処理方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１１】
本発明の第１の態様によれば、情報処理装置は、第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製部と、前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御部と、を備える。
【００１２】
本発明の第２の態様によれば、情報処理方法は、１又は複数のコンピュータが、第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御ステップと、を有する。
【００１３】
本発明の第３の態様によれば、プログラムは、１又は複数のコンピュータに、第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御ステップと、を実行させる。
【発明の効果】
【００１４】
上記態様のうち少なくとも１つの態様によれば、コンピュータは、正常に動作する第一ＢＩＯＳを予備メモリに第二ＢＩＯＳとして複製する。第一ＢＩＯＳの処理中にエラーが起きた場合、ＯＳは、エラーが発生した第一ＢＩＯＳのアドレスを第二ＢＩＯＳのアドレスと書き換えて実行する。これにより、第一ＢＩＯＳの処理中にエラーが起きてシステムが動作しなくなった場合でも、コンピュータを終了させることなく、ＢＩＯＳの処理を継続できるという効果が得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係る情報処理装置１のハードウェア構成を示す概略ブロック図である。
【図２】本発明の一実施形態に係るＣＰＵ１００のソフトウェア構成を示す概略ブロック図である。
【図３】本発明の一実施形態に係る共有メモリ４２０が記憶する、サービス判別テーブルの一例を示すデータテーブルである。
【図４】本発明の一実施形態に係る割り込みベクタテーブルの一例を示すデータテーブルである。
【図５】本発明の一実施形態に係るＢＩＯＳエラーの発生時の処理の流れを示すフローチャートである。
【図６】本発明の一実施形態に係るハードウェアエラーの発生時の処理の流れを示すフローチャートである。
【図７】本発明の一実施形態に係るソフトウェアエラーの発生時の処理の流れを示すフローチャートである。
【図８】本発明の一実施形態に係るフラグ確認の処理の流れを示すフローチャートである。
【図９】本実施形態による情報処理装置１の最少構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照して説明する。
【００１７】
図１は本発明の一実施形態に係る情報処理装置１のハードウェア構成を示す概略ブロック図である。
情報処理装置１は、ＣＰＵ１００と、メインメモリ２００と、不揮発メモリ３００と、ストレージ４００と、インタフェース５００と、を備える。
【００１８】
ＣＰＵ１００は、プログラムを不揮発メモリ３００またはストレージ４００から読み出してメインメモリ２００に展開し、当該プログラムに従って処理を実行する。
メインメモリ２００は、ＲＡＭ（Random Access Memory）などの揮発性のメモリである。
不揮発メモリ３００は、ＢＩＯＳ３１０及び予備メモリ３２０を記憶する。不揮発メモリ３００の例としては、ＲＯＭ（Read Only Memory）やフラッシュメモリなどが挙げられる。
【００１９】
ストレージ４００は、ＯＳ４１０と、共有メモリ４２０と、を記憶する。ストレージ４００の例としては、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）、半導体メモリ等が挙げられる。
また、ストレージ４００は、情報処理装置１のバスに直接接続された内部メディアであってもよいし、インタフェース５００または通信回線を介して情報処理装置１に接続される外部メディアであってもよい。
【００２０】
ＯＳ４１０は、入出力の制御、メモリやハードディスクなどのハードウェアの管理、プロセスの管理といった、コンピュータの基本的な管理・制御を行っている。
共有メモリ４２０は、ＢＩＯＳの各ハンドラ及び各ランタイムサービスから読み書きが可能なメモリ領域である。共有メモリ４２０は、ランタイムサービスの情報を有するデータテーブル（以下「サービス判別テーブル」という。）を記憶する。
【００２１】
なお、メインメモリ２００、不揮発メモリ３００及びストレージ４００は、記憶装置の一例である。
【００２２】
インタフェース５００は、外部装置と接続するときに用いられる。インタフェース５００の例としては、ＵＳＢ（Universal Serial Bus）、ＨＤＭＩ（High-Definition Multimedia Interface）（登録商標）、ＤＶＩ（Digital Visual Interface）、Ｂｌｕｅｔｏｏｔｈ（登録商標）などが挙げられる。
なお、インタフェース５００は、ハードウェアインタフェースであってもよいし、ソフトウェアインタフェースであってもよい。
【００２３】
図２は、本発明の一実施形態に係るＣＰＵ１００のソフトウェア構成を示す概略ブロック図である。
ＣＰＵ１００は、プログラムを実行することで、複製部１１０、例外判定部１２０、ＢＩＯＳ制御部１３０及びメモリ制御部１４０として機能する。
【００２４】
複製部１１０は、ＢＩＯＳ３１０のデータ及びコードを、予備メモリ３２０に領域を確保し、複製する。この時、複製元のＢＩＯＳ３１０を第一ＢＩＯＳ、予備メモリ３２０に複製されたＢＩＯＳを第二ＢＩＯＳとする。なお、複製部１１０は、第一ＢＩＯＳを複製する場合、予備メモリ３２０以外に、不揮発メモリ３００内で別領域を確保して第二ＢＩＯＳを複製してもよいし、メインメモリ２００やストレージ４００内に領域を確保して第二ＢＩＯＳを複製してもよい。また、第二ＢＩＯＳは複数複製されてもよい。なお、以下の実施形態では、情報処理装置１が行うＢＩＯＳの処理は、第一ＢＩＯＳを主として使用することとする。
【００２５】
例外判定部１２０は、第一ＢＩＯＳから、例外ハンドラ又はＭＣＥハンドラの割り込みが起きるか否か判定する。例外ハンドラは、ソフトウェアエラーが起きた場合、発生する割り込みハンドラである。ＭＣＥハンドラは、ハードウェアエラーが起きた場合、発生する割り込みハンドラである。割り込みが起きた場合、例外判定部１２０は、図３で後述するサービス判別テーブルに、フラグ項目及び各データ項目を登録する。本実施形態の図３の例では、例外判定部１２０は、ＯＮ状態のフラグ、例外箇所のデータ、例外箇所のコード、ランタイムサービス名及びハンドラ名を登録する。割り込みが起きていない場合、例外判定部１２０は、ランタイムサービステーブルの、フラグ項目をＯＦＦ状態として登録する。
【００２６】
図３は、本発明の一実施形態に係る共有メモリ４２０が記憶する、サービス判別テーブルの一例を示すデータテーブルである。
サービス判別テーブルは、フラグ、例外データ、例外コード、ランタイムサービス名及びハンドラ名を有する。
【００２７】
フラグは、第一ＢＩＯＳの第一処理においてエラーが起きたか否かを表す項目である。フラグがＯＮの状態は、第一ＢＩＯＳの第一処理でエラーが起きた状態を表し、フラグがＯＦＦの状態は、第一ＢＩＯＳの第一処理が継続可能な状態を表す。例外データは、例外処理が発生した第一処理のデータ内容を表す項目である。例外コードは、例外処理が発生した第一処理のプログラムを表す項目である。ランタイムサービス名は、例外処理で使用されたランタイムサービスの名前を表す項目である。ハンドラ名は、割り込みに使用された割り込みハンドラの名前を表す項目である。
【００２８】
図２の説明に戻る。ＢＩＯＳ制御部１３０は、例外判定部１２０の判定結果及びＯＳの命令に基づいて、第一ＢＩＯＳの第一処理及び第二ＢＩＯＳの第二処理を制御する。ＢＩＯＳ制御部１３０は、第一ＢＩＯＳの第一処理に例外が発生した場合、例外が発生した時点で第一処理を停止させる。
【００２９】
次にＢＩＯＳ制御部１３０は、ＯＳから処理の再開の命令を待つ。ＢＩＯＳ制御部１３０は、ＯＳから処理の再開命令を受け取った場合、第二ＢＩＯＳを用いて第一ＢＩＯＳの第一処理に該当する第二処理を行う。そして、ＢＩＯＳ制御部１３０は、第二処理が完了した第二ＢＩＯＳを停止させ、第一処理の次の処理を第一ＢＩＯＳで再開する。これにより、本実施形態では、第一ＢＩＯＳで例外処理が発生した場合、システムを終了させることなくＢＩＯＳの動作を継続することができる。
【００３０】
メモリ制御部１４０は、ＯＳと、第一ＢＩＯＳと、第二ＢＩＯＳと、のデータ及びアドレスの内少なくとも一つを制御する。メモリ制御部１４０は、前記第二ＢＩＯＳのデータと、第二ＢＩＯＳのアドレスの内、少なくとも一つを、ＯＳが参照できるようにする。メモリ制御部１４０は、第二ＢＩＯＳのデータ及びアドレスの内、少なくとも一つを、ランタイムサービスが参照できるようにする。メモリ制御部１４０は、エラーが発生した第一ＢＩＯＳのアドレスと、第二ＢＩＯＳのアドレスと、を書き換える。
【００３１】
具体的には、メモリ制御部１４０は、第二ＢＩＯＳのアドレスを、ＯＳが参照できるように、ポインタとしてＯＳに渡す。メモリ制御部１４０は、第一ＢＩＯＳでエラーが起きた場合、第一ＢＩＯＳのエラーが起きた第一処理のアドレスと、第一処理のアドレスに対応する第二ＢＩＯＳの第二処理のアドレスと、を書き換える。
【００３２】
なお、メモリ制御部１４０は、エラーが起きた第一処理のアドレスのみを第二処理として書き換えてもよいし、エラーが起きた第一処理以降の全ての処理のアドレスを第二処理として書き換えてもよい。
【００３３】
図４は、本発明の一実施形態に係る割り込みベクタテーブルの一例を示すデータテーブルである。
割り込みベクタテーブルとは、割り込みの要因ごとに割り込みハンドラに関する情報が予め登録されているデータテーブルである。割り込みハンドラとは、不正例外ハンドラやＭＣＥハンドラなどのハンドラの名称である。割り込みベクタテーブルは、ベクタアドレス、ベクタ番号、割り込みの要因、定義省略時の動作を有する。
【００３４】
ベクタアドレスは、割り込みハンドラの先頭アドレスを表す。ベクタ番号は、割り込みベクタのデータ項目に割り振られた任意の番号を表す。割り込みの要因は、どのような例外や割り込みがあったかの内容を表す。定義省略時の動作は、機能最小限モードの際に行う動作の内容を表す。サービス判別テーブルで登録された割り込みハンドラは、この割り込みベクタテーブルに設定される。
【００３５】
機能最小限モードは、例外を起こしたランタイムサービスがＯＳから呼ばれた場合、サービス判別テーブルのベクタ番号に基づいて、割り込みベクタテーブルの定義省略時の動作を返す。機能最小限モードは、ランタイムサービスが持つ動作モードの一つである。機能最小限モードになったランタイムサービスは、コンピュータを動かすために必要な最小限の所定の動作を行う。これにより、ソフトウェアエラーが発生した場合、ＢＩＯＳは、システムを終了することなく、適宜定められた動作を行うことができる。
【００３６】
図５は、本発明の一実施形態に係るＢＩＯＳエラーの発生時の処理の流れを示すフローチャートである。
複製部１１０は、予備メモリ３２０にＢＩＯＳ３１０の複製を行うための格納領域を確保する（ステップＳ１００）。複製部１１０は、不揮発メモリ３００に記憶されているＢＩＯＳ３１０を予備メモリ３２０に複製する（ステップＳ１０１）。また、複製部１１０は、不揮発メモリ３００のＢＩＯＳ３１０を第一ＢＩＯＳ、予備メモリ３２０に複製されたＢＩＯＳを第二ＢＩＯＳとし、ＯＳが扱うＢＩＯＳを第一ＢＩＯＳに設定する。
【００３７】
メモリ制御部１４０は、第二ＢＩＯＳのデータ及びコードを、ＯＳが参照できるようにする（ステップＳ１０２）。例外判定部１２０は、第一ＢＩＯＳから、例外ハンドラ又はＭＣＥハンドラによる割り込み、つまり例外処理のエラーが起きるか否か判定する（ステップＳ１０３）。
【００３８】
エラーが起きた場合（ステップＳ１０３：ＹＥＳ）、ＢＩＯＳ制御部１３０は、例外判定部１２０の判定結果に基づいて、第一ＢＩＯＳの第一処理を、エラーが発生した時点で停止させる（ステップＳ１０４）。エラーが起きていない場合（ステップＳ１０３：ＮＯ）、情報処理装置１は、エラーが起きるまでステップＳ１０３を繰り返す。
【００３９】
メモリ制御部１４０は、第一ＢＩＯＳのエラーが起きた第一処理のアドレスと、第二ＢＩＯＳの第二処理のアドレスと、を書き換える（ステップＳ１０５）。
【００４０】
ＢＩＯＳ制御部１３０は、第一処理を停止させたまま第二ＢＩＯＳを用いて第二処理を行う（ステップＳ１０６）。ＢＩＯＳ制御部１３０は、第二ＢＩＯＳの第二処理を停止させる（ステップ１０７）。そして、ＢＩＯＳ制御部１３０は、第二処理の続きを第一ＢＩＯＳの第一処理で再開する（ステップＳ１０８）。
【００４１】
図６は、本発明の一実施形態に係るハードウェアエラーの発生時の処理の流れを示すフローチャートである。
例外判定部１２０は、第一ＢＩＯＳで生じた例外において、ハンドラの種類からＭＣＥハンドラの割り込みが起きるか否か、つまりハードウェアエラーが起きるか否か判定する（ステップＳ２００）。
【００４２】
ハードウェアエラーが起きた場合（ステップＳ２００：ＹＥＳ）、ＭＣＥハンドラは、ハードウェアエラーが起きた際に使用されたランタイムサービスを特定する（ステップＳ２０１）。
ハードウェアエラーが起きていない場合（ステップＳ２００：ＮＯ）、情報処理装置１は、ハードウェアエラーが起きるまでステップＳ２００を繰り返す。
【００４３】
例外判定部１２０は、フラグやＭＣＥハンドラが特定したランタイムサービスの名前などのエラー内容の情報をサービス判別テーブルに登録する（ステップＳ２０２）。また、例外判定部１２０は、サービス判別テーブルのフラグ項目をＯＮ状態で登録する。
【００４４】
メモリ制御部１４０は、ランタイムサービスに、ＯＳが参照する第二ＢＩＯＳのポインタを渡す（ステップＳ２０３）。ＭＣＥハンドラは、ランタイムサービスが参照可能な第二ＢＩＯＳのポインタを参照し、ランタイムサービスからＯＳへ処理を移行させる（ステップＳ２０４）。
【００４５】
ＯＳは、第一ＢＩＯＳの第一処理のアドレスと、第二ＢＩＯＳの第二処理のアドレスとを書き換える。次に、ＯＳは、ＢＩＯＳ制御部１３０に処理の再開命令を送る。ＢＩＯＳ制御部１３０は、ＯＳからの再開命令を受け取った場合、第二ＢＩＯＳを用いて第二処理を行う（ステップＳ２０５）。そして、ＢＩＯＳ制御部１３０は、第二ＢＩＯＳが第二処理を完了した場合、第一ＢＩＯＳの第一処理の次の処理から再開する。
【００４６】
図７は、本発明の一実施形態に係るソフトウェアエラーの発生時の処理の流れを示すフローチャートである。
例外判定部１２０は、第一ＢＩＯＳで生じた例外において、ハンドラの種類から例外ハンドラの割り込みが起きるか否か、つまりソフトウェアエラーが起きるか否か判定する（ステップＳ３００）。
【００４７】
ソフトウェアエラーが起きた場合（ステップＳ３００：ＹＥＳ）、例外ハンドラは、例外時に使用されたランタイムサービスを特定する（ステップＳ３０１）。
ソフトウェアエラーが起きていない場合（ステップＳ３００：ＮＯ）、情報処理装置１は、ソフトウェアエラーが起きるまでステップＳ３００を繰り返す。
【００４８】
例外判定部１２０は、フラグや例外ハンドラが特定したランタイムサービスの名前などの例外内容の情報をサービス判別テーブルに登録する（ステップＳ３０２）。また、例外判定部１２０は、サービス判別テーブルのフラグ項目をＯＮ状態で登録する。
【００４９】
メモリ制御部１４０は、ランタイムサービスに、ＯＳが参照する第二ＢＩＯＳのポインタを渡す（ステップＳ３０３）。例外ハンドラは、ランタイムサービスが参照可能な第二ＢＩＯＳのポインタを参照し、ランタイムサービスからＯＳへ処理を移行する（ステップＳ３０４）。
【００５０】
不正例外が発生する場合は、ソフトウェアのバグが発生しているため、ランタイムサービスは、自身のモードを機能最小限モードに変更する（ステップＳ３０５）。
【００５１】
[変形例]
図８は、本発明の変形例に係るフラグ確認の処理の流れを示すフローチャートである。
ランタイムサービスは、サービス判別テーブルを参照する特性を持つ（ステップＳ４０１）。ランタイムサービスは、サービス判別テーブルの中から、エラーが発生した時に登録されるフラグを参照する（ステップＳ４０２）。
【００５２】
フラグがＯＮ状態の場合（ステップＳ４０１：ＹＥＳ）、ソフトウェアエラーかハードウェアエラーかを判定する（ステップＳ４０２）。フラグがＯＦＦ状態の場合（ステップＳ４０２：ＮＯ）、処理を終了する。
【００５３】
ソフトウェアエラーの場合（ステップＳ４０２：ＹＥＳ）、サービス判別テーブルの中から、ベクタ番号を参照し、割り込みベクタテーブルから当該番号に対応付いた定義省略時の動作を機能最小限モードとして行う（ステップＳ４０３）。
【００５４】
ハードウェアエラーの場合（ステップＳ４０２：ＮＯ）、割込みハンドラはＭＣＥ  ＳＲＡＲが発生していることを特定する（ステップＳ４０４）。ＢＩＯＳ制御部１３０は、ＯＳからの再開命令を受け取った場合、第二ＢＩＯＳを用いて第二処理を行う（ステップＳ４０５）。割り込みハンドラは、ハンドラが参照するポインタをＯＳが参照するポインタに変更し、処理を終了する（ステップＳ４０６）。
【００５５】
図９は、本実施形態による情報処理装置１の最小構成を示す図である。
本実施形態による情報処理装置１は少なくとも複製部１１０及びＢＩＯＳ制御部１３０を備えればよい。
【００５６】
複製部１１０は、ＢＩＯＳ３１０のデータ及びコードを、予備メモリ３２０に領域を確保し、複製する。この時、複製元のＢＩＯＳ３１０を第一ＢＩＯＳ、予備メモリ３２０に複製されたＢＩＯＳを第二ＢＩＯＳとする。
【００５７】
ＢＩＯＳ制御部１３０は、第一ＢＩＯＳの第一処理及び第二ＢＩＯＳの第二処理を制御する。ＢＩＯＳ制御部１３０は、第一ＢＩＯＳの第一処理にエラーが発生した場合、例外が発生した時点で第一処理を停止させる。
【００５８】
次にＢＩＯＳ制御部１３０は、ＯＳから処理の再開の命令を待つ。ＢＩＯＳ制御部１３０は、ＯＳから処理の再開命令を受け取った場合、第二ＢＩＯＳを用いて第一ＢＩＯＳの第一処理に該当する第二処理を行う。そして、ＢＩＯＳ制御部１３０は、第二処理が完了した第二ＢＩＯＳを停止させ、第一処理の次の処理を第一ＢＩＯＳで再開する。これにより、本実施形態では、第一ＢＩＯＳで例外処理が発生した場合、システムを終了させることなくＢＩＯＳの動作を継続することができる。
【００５９】
以上より、本実施形態では、複製部１１０、ＢＩＯＳ制御部１３０を持つことにより、ハードウェアの影響でアンコレクタブルエラーなどが発生しＢＩＯＳが壊れた場合と、ソフトウェアのバグの影響でＢＩＯＳが壊れた場合と、の両方の場合において、システムを終了させず、ＯＳの処理を継続させることができる。
【００６０】
上述の情報処理装置は内部に、コンピュータシステムを有している。そして、上述したＢＩＯＳで例外が起きた場合に、ＯＳの処理を継続する過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００６１】
なお、図１における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、ＢＩＯＳの例外時にＯＳの処理を継続させてもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００６２】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００６３】
《付記》
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００６４】
（付記１）
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製部と、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳの第一処理を停止させ、前記第二ＢＩＯＳを用いて前記エラーの第二処理を行うＢＩＯＳ制御部と、
を備える情報処理装置。
【００６５】
（付記２）
前記ＢＩＯＳ制御部は、前記第二処理が完了した場合、前記第二処理を停止させ、前記第一処理の次の処理から前記第一ＢＩＯＳを再開させる
付記１に記載の情報処理装置。
【００６６】
（付記３）
ＯＳと、前記第一ＢＩＯＳと、第二ＢＩＯＳと、のデータ及びアドレスの内少なくとも一つを制御するメモリ制御部
を備える付記１又は２に記載の情報処理装置。
【００６７】
（付記４）
前記メモリ制御部は、前記第二ＢＩＯＳのデータと、前記第二ＢＩＯＳのアドレスの内、少なくとも一つを、ＯＳが参照できるようにする
付記３に記載の情報処理装置。
【００６８】
（付記５）
前記メモリ制御部は、前記第二ＢＩＯＳのデータ及びアドレスの内、少なくとも一つを、ランタイムサービスが参照できるようにする
付記３又は４のいずれか一項に記載の情報処理装置。
【００６９】
（付記６）
前記メモリ制御部は、前記エラーが発生した前記第一ＢＩＯＳのアドレスと、当該の前記第二ＢＩＯＳのアドレスと、を書き換える
付記３から５のいずれか一項に記載の情報処理装置。
【００７０】
（付記７）
前記第一ＢＩＯＳの処理において前記エラーが起きたか否か判定する例外判定部
を備える付記１から６に記載の情報処理装置。
【００７１】
（付記８）
前記例外判定部の判定結果に基づいて、前記エラーが起きたと判定された場合、コンピュータを動かすために必要な最小限の所定の動作を行うランタイムサービスを持つ、
付記７に記載の情報処理装置。
【００７２】
（付記９）
１又は複数のコンピュータが、
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳを第一停止箇所で停止させ、前記第二ＢＩＯＳを用いて前記エラーの処理を行うＢＩＯＳ制御ステップと、
を有する情報処理方法。
【００７３】
（付記１０）
１又は複数のコンピュータに、
第一ＢＩＯＳを不揮発メモリ内の前記第一ＢＩＯＳが予め格納されているメモリとは異なるメモリである予備メモリに第二ＢＩＯＳとして複製する複製ステップと、
前記第一ＢＩＯＳの処理においてエラーが起きた場合、前記第一ＢＩＯＳを第一停止箇所で停止させ、前記第二ＢＩＯＳを用いて前記エラーの処理を行うＢＩＯＳ制御ステップと、
を実行させるためのプログラム。
【符号の説明】
【００７４】
１・・・情報処理装置
１００・・・ＣＰＵ
１１０・・・複製部
１２０・・・例外判定部
１３０・・・ＢＩＯＳ制御部
１４０・・・メモリ制御部
２００・・・メインメモリ
３００・・・不揮発メモリ
３１０・・・ＢＩＯＳ
３２０・・・予備メモリ
４００・・・ストレージ
４１０・・・ＯＳ
４２０・・・共有メモリ
５００・・・インタフェース
【図１】
2019149127.tif 000003
【図２】
2019149127.tif 000004
【図３】
2019149127.tif 000005
【図４】
2019149127.tif 000006
【図５】
2019149127.tif 000007
【図６】
2019149127.tif 000008
【図７】
2019149127.tif 000009
【図８】
2019149127.tif 000010
【図９】
2019149127.tif 000011